2010-11-23 9 views
0

목록 상자에서 검색하고 검색된 단어와 동일한 단어를 모두 강조 표시하는 방법이 필요합니다.listbox에서 검색하는 방법은 무엇입니까?

나를 도와 줄 사람이 있습니까?

+12

그리고 우리는 그들의 질문에 대한 답을 받아 들일 사람들이 필요합니다. 지금까지 StackOverflow에서 7 가지 질문을했지만, 아직 한 가지 대답을받지 못했다고 말할 수 있습니다. –

답변

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; 

이 작업을 수행하려면 목록 상자의 MultiSelect 속성을 true로 설정해야합니다.

+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는 인덱스 같다.

관련 문제