[英]TFDMemTable filter not responding to my TEdit OnChangeTracking
我有來自 API 的 TFDMemTable 數據。 TFDMemTable 與 TListView 實時綁定。 這里棘手的部分是,我想在 TListView 中僅使用 TEdit 控件的 OnChangeTracking 事件顯示過濾后的數據。
這是我正在使用以實現預期結果的代碼,但不幸的是,它沒有返回任何內容。
procedure TformMain.edtSearchBoxChangeTracking(Sender: TObject);
var
metastr : string;
begin
metastr := edtSearchBox.text; //edtSearchBox is my TEdit control
with dmMain_u.dmMain do
begin
mtbMeta.Active := False; //mtbMeta is my TFDMemTable
mtbMeta.Filtered := False;
mtbMeta.Filter := 'meta LIKE ' + QuotedStr('%' + metastr + '%');
mtbMeta.Filtered := True;
mtbMeta.Active := True;
end;
end;
這里的任何人都可以嘗試檢查我的代碼是否正確? 或者我可能需要做其他事情?
我會刪除.Active:= False 和.Active:= True。 它們與對.Close 和.Open 的調用相同,Close 會導致mtbMeta 丟失其數據。
至於您在評論中提到的緩慢,通常的方法是這樣的:
procedure TformMain.edtSearchBoxChangeTracking(Sender: TObject);
var
metastr : string;
begin
Timer1.Enabled := True;
end;
並將 q 中剩余的代碼放入 Timer1 的 OnTimer 事件中。 將時間間隔設置為 150 或 200(毫秒),以這種方式使用計時器可以有效地等待您輸入“暫停呼吸”,而不是嘗試在每次按鍵時更新 gui。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.