1、DB Control都会重载ExecuteAction和UpdateAction函数,调用父类的方法并调用DataLink的相应方法。E.g:
ExeuteAction(Action:TBaseAction);
Begin
Inherited ExecuteAction(Action) or (FDataLink<>nil) and FDataLink.ExeuteActionAction);
End;
2、重载Notifaction方法。在其中处理DataSource组件被去处时的将DataSource设为nil
Notifaction(AComponent:TComponent;Operation:TOperation)
Begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (FDataLink <> nil) and
(AComponent = DataSource) then DataSource := nil;
End;
3、处理CM_GetDataLink消息,在Message的Result中返回控件使用的DataLink
begin
Message.Result:=Integer(FDataLink);
end
4.根据控件的不同处理DataLink的ActiveChange,EditIngChange,DataChange,recordchange,UpdateData等方法。ActiveChange是数据集的Active变化是发生,EditIngChange是DataSource的Editing变化时发生。
5、重载控件的Loaded函数在,控件从Stream中读出时,如果控件在Design state进行一次DataChange处理,应该是为了设计期可看到效果。
ExeuteAction(Action:TBaseAction);
Begin
Inherited ExecuteAction(Action) or (FDataLink<>nil) and FDataLink.ExeuteActionAction);
End;
2、重载Notifaction方法。在其中处理DataSource组件被去处时的将DataSource设为nil
Notifaction(AComponent:TComponent;Operation:TOperation)
Begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (FDataLink <> nil) and
(AComponent = DataSource) then DataSource := nil;
End;
3、处理CM_GetDataLink消息,在Message的Result中返回控件使用的DataLink
begin
Message.Result:=Integer(FDataLink);
end
4.根据控件的不同处理DataLink的ActiveChange,EditIngChange,DataChange,recordchange,UpdateData等方法。ActiveChange是数据集的Active变化是发生,EditIngChange是DataSource的Editing变化时发生。
5、重载控件的Loaded函数在,控件从Stream中读出时,如果控件在Design state进行一次DataChange处理,应该是为了设计期可看到效果。