2010-11-23 10 views
0

リストボックスを検索し、検索された単語に等しいすべての単語を強調表示する方法が必要です。リストボックスで検索するには?

誰かが私を助けることができますか?

+12

私たちは、質問に対する回答を受け入れる人が必要です。私が知る限り、ここでStackOverflowで7つの質問をしてきましたが、あなたはまだ1つの答えを受け入れていません。 –

答えて

2

このような意味ですか?

procedure TForm1.HighLight(aListbox: TListBox; aStr: string); 
var 
    I : integer; 
begin 
    aListbox.ClearSelection; 

    for I := 0 to aListbox.Items.Count-1 do 
    if aListbox.Items[I] = aStr then 
     aListbox.Selected[I] := true; 
end; 

あなたはこれが機能するためにtrueにリストボックスのMultiSelectプロパティを設定する必要があります。

+0

多分私は間違っていますが、ハイライトされた彼は、単語の背景やフォントの色を変更するスタイルで、それを選択しないことを意味すると思います。 –

+1

私はそれについて考えましたが、彼の質問の曖昧さとリストボックスにハイライト機能がないという事実を考えれば、これは彼が意図したものかもしれないと思いました。結局のところ、多くのユーザは、選択された項目を「強調表示」または「青色」と呼んでいる。私の母親の例:-) –

1

あなたの問題は正確には指定されていません。あなたは検索のための助けが必要ですか?あなたは言葉を強調するのに助けが必要ですか?

検索するには、リストボックス内の特定のアイテム、またはすべてのアイテムの単語を探していますか? アイテムを検索する場合は、TListBox.Items.IndexOf()を使用できます。 単語を検索する場合は、TListBox.Items.TextのPos()またはPosEx()関数を使用してテキスト全体を検索できます。 TListBox.Itemsを使用してアイテムを反復処理することによって、すべてのアイテムに対してこれらの関数を使用できます。

強調表示する単語の場合、TListBox自体はテキストの強調表示を行いません。それが必要な場合は、カスタム描画する必要があります。 StyleプロパティをlbOwnerDrawFixedに設定し、OnDrawItemイベントのカスタム描画コードを記述します。

3

あなたがリストボックスで高速検索を実行し、類似したアイテムや、正確なアイテムのインデックスを取得したい場合は、解決策は、この

var 
    i : integer; 
    s : string; 
begin 
    s := 'My Text' +#0; 
    i := Lst1.Perform(LB_FINDSTRING, $FFFFFFFF, PWideChar(s)); 
end; 

iのようなものですが、あなたの指定した文字列と類似しているリストボックスのアイテムのインデックスです。

関連する問題