我有一个关于unidac的问题uniQuery
:
打开时uniQuery
,如果DataSource
链接了一个组件, DataSource.onDataChange
会触发2次,而ADOQuery
只触发1次,为什么?
环境:
- uniDAC:6.4, 7;
- 德尔福: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;
它将消除所有不必要的触发器,
希望有所帮助。