嗨,我在delphi中进行增量搜索时遇到了问题。

我已经看过这个http://delphi.about.com/od/vclusing/a/lb_incremental.htm
但这在firemonkey中不起作用,所以我想出了这个:

  for I := 0 to lstbxMapList.Items.Count-1 do
  begin
    if lstbxMapList.Items[i] = edtSearch.Text then
    begin
      lstbxMapList.ItemByIndex(i).Visible := True;
    end;

    if lstbxMapList.Items[I] <> edtSearch.Text then
    begin
      lstbxMapList.ItemByIndex(i).Visible := False;
    end;
  end;


当我使用此列表框只是空白。

最佳答案

您将隐藏与edtSearch.Text不完全匹配的所有项目。尝试以下方法(在XE3中测试):

// Add StrUtils to your uses clause for `StartsText`
uses
  StrUtils;

procedure TForm1.edtSearchChange(Sender: TObject);
var
  i: Integer;
  NewIndex: Integer;
begin
  NewIndex := -1;
  for i := 0 to lstBxMapList.Items.Count - 1 do
    if StartsText(Edit1.Text, lstBxMapList.Items[i]) then
    begin
      NewIndex := i;
      Break;
    end;
  // Set to matching index if found, or -1 if not
  lstBxMapList.ItemIndex := NewIndex;
end;

10-08 01:51