0
我想在Delphi中使用編輯框過濾列表框,但它不工作。這是我的基於編輯框的OnChange事件的代碼。使用編輯框過濾列表框
procedure TReportDlgForm.FilterEditOnChange(Sender: TObject);
var
I: Integer;
begin
ListBox1.Items.BeginUpdate;
try
for I := 0 to ListBox1.Items.Count - 1 do
ListBox1.Selected[I] := ContainsText(ListBox1.Items[I], FilterEdit.Text);
finally
ListBox1.Items.EndUpdate;
end;
end;
我希望當我在我的編輯框中列表框項目將過濾。
*以什麼方式完全過濾*您所做的只是基於它們是否與文本匹配來突出顯示項目。你在ListBox上啓用了'MultiSelect'嗎?你真的想完成什麼?也許你實際上試圖隱藏不匹配的項目呢?如果是這樣,你將不得不保持你的主要字符串列表與列表框本身分開,那麼你可以根據需要'清除'列表框和'添加()'匹配項。或者,將過濾的結果存儲在單獨的列表中,並使用ListBox以虛擬模式顯示該列表。 –
@Remy - 我沒有在列表框中啓用MutiSelect。我希望用戶在編輯框中鍵入一個字符串,只有包含該字符串的條目出現,並且不匹配的條目隱藏在列表框中。例如,假設我最初有40個條目顯示在列表框中。當用戶在編輯框中鍵入內容時,列表框中的條目數將減少,僅顯示與用戶在編輯框中鍵入內容相匹配的條目。 – Hackbrew