如何暂时使得TQuery下的所有永久字段的OnChange/OnGetText...等事件失效(类似于DisableControls这样的函数)
当用户手工输入时我们需要根据相应的输入来改变某些字段的值(比如输入商品编码后相应的修改商品名称等字段的值,这些控制都放在商品编码的OnChange事件中),但在我们程序控制从其他地方复制数据的时候则直接给他的所有字段赋值而不需要触发这些事件来完成某些字段的赋值,因为这些事件有可能很复杂。
当用户手工输入时我们需要根据相应的输入来改变某些字段的值(比如输入商品编码后相应的修改商品名称等字段的值,这些控制都放在商品编码的OnChange事件中),但在我们程序控制从其他地方复制数据的时候则直接给他的所有字段赋值而不需要触发这些事件来完成某些字段的赋值,因为这些事件有可能很复杂。
Query.OnChange=nil;
Query.OnGetText=nil;
恢復事件
Query.OnGenChange := GenChange;
那么多的永久字段,一个个写过去还不如不用了
begin
if Query.Fields[i].OnChange<>nil then
Query.Fields[i].OnChange='';
end;
楼上的先看看你的能不能编译通过再说吧,唉
begin
if Query.Fields[i].OnChange<>nil then
Query.Fields[i].OnChange=nil; // 这边写错了
end;// 以上的我试了,可以的
for i:=0 to Query.FieldCount-1 do
begin
if Query.Fields[i].OnChange=nil then
Query.Fields[i].OnChange=mychange(...);
end;