リストビュー内検索

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
西野孝雄

リストビュー内検索

#1 投稿記事 by 西野孝雄 »

リストビュー内を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))
西野孝雄

リストビュー内検索

#3 投稿記事 by 西野孝雄 »

検索しても情報が少なく、
掲示板でも返信が無い…。
あきらめろって事ですね。
失礼しました。
THEREMIN
記事: 36
登録日時: 2007年2月11日(日) 01:52
お住まい: HYOGO pref.

#4 投稿記事 by THEREMIN »

よく見てないんですが、これかな?

http://www.activebasic.com/forum/viewto ... 5%E5%A1%BC

案外探したらもっとあるかも。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#5 投稿記事 by 7 »

リストビューの二列目の文字列を取得して検索したい文字列と比較するという処理を、リストビューの項目の数までFor文などで回したら簡単ではないですがお望みの動作になるんじゃないかと思います。

言葉だけの説明ですけど、暇ができたらコードも書いて追記しようと思います。
西野孝雄

リストビュー内検索

#6 投稿記事 by 西野孝雄 »

返信ありがとうございます。

>THEREMINさん
残念ですが、私がやりたい事とは少し違うのです。
私がしたいのは検索で、そこに載ってるのは編集ですね。

>7さん
初めにも書きましたが、(あ、でも説明不足でした。すいません)
ひとつずつ文字列を取得して比較する方法なら解るのです。
現在、それを使って検索しているのですが
LVM_FINDITEMを使っての方法を教えて欲しかったのです。
記述も少なくて楽かな、と思いまして。
(速度的にどちらが速いかは試せていませんが)
返信する