TClientDataSet.ReadOnly改变时通知TDBNavigator刷新(50分)

  • 主题发起人 主题发起人 WilliamGui
  • 开始时间 开始时间
W

WilliamGui

Unregistered / Unconfirmed
GUEST, unregistred user!
我改变了TClientDataSet.ReadOnly
但发现如TDBNavigator等,EditingChanged代码并不会执行,
不会得到CM_ENABLEDCHANGED消息,为什么?

我如何TClientDataSet.xxx 通知与它关联的控件刷新?
 
我的问题自己解决,在此与大家分享,作个榜样,
我对Form.Components进行循环,
设置TClientDataSet.readonly及TDBNavigator.enabled属性,
因为有顺序问题,可能readonly设置在enabled后面执行,
造成TDBNavigator的按钮状态没有刷新,
当然,可以像我的提问一样循环完之后,再通知一次,我现在采用另一种直接点的方法,
刷新状态有DataChanged、EditingChanged方法,
又是由ActiveChanged调用,
又是由SetDataSetSource,Load,CM_ENABLEDCHANGED消息等触发,
所以,定义动态数组,记录ComponentIndex值,循环完之后,
if Length(Nvg)>0 then
for i:=Low(Nvg) to High(Nvg) do
begin
k:=Nvg;
TDBNavigator(Components[k]).Perform(CM_ENABLEDCHANGED,0,0);
end;
这样就可以了
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
后退
顶部