搜索列表框项目

问题描述 投票:0回答:1

我想在列表框1中查找文本。这是我写的代码:

Var
  i:integer;
Begin
  i:=listbox1.Items.IndexOf(edit1.Text);
  listbix1.ItemIndex:=i;
End;

但是当我在edit1中写入确切的文本时,该项目将突出显示。例如,如果我编写appl,Apple不会突出显示。如果listbox1中有2个苹果,则仅突出显示其中一个。如何进行良好的搜索?

delphi listbox delphi-10.3-rio
1个回答
0
投票
  • 您可以使用列表框项目的Selected功能并将所需的项目转换为选定的项目。
  • MultiSelect上设置列表框的True属性。
  • [在编辑的onChange事件中使用下面的代码((当您要求“良好搜索”时,我在搜索中添加了一些可选部分,您可以忽略它们,并使用没有它们的代码)

-

Var
  i, search_count:              Integer;
  search_str, search_item:      String;
begin
  search_count := 0; 
  search_str := edit_search.Text;  
  for i := 0 to listBox.Count - 1 do begin  
    search_item := listBox.Items[i];      
    if not chk_case.Checked then begin
      search_str := LowerCase(search_str);
      search_item := LowerCase(search_item);
    end;  
    if pos(search_str, search_item) > 0 then begin
       listBox.Selected[i] := True;
       Inc(search_count);
    end else 
       listBox.Selected[i] := False;       
  end;
  lbl_count.Caption := IntToStr(search_count) + ' items found.';  
end;

Searching through ListBox items


我不知道为什么,但是第一次当我尝试插入代码时,StackOverflow对我来说无法正常工作,所以我也从代码行中添加了屏幕截图:

Screenshot of code lines

© www.soinside.com 2019 - 2024. All rights reserved.