ab.com コミュニティ https://www.activebasic.com/forum/ |
|
リストビューの一番上の行を選択状態にするには https://www.activebasic.com/forum/viewtopic.php?t=2656 |
ページ 1 / 1 |
作成者: | yata [ 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 を選択表示にする |
作成者: | 淡幻星 [ 2011年2月06日(日) 18:31 ] |
記事の件名: | Re: リストビューの一番上の行を選択状態にするには |
引用:
> マウスで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」に、 リストビュー関連の補助関数をいろいろ定義してますので、 興味ありましたら参照ください。 |
作成者: | yata [ 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]を何回も見ましたがどうしても判りませんでした。 本当に有難うございました。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |