遇到這樣問題,用一個UniDBTreeGrid顯示一個樹,點每個節點,按節點做一個查詢,然后用UniDBGrid顯示。遇到的問題是UniDBGrid不是每次都顯示查詢內容。第一次顯示,第二次不顯示...當不顯示時,點Grid又顯示。
解決辦法:
將查詢邏輯移到一個uniTimer中,問題解決:
第一步,在SelectionChange中打開Timer
procedure TUserFrame.UniDBTreeGrid1SelectionChange(Sender: TObject); begin //uniDBGrid 不顯示查詢結果,這里用個定時器解決。 UniTimer1.Enabled:=True; end;
第二步,實現查詢:
procedure TUserFrame.UniTimer1Timer(Sender: TObject); var sqlstr: string; begin UniTimer1.Enabled:=False; //這里做查詢sql MasterDataSet.Close; MasterDataSet.Query.Text := sqlstr; MasterDataSet.Open; end;
后期,遇到這樣的問題:象上面的實現,會出現Timer不中止執行,反復執行Timer事件,不斷的執行查詢,解決的方法是將Timer.RunOnce設置為True。