マルチセレクトリストクラス

ユーザーコントロールクラスライブラリ

作成日:1999/10/07
更新日:1999/12/26

マルチセレクトリストクラスについて  ダウンロード
仕様  使用方法
制限事項  著作権・転載条件など


◆マルチセレクトリストクラスについて
 ・マルチセレクトリストクラスは,スクロールバー付きリストクラスと組
  み合わせて使用することで,任意の複数行を選択可能にするユーザーコ
  ントロールクラスライブラリです。
 ・リスト行のタッチにより選択/非選択状態が切り替わります。
◆動作環境
 ・シャープザウルスシリーズ
 ・動作確認機種:MI-310
◆更新履歴
 1999/10/06 Ver0.80
       ・基本的な機能作成完了。公開開始。
 1999/10/14 Ver1.00
       ・ほとんどのプロパティをサポート。
       ・ソースコードの公開開始。
 1999/11/02 Ver1.02
       ・選択色を間違っていたバグを修正。
       ・選択処理が正しく行われないバグを修正。
 1999/12/26 Ver1.03
       ・ToolCloseIDメッセージ処理時にマルチセレクトリストリス
        ト領域を解放後、NULLを返していないバグを修正。
        (ToolOpenID, ToolCloseIDを繰り返すと異常終了する。)

◆ダウンロード
 ライブラリ+ヘッダファイル+説明書
  MSELList.lzh
 ソースファイル+ヘッダファイル
  MSELList-src.lzh

◆仕様
 @プロパティ名
プロパティ名 RW 概要
VALUE_PID int RW 対象となるリストクラス
設定するリストクラスは,予めフォームエディタで作成しておくこの値を変更後は,必ずToolInitIDメッセージを送信して下さい。
LEFT_X_PID short RW リストの左上X座標(QP)
TOP_Y_PID short RW リストの左上Y座標(QP)
WIDTD_PID USHORT RW リストの横幅(QP-1)
スクロールバーの横幅は含みません。
HEIGHT_PID USHORT RW リストの1行の高さ(QP-1)
TYPE_PID UCHAR R  リストのタイプ
対象リストで設定されている値を使用。LIST_DRAG_ENABE, LIST_DRAG_DISABLE,LIST_ACTIVE_LINEは,無視。
ALL_DATA_NO_PID USHORT RW リストの項目総数
この値を変更後は,必ずToolInitIDメッセージを送信して下さい。
DISP_DATA_NO_PID USHORT R  リストの表示行数
LIST_REVERSE_OFFSET_X_PID USHORT RW リストの非反転領域幅(QP)
LIST_CALL_BACK_PID PROC  W リストの1項目を表示するためのコールバック関数
void barListCB(void *Work, USHORT Data, USHORT Line, int X1, int Y1, int X2, int Y2)
barListCBは,ユーザ定義関数。
Work: LIST_CALL_BACK_WORK_PIDに設定されたワークのポインタ。通常はAplFormを使用します。
Data: 項目番号(0〜)
Line: 表示行番号(1〜)
X1:  表示位置左上X座標(QP)
Y1:  表示位置左上Y座標(QP)
X2:  表示位置右下X座標(QP)
Y2:  表示位置右下Y座標(QP)
LIST_CALL_BACK_WORK_PID PTR  W リストコールバック関数に渡すポインタ
FormSetup関数内で,AplFormを渡してください。
LIST_LINE_COLOR_PID COLOR RW リストの枠線,罫線の色
デフォルトはグレー。
LIST_BG_COLOR_PID COLOR RW リストの非選択状態時の背景色
デフォルトは白。
LIST_REVERSE_COLOR_PID COLOR RW リストの選択状態時の背景色
デフォルトはシステムの反転色。
LIST_ACTIVE_ITEM_PID USHORT R  現在選択状態にある項目の総数
UC_CALL_BACK_WORK_PID PTR  W ユーザコールバック関数に渡すポインタ
FormSetup関数内で,AplFormを渡してください。
 A動作メッセージ
SetPropertyID
 プロパティの値を設定する。
 メンバ
  ・Message.SetProperty.PropertyID(USHORT)
    プロパティID
  ・Message.SetProperty.Value
    設定する値
 リターン
  なし
GetPropertyID
 プロパティの値を取得する。
 メンバ
  ・Message.GetProperty.PropertyID(USHORT)
    プロパティID
 リターン
  ・Message.GetProperty.Value
    取得した値
ToolOpenID
 マルチセレクトリストの領域を確保する。
ToolCloseID
 マルチセレクトリストの領域を解放する。
ToolInitID
 内部状態を初期化,選択状態を全クリアする。
SetHiliteID
 指定項目番号を選択状態に設定する。内部状態のみ変更する。
 指定項目番号が項目総数以上の場合何もしない。
 メンバ
  ・Message.SetHilite.TargetID (USHORT)
    項目番号
 リターン
  なし
SetNormalID
 指定項目番号を非選択状態に設定する。内部状態のみ変更する。
 指定項目番号が項目総数以上の場合何もしない。
 メンバ
  ・Message.SetNormal.TargetID (USHORT)
    項目番号
 リターン
  なし
RedispID
 リストを再表示する。
