ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 22:10

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2011年2月06日(日) 15:12 
WinXPSp3 AB Ver4.20
MainWnd_Creatイベントでテキストファイルからリストビューに取り込んで表示させて
いますが、最初はどの行も選択(青色表示)されずに表示されます。
マウスで1回はクリックしないと[↓]キーでリスト内を操作できません。
そこで、下記コードの一番下でビュー上の1行目(Index=0)を選択状態(強調表示)
で表示されるように処理をしたいです。
Radで「選択を常に表示」にしています。
SendMessageでどのように指定したらよいですか?。
item.mask=LVIF_STAYE
item.state=LVIS_SELECTED
item.iItem=0
SendMessage(hList,LVM_SETITEM,0,VarPtr(item))
でうまく行きません
お願いできるなら hList とindexを指定して特定の行を選択表示させる
関数を作って頂けたらと思いますが厚かましいでしょうか?
よろしくお願いいたします。

変数宣言等は略
Open strFile For Input As #1
i=0
While( Eof(1)=0 )
LineInput (1, strBuf)
lngCommaPos=InStr(1,strBuf,",") 'コンマの位置
strBuf1=Left$(strBuf,lngCommaPos-1)
strBuf2=Mid$(strBuf,lngCommaPos+1)
With item
.mask=LVIF_TEXT
.pszText=StrPtr(strBuf1)
.iItem=i
.iSubItem=0
SendMessage(hList,LVM_INSERTITEM,i,VarPtr(item))
.pszText=StrPtr(strBuf2)
.iItem=i
.iSubItem=1
SendMessage(hList,LVM_SETITEM,i,VarPtr(item))
End With
i=i+1
Wend
Close #1
----------此処に追加したい---- item.iItem=0 を選択表示にする


通報する
ページトップ
   
投稿記事Posted: 2011年2月06日(日) 18:31 
オフライン

登録日時: 2005年7月19日(火) 07:02
記事: 183
お住まい: 宮城県
引用:
> マウスで1回はクリックしないと[↓]キーでリスト内を操作できません。
> そこで、下記コードの一番下でビュー上の1行目(Index=0)を選択状態(強調表示)
> で表示されるように処理をしたいです。
> Radで「選択を常に表示」にしています。
> SendMessageでどのように指定したらよいですか?。
> item.mask=LVIF_STAYE
> item.state=LVIS_SELECTED
> item.iItem=0
> SendMessage(hList,LVM_SETITEM,0,VarPtr(item))
> でうまく行きません
リストビューの選択関数です。これでやってみてください。
なお、「マウスで1回は~」はフォーカスが当たってないからかもなので、
SetForcus()でリストビューにフォーカスを当ててみてください。
コード:
'指定されたアイテム(nIndex)を選択状態にする。
'hWnd=ListViewコントロールのハンドル
Function ListView_SetSelecedIndex( hWnd As Long, nIndex As Long ) As Long
	Dim stLvItem As LV_ITEM
	stLvItem.iItem = nIndex
	stLvItem.iSubItem = 0
	stLvItem.mask = LVIF_STATE 
	stLvItem.state = LVIS_SELECTED
	stLvItem.stateMask = LVIS_SELECTED
	ListView_SetSelecedIndex = SendMessage( hWnd, LVM_SETITEM, 0, VarPtr(stLvItem) )
End Function

手前味噌ですが、サンプルコードつきヘルプを、当方のサイトの「ダウンロード>AB淡幻ライブラリ」で公開してます。
その中の「WSLib6_ListViewStructure.sbp」に、
リストビュー関連の補助関数をいろいろ定義してますので、
興味ありましたら参照ください。


通報する
ページトップ
 記事の件名: 結果報告とお礼
投稿記事Posted: 2011年2月06日(日) 20:36 
淡幻星さん
すばやい回答を頂き真に有難うございました。
2年も勉強をサボっていて、以前作ったものをもう少し便利にしようと思いつきました。
時々この質問板を訪れようとしましたが、度々長期にわたってアクセスできないのであきらめかけていました。

Dim stLvItem As LV_ITEM → LVITEMに直しました
item.stateMask = LVIS_SELECTED
item.iSubItem = 0
この2つが足りなかったのですね。
ListView_SetSelecedIndex関数を使わせていただきます。

ListView_SetSelecedIndex( hList, 0)
SetFocus(hList) これを入れて強調表示になりました。(無かったらグレー表示です)
「↓」キー2回押せば2行目に移りました。

ABHelper[1]を何回も見ましたがどうしても判りませんでした。
本当に有難うございました。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[16人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean