リストビューのコラムクリックからの任意列番の取り込み方法

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: リストビューのコラムクリックからの任意列番の取り込み方法

リストビューのカラムクリックからの任意列番の取り込み方法

by me262 » 2005年12月20日(火) 17:16

あーっと,やっぱり淡幻星さんのお世話になってしまいました。
例によって一発で完了です。
何事も先人は賢人ということで,淡幻星さんを含め皆さんのサポートが良い
ので非常に助かります。
この後聞くにしても,一定レベルまで自分で考えてから聞くように心がけ
ますので,宜しくお願い致します。
これでリストビューもRADの手を借りずに,かなり操作が可能になりました。

Re: リストビューのコラムクリックからの任意列番の取り込み方法

by 淡幻星 » 2005年12月20日(火) 16:33

列番引数データ(NM_LISTVIEW構造体のiSubItem)が固定データから変
化してくれません。
If wParam = ID_ListView(1) Then

If LOWORD(wParam) = ID_ListView(1) Then
に代えてみてください。
あと、コラム→カラムだと思います。

(いつものように)蛇足ですが、最初上記のLOWORDに気付かずに書いてしまったコードを、せっかくなので載せておきます(^^;)

コード: 全て選択

Case WM_NOTIFY
	Dim nmHdr As NMHDR
	Dim nmListView As NMLISTVIEW
	Select Case LOWORD(wParam)
		Case ID_ListView
			memcpy( VarPtr(nmHdr), lParam, Len(nmHdr) )
			Select Case nmHdr.code
				Case LVN_COLUMNCLICK
					memcpy( VarPtr(nmListView), lParam, Len(nmListView) )
					debug
			End Select
	End Select
debugの位置で、
NM_LISTVIEW構造体のiItemにIndex番号(行番号)、iSubItemにカラム番号(列番号)が入ると思います。
まぁ、一気に行列の情報を得る例、ってことで^^;
(RADのコピペなんですけどね/爆)

リストビューのコラムクリックからの任意列番の取り込み方法

by me262 » 2005年12月20日(火) 09:53

データ表示用としてのリストビューを生成(RADツールは使用しない)
し,任意の列(コラム)が押された時にその列番を知りたいのですが,
列番引数データ(NM_LISTVIEW構造体のiSubItem)が固定データから変
化してくれません。

BackSearchABや“猫でも分かる~”などにいくつかのヒントがあり,
コラムのボタンタイミングから,上記構造体のバッファへlParamをコピー
して読み出していますが,旨く取り込めていないようです。
親ウィンドウのプロシージャ内に以下のコードを置き,コラムボタンの
クリックタイミングでデータを取り込んでいます。
クリックタイミング(Case LVN_COLUMCLICK)の確認は正常に動作。
なお選択された行番号も取り込んでいますが,これは“コードの切れ端”
におけるhira様の投稿を参照しており,勿論ちゃんと読み込めています。

<ご質問内容>
1)考え方に基本的な間違いがありますか。
2)もしあるとすればそのご指摘をお願い致します。
3)特別な関数(マクロ)など他の方法はありますか。
Case WM_NOTIFY
itemcn = FindSelListItem(hListViewWnd(1))
If wParam = ID_ListView(1) Then
memcpy(VarPtr(lvdispinfo), lParam, Len(lvdispinfo))
End If
Select Case (lvdispinfo.hdr.code)
Case LVN_COLUMNCLICK
memcpy(VarPtr(nmlistview), lParam, Len(nmlistview))
subitemcn = (nmlistview.iSubItem)
End Select

ページトップ