リストボックスはコントロールが所有するアイテムを一覧の中から選択できるコントロール
[edit]
リストボックスのスタイル †

RADで設定できるスタイルについて
無効(使用不可)~タブストップ
他と同じなので省略
選択
一度に選択できるアイテムの数
選択無し、単一選択、複数選択。拡張はよくわからん
オーナー描画
加筆plz
ソート
リストボックスに追加された文字列が自動的にソートされる
これをチェックして無い場合は終端に文字列が追加される
複数列
アイテムを追加していって下端を超えた時に次の列の一番上にアイテムが追加される
これを指定していると垂直スクロールバーは動作しない
通知
クリックイベントやダブルクリックイベントを親ウィンドウに通知する
チェックされていないとRADのイベント処理でクリックを検出できない
水平スクロールバー
複数列のリストボックスの時に表示しきれなくなったら横向きのスクロールバーを出す
アイテムが長すぎる場合の尻切れには対応しない
垂直スクロールバー
リストボックスが表示しきれなくなった時に垂直スクロールバーを出す
スクロールバーを表示
リストボックスに常にスクロールバーが表示される
再描画しない
再描画されない
タブストップを使用
リストボックスのアイテム内でタブ文字を展開する
フォーカスの移動の方とは関係無い
キーボード入力を検出
リストボックスがフォーカスを持っている時キー入力があると<b style="color:black;background-color:#ffff66">WM_VKEYTOITEM</b>かWM_CHARTOITEMが親ウィンドウに来る

[edit]
操作サンプル †

以下のサンプルでは↓のマクロを使ってます
listbox.sbp

hListはリストボックスのハンドルです

[edit]
文字列を追加する †
ListBox_AddString(hList,buf)

bufは追加する文字列のポインタ
文字列は終端に追加される

[edit]
指定位置に文字列を追加する †
ListBox_InsertString(hList,index,buf)

indexにアイテムを追加する位置を示すインデックスを指定します
indexの位置に既にアイテムがある場合は既にあったアイテムが下にずれます
bufは追加したい文字列のポインタ

ウィンドウスタイルのソートオプションを無視します

[edit]
アイテムが持つ文字列の長さを取得 †
return = ListBox_GetTextLen(hList,index)

indexに文字列の長さを取得したいアイテムのインデックスを指定する
returnに長さ(終端のNULLを含まない)が入る

[edit]
アイテムが持つ文字列を取得 †
return = ListBox_GetText(hList,index,buf)

indexに文字列を取得するアイテムのインデックスを指定する
bufに取得した文字列を入れるバッファを指定する
returnに取得した文字数が入る

システムはバッファの大きさを見ていません。オーバーランに注意

[edit]
リストボックスが持つアイテム数を取得 †
return = ListBox_GetCount(hList)

returnにアイテム数が入る

[edit]
アイテムを削除する †
ListBox_DeleteString(hList,index)

indexに削除したいアイテムのインデックスを指定する

[edit]
アイテムを全削除する †
ListBox_ResetContent(hList)

[edit]
文字列を検索する †
ListBox_FindString(hList,index,buf)

indexは検索を開始するアイテムのインデックスを指定する
indexで指定したアイテムを含めてリストボックスの下に向けてbufで指定した文字列を検索していく
returnに見つけたアイテムのインデックスが入る。見つからなかった場合はLB_ERRを返す

文字列は完全一致

[edit]
アイテムを選択する †
ListBox_SetCurSel(hList,index)

indexに選択したいアイテムのインデックスを指定する

[edit]
特定の文字列を持つアイテムを選択する †
ListBox_SelectString(hList,index,buf)

indexで指定したアイテムを含めてリストボックスの下に向けてbufで指定した文字列を検索し、初めに見つけたアイテムを選択する returnに見つけたアイテムのインデックスが入る。見つからなかった場合LB_ERRを返す

文字列は完全一致

[edit]
選択中のアイテムの位置を取得する †
return = ListBox_GetCurSel(hList)

returnに選択されているアイテムの位置が入る

[edit]
ファイルやフォルダの一覧を得る †
ListBox_Dir(hList,attrs,path)

pathで検索パス、attrsで列挙するファイルやフォルダの属性を指定する
検索パスは円記号で終わっては駄目。円記号で終わる場合は*(複数文字ワイルドカード)をつける

例(フォルダのみ列挙)
ListBox_Dir(hList,DDL_EXCLUSIVE Or DDL_DIRECTORY,"C:\WINDOWS\*")

例2(文字「a」を含むフォルダを列挙)
ListBox_Dir(hList,DDL_EXCLUSIVE Or DDL_DIRECTORY,"C:\WINDOWS\*a*")

添付ファイル: listbox.sbp 130件 [詳細]