ScrollUpdateID
 リストの項目総数,表示開始項目番号を設定する。(表示行数は変更しない)
 表示開始項目番号が項目総数以上の場合,表示開始項目番号を項目総数-1に設定する。
 メンバ
  ・Message.ScrollUpdate.AllDataNo (USHORT)
    項目総数
  ・Message.ScrollUpdate.DispDataNo (USHORT)
    表示行数(未使用)
  ・Message.ScrollUpdate.DispOffset (USHORT)
    表示開始項目番号
 リターン
  なし
NextPageID
 次のページを表示する。
 メンバ
  なし
 リターン
  なし
PrevPageID
 前のページを表示する。
 メンバ
  なし
 リターン
  なし
ScrollUpID
 1行分スクロールアップする。
 メンバ
  なし
 リターン
  なし
ScrollDownID
 1行分スクロールダウンする。
 メンバ
  なし
 リターン
  なし
CheckPartID
 指定項目番号の選択状態を取得する。
 メンバ
  ・Message.CheckPart.TargetID (USHORT)
    対象項目番号(0〜)
 リターン
  ・Message.CheckPart.TargetStatus (UCHAR)
    選択状態:0x00,非選択状態:0x01,範囲外:0x10
CheckActiveID
 選択状態にある総数を取得する。
 メンバ
  なし
 リターン
  ・Message.CheckActive.TargetID (USHORT)
    選択されている総項目数
 Bライブラリ関数
void MSELLIST_OPEN(int parts, APLFORMPTR AplForm, int barListParts)
 マルチセレクトリストの初期化関数。
 parts: ユーザーコントロールクラス
 AplForm: アプリフォーム
 barListParts: スクロールバー付きリストクラス
void MSELLIST_UPDATE(int parts, CONTROLHD ctrlHd)
 マルチセレクトリストの表示状態更新関数。
 parts: ユーザーコントロールクラス
 ctrlHd: コントロールテーブル
BOOLEAN MSELLIST_CB(MSELLIST **ppMSelList, MESSAGE* Message, WINDOWHD WnHandle, RECTANGLE* UserRect, void** Work)
 マルチセレクトリストメッセージ処理関数。
 ppMSelList: マルチセレクトリスト構造体
 Message: メッセージ
 WnHandle: ウィンドウハンドル
 UserRect: ユーザコントロール領域
 Work: USER_CALL_BACK_WORK_PIDで設定したポインタの値
    FormSetup関数内でAplFormを設定
void MSELLIST_CLOSE(int parts, CONTROLHD ctrlHd)
 マルチセレクトリストの終了関数。
 parts: ユーザーコントロールクラス
 ctrlHd: コントロールテーブル

◆使用方法
 @libMSELList.aをSZABインストールディレクトリの下の lib ディレクト
  リにコピーする。
 AMSELList.hをSZABインストールディレクトリの libheader/c ディレク
  トリにコピーする。
  あるいは,各プロジェクトのディレクトリの csrc ディレクトリの下に
  コピーする。
 BSZAB統合開発環境のリンカオプション LKFLAGS2 に -lMSELList を追加
  する。
 Cスクロールバー付きリストコントロールとユーザーコントロールクラス
  をメインフォームに作成する。
 Dメインフォームの FormSetup関数内でマルチセレクトリストの初期化関
  数(MSELLIST_OPEN)をコールする。次に,マルチセレクトリストクラ
  スの LIST_CALL_BACK_PIDにスクロールバー付きリストコントロールと
  同様のコールバック関数を設定する。
   例.
    MSELLIST_OPEN(mselList, AplForm, barList);
    SetCtrlProperty(mselList, LIST_CALL_BACK_PID, procValue,
            barListCB, AplForm->Control);
 Eユーザー関数として,上記コールバック関数(barListCB)を作成する。
 Fメインフォームの FormEnd関数内でマルチセレクトリストの終了関数
  (MSELLIST_CLOSE)をコールする。
 Gユーザーリストコントロールクラスのコールバックルーチン内で,マル
  チセレクトリストメッセージ処理関数(MSELLIST_CB)をコールする。
   例.
     static MSELLIST *pMSelList = NULL;
     if (*Work != NULL) {
       MSELLIST_CB(&pMSelList, Message, WnHandle, UserRect, Work);
     }
 Hスクロールバーの BarButtonSelect, BarListChangeActiveイベント関
  数内でマルチセレクトリスト表示状態更新関数を(MSELLIST_UPDATE)コ
  ールする。
   例.
     MESSAGE msg;
     MSELLIST_UPDATE(mselList, AplForm->Control);
     msg.CommonMsg.MessageID = RedispID;
     ControlCall(mselList, AplForm->Control, &msg);

◆制限事項
 ・選択/非選択状態を保持できるのは,4096行までです。
 ・リスト内を押したままリスト外に移動した場合,スクロールしません。
 ・機能キーを用いた範囲指定はできません。

◆著作権・転載条件など
 ・本ライブラリは,制限なしで使用可能です。自由に使用してください。
  但し,本ライブラリを使用して生じるあらゆる障害に対して,一切責任
  を負いません。

マルチセレクトリストクラスについて  ダウンロード
仕様  使用方法
制限事項  著作権・転載条件など

MOREソフト