我有一个有关unidac的uniQuery
的问题:
当uniQuery
打开时,如果链接了DataSource
组件,则DataSource.onDataChange
将触发2次,而ADOQuery
仅触发1次,为什么?
环境:
- unidac:6.4,7;
- delphi:7,XE 10.1柏林
我多次面对同样的问题,我发现这是一种默认的加载行为,不仅在Uni-Component中,所有相似的数据库组件都会在加载时触发.onDataChange
两次或更多。唯一的方法是使用解决方案来忽略第一个触发器。
您在这里也可以找到一个类似的问题
如果触发两次让您烦恼,请尝试我的解决方法:
var c: integer; // must be global and reset to 0 when u close your query
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if c = 2 then
begin
// do your actions
end
else
begin
inc(c);
end;
end;
它将消除所有必要的触发器,
希望有帮助。