2006-06-11(Sun)

リストビュー小休止 便利なメッセージ

小休止 6 7 8 回

小休止 便利なメッセージ

リストビューに送るメッセージは LVCOLUMN , SETLVITEM , GETLVITEM などが出てきたが、他にもよく使うであろうメッセージを書いておこっかなと。
より詳しい内容や他のメッセージについては、例によって検索するなり文献をあたるなりしたほうが身のためです。

LVM_GETITEMCOUNT
全部で何レコードあるのか返してくれる。

ex.)
Dim AllRecord As Long
AllRecord = SendMessage( hList, LVM_GETITEMCOUNT, 0, 0 ) '全レコード数取得



LVM_DELETEALLITEM
リストビューのアイテムを一発でクリア(削除)してくれる。
但し、ActiveBasic 4.24.00 の時点ではメッセージが定義されていないので、プログラムの先頭などで自分で定義する。

ex.)
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
const LVM_DELETEALLITEM = &H1009 'リストビュー全消去メッセージ規定値


SendMessage( hListWnd, LVM_DELETEALLITEM , 0, 0) 'リストビュー全消去



LVM_GETITEM
アイテムの状態を取得できる。
状態というのは選択されていたり、フォーカスされていたりする状態のこと。
LVITM 構造体の適切なメンバに値を入れると、.state メンバにアイテムの状態が格納される。

ex.)
Dim lvi As LVITEM 'リストビューアイテム構造体
lvi.mask = LVIF_STATE 'アイテムの状態を弄るよ
lvi.stateMask = LVIS_SELECTED or LVIS_FOCUSED '特定の状態のみ操作できる
lvi.iItem = 0 '状態を取得するインデックス
SendMessage( hListWnd, LVM_GETITEM, 0, VarPtr(lvi) As Long ) '状態取得
If lvi.state = LVIS_FOCUSED then
適当な処理
End If


.state に入る値はこんなのがある。

LVIS_SELECTEDアイテムが選択状態を持つ
LVIS_FOCUSEDアイテムがフォーカス状態を持つ
LVIS_CUTアイテムがカット&ペーストの対象状態を持つ(マーク色が付く)
LVIS_DROPHILITEDアイテムがドラッグ&ドロップの対象状態を持つ(マーク色が付く)



LVM_SETITEM
アイテムの状態を設定できる。LVM_GETITEM の逆。

ex.)
Dim lvi As LVITEM 'リストビューアイテム構造体
lvi.mask = LVIF_STATE 'アイテムの状態を弄るよ
lvi.stateMask = LVIS_DROPHILITED '特定の状態のみ操作できる
lvi.state = LVIS_DROPHILITED 'ドラッグ&ドロップの対象としてマーク色を付ける
lvi.iItem = 0 '状態を取得するインデックス
SendMessage( hListWnd, LVM_SETITEM, 0, VarPtr(lvi) As Long ) '状態取得

.stateMask は特定の状態のみを操作できる。
この例ではドラッグ&ドロップの対象状態のみを操作しているので、アイテムの他の状態(選択状態など)は変化しない。
んで、.stateLVIS_DROPHILITED なのでマーク色が「付く」。解除するには .state0 にすれば良い。

全ての状態を操作したい場合は .stateMask-1 を指定する。

コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

nakami

Author:nakami
可愛いテンプレートに似合う俺
うそAチームのスミス大佐

NAVI
カテゴリー
最近の記事
リンク
FC2カウンター
ブログ内検索
RSSフィード
sponsored link