「コンボボックス」の編集履歴(バックアップ)一覧はこちら

コンボボックス」(2010/01/12 (火) 00:00:42) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

コンボボックスはエディットボックスとリストボックスを組み合わせたコントロール ユーザーにアイテム選択をさせるために使う 標準ではエディットボックス脇のボタンを押すことによってリストが表示されるドロップダウンタイプになっている [edit] コンボボックスのスタイル † RADで設定できるスタイルについて 無効(使用不可)~タブストップ 他と同じなので省略 タイプ コンボボックスの種類 ドロップダウン、ドロップダウンリスト、デフォルトの3種類 デフォルトはエディットボックスにリストボックス付けただけの代物。別々に作った方が良いと思う ドロップダウンはコントロール右側の▼を押すとリストボックスが表示されるタイプ。空白部分はエディットボックスで編集可能 ドロップダウンリストはドロップダウンと大体同じだがエディットボックス部分は編集できない オーナー描画~文字列あり 加筆plz ソート コンボボックスに追加された文字列が自動的にソートされる これをチェックして無い場合は終端に文字列が追加される 垂直スクロールバー コンボボックスのウィンドウサイズ内でリストボックスが表示しきれなくなった時にスクロールバーを出して対応する チェックしておかないと一定数以上のアイテムを表示できない 水平オートスクロール ボタン脇のエディットボックスを編集した時に文字列があふれたらスクロールを行なう スクロールバーを表示 リストボックスに常にスクロールバーが表示される 大文字変換 エディットボックスに入力された文字を大文字にする 小文字変換 エディツトボックスに入力された文字を小文字にする ↑ [edit] 操作サンプル † 以下の例では特に記述が無ければhComboBoxはコンボボックスのハンドルを示す ↑ [edit] 文字列を追加する † SendMessage(hComboBox,CB_ADDSTRING,0,buf) bufは追加したい文字列のポインタ 文字列は終端に追加される ↑ [edit] 指定位置に文字列を追加する † SendMessage(hComboBox,CB_INSERTSTRING,index,buf) indexにアイテムを追加する位置を示すインデックスを指定します indexの位置に既にアイテムがある場合は既にあったアイテムが下にずれます bufは追加したい文字列のポインタ ウィンドウスタイルのソートオプションを無視します ↑ [edit] アイテムが持つ文字列の長さを取得 † return = SendMessage(hComboBox,CB_GETLBTEXTLEN,index,0) indexに文字列の長さを取得するアイテムのインデックスを指定する リストボックスの一番上のアイテムがindex=0で、一番下がindex=アイテム数-1 returnに文字数が入る ↑ [edit] アイテムが持つ文字列を取得 † return = SendMessage(hComboBox,CB_GETLBTEXT,index,buf) indexに文字列を取得するアイテムのインデックスを指定する bufに取得した文字列を入れるバッファを指定する returnに取得した文字数が入る システムはバッファの大きさを見ていませんのでバッファが足りないと即座にバッファオーバーランします CB_GETLBTEXTLENで文字数を取得して十分な長さのバッファを確保しておくか 文字列の長さを一定値以下に抑える工夫が必要です ↑ [edit] コンボボックスが持つアイテム数を取得 † return = SendMessage(hComboBox,CB_GETCOUNT,0,0) returnにコンボボックスが持つアイテム数が入ります ↑ [edit] アイテムを削除する † return = SendMessage(hComboBox,CB_DELETESTRING,index,0) indexに削除するアイテムのインデックスを指定する returnに削除後にコンボボックスが持っているアイテム数が入ります ↑ [edit] アイテムを全削除する † SendMessage(hComboBox,CB_RESETCONTENT,0,0) アイテムを全て削除します ↑ [edit] 文字列を検索する † return = SendMessage(hComboBox,CB_FINDSTRING,index,buf) indexは検索を開始するアイテムのインデックスを指定する indexで指定したアイテムを含めてリストボックスの下に向けてbufで指定した文字列を検索していく returnに見つけたアイテムのインデックスが入る。見つからなかった場合はCB_ERRを返す 文字列は完全一致しないと駄目 ↑ [edit] アイテムを選択する † SendMessage(hComboBox,CB_SETCURSEL,index,0) indexは選択するアイテムのインデックス ↑ [edit] 特定の文字列を持つアイテムを選択する † 要はCB_FINDSTRINGとCB_SETCURSELの複合 return = SendMessage(hComboBox,CB_SELECTSTRING,index,buf) indexは検索を開始するアイテムのインデックスを指定する indexで指定したアイテムを含めてリストボックスの下に向けてbufで指定した文字列を検索し、初めに見つけたアイテムを選択する returnに見つけたアイテムのインデックスが入る。見つからなかった場合はCB_ERRを返す やはり文字列は完全一致 ↑ [edit] 選択中のアイテムの位置を取得する † return = SendMessage(hComboBox,CB_GETCURSEL,0,0) returnに選択されているアイテムのインデックスが入る 選択されていなければCB_ERRが入っている ↑ [edit] リストボックスを開く/閉じる † SendMessage(hComboBox,CB_SHOWDROPDOWN,show,0) show=1でリストボックスを表示させる。show=0で閉じる ↑ [edit] コンボボックスが持つエディットボックスを操作する † hEdit = GetWindow(hComboBox,GW_CHILD) hEditにコンボボックスが持つエディットボックスのハンドルが入る 普通のエディットボックスと同様に操作できる またコンボボックスに対してCB_*EDIT*(*は一文字以上のアルファベット)形式のメッセージを送ることでもある程度操作できる ↑ [edit] ファイルやフォルダの一覧を得る † SendMessage(hComboBox,CB_DIR,attrs,path) pathで検索パス、attrsで列挙するファイルやフォルダの属性を指定する 検索パスは円記号で終わっては駄目。円記号で終わる場合は*(複数文字ワイルドカード)をつける 例(フォルダのみ列挙) SendMessage(hComboBox,CB_DIR,DDL_EXCLUSIVE Or DDL_DIRECTORY,"C:\WINDOWS\*") ListBox_Dir(hList,DDL_EXCLUSIVE Or DDL_DIRECTORY,"C:\WINDOWS\*") 例2(文字「a」を含むフォルダを列挙) SendMessage(hComboBox,CB_DIR,DDL_EXCLUSIVE Or DDL_DIRECTORY,"C:\WINDOWS\*a*") フラグの値は以下 /* *_DIRのフラグ 指定したフラグのどれかが該当するファイルを列挙する */ Const DDL_READWRITE = &H0000 Const DDL_READONLY = &H0001 Const DDL_HIDDEN = &H0002 Const DDL_SYSTEM = &H0004 Const DDL_DIRECTORY = &H0010 Const DDL_ARCHIVE = &H0020 Const DDL_POSTMSGS = &H2000 Const DDL_DRIVES = &H4000 /* *_DIRの排他フラグ これを指定すると残りのフラグが全て該当したファイルのみ列挙する */ Const DDL_EXCLUSIVE = &H8000

表示オプション

横に並べて表示:
変化行の前後のみ表示: