红鱼儿

uniDBGrid不显示查询结果的解决方法

遇到这样问题,用一个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。

posted on 2021-08-21 11:38  红鱼儿  阅读(431)  评论(0编辑  收藏  举报