by 西野孝雄 » 2007年1月29日(月) 03:18
リストビュー内をLVM_FINDITEMを使って検索するのですが、リストビューが複数列ある場合一番左の列を検索するのは出来ましたが
左から2番目以降の列を検索する事が出来ません。
LVFI_NEARESTXYを指定すれば可能かと思ったのですが、これも無理でした。
もしかして左端しか検索できないのでしょうか。
検索する方法をご存知の方がいたら教えて下さい。
ひとつずつ文字列を取得して比較する方法でも出来ますが、この方法が可能ならこっちの方が楽なので。
AB 4.13
OS XP sp2
以下で左端列の検索は出来ます。
コード: 全て選択
Dim hLV As HWND
Dim lvf As LVFINDINFO
Dim Serch As Long
Dim str As String
str = "検索したい文字列"
hLV = GetDlgItem(hMainWnd,ListView1)
With lvf
.flags = LVFI_STRING
.psz = StrPtr(str)
End With
Serch = SendMessage(hLV, LVM_FINDITEM, -1, VarPtr(lvf))
'Serchに検索結果が入る
以下で左から2番目の列を検索をしたかったのですが出来ませんでした。
コード: 全て選択
Dim hLV As HWND
Dim lvf As LVFINDINFO
Dim Serch As Long
Dim str As String
Dim po As POINTAPI
str = "検索したい文字列"
hLV = GetDlgItem(hMainWnd,ListView1)
po.x=1 '二番目なので1
po.y=0
With lvf
.flags = LVFI_STRING or LVFI_NEARESTXY
.psz = StrPtr(str)
.pt = po
.vkDirection= VK_DOWN 'いろいろな組み合わせを試しましたが変化なし
End With
Serch = SendMessage(hLV, LVM_FINDITEM, -1, VarPtr(lvf))
リストビュー内をLVM_FINDITEMを使って検索するのですが、リストビューが複数列ある場合一番左の列を検索するのは出来ましたが
左から2番目以降の列を検索する事が出来ません。
LVFI_NEARESTXYを指定すれば可能かと思ったのですが、これも無理でした。
もしかして左端しか検索できないのでしょうか。
検索する方法をご存知の方がいたら教えて下さい。
ひとつずつ文字列を取得して比較する方法でも出来ますが、この方法が可能ならこっちの方が楽なので。
AB 4.13
OS XP sp2
以下で左端列の検索は出来ます。
[code]Dim hLV As HWND
Dim lvf As LVFINDINFO
Dim Serch As Long
Dim str As String
str = "検索したい文字列"
hLV = GetDlgItem(hMainWnd,ListView1)
With lvf
.flags = LVFI_STRING
.psz = StrPtr(str)
End With
Serch = SendMessage(hLV, LVM_FINDITEM, -1, VarPtr(lvf))
'Serchに検索結果が入る[/code]
以下で左から2番目の列を検索をしたかったのですが出来ませんでした。
[code]Dim hLV As HWND
Dim lvf As LVFINDINFO
Dim Serch As Long
Dim str As String
Dim po As POINTAPI
str = "検索したい文字列"
hLV = GetDlgItem(hMainWnd,ListView1)
po.x=1 '二番目なので1
po.y=0
With lvf
.flags = LVFI_STRING or LVFI_NEARESTXY
.psz = StrPtr(str)
.pt = po
.vkDirection= VK_DOWN 'いろいろな組み合わせを試しましたが変化なし
End With
Serch = SendMessage(hLV, LVM_FINDITEM, -1, VarPtr(lvf))[/code]