首页 / 软件开发 / Delphi / 第十九章-Delphi自定义部件开发(三)(6)
第十九章-Delphi自定义部件开发(三)(6)2007-05-07⑶ 初始化DataLink在数据相关控制在其存在的期间要不停地访问DataLink对象,因此,必须在其构建函数中创建DataLink创建并且在析构时,撤消DataLink对象,因此要覆盖日历的Create和Destroy方法。typeTDBCalendar=class(TCalendar)publicconstructor Create(Aowna: TComponent); override;destructor Destroy; override;end;constructor TDBCalendar Create (Aowner: TComponent);begininherited Create(AOwner);FReadOnly := True;FDataLink := TFieldDataLink.Create;end;destructor TDBCalendar Destroy;beginFDataLink.Free;inherited Destroy;end;现在,部件已拥有完整的DataLink,但部件还不知从相联的域中读取什么数据。19.3.1.4 响应数据变化一旦控制拥有了数据联接(DataLink)和描述数据源和数据域的属性。就需在数据记录改变时响应域中数据的变化。DataLink对象都有个名为OnDataChange的事件。当数据源指示数据发生变化时,DataLink对象调用任何OnDataChange所联接的事件处理过程。要在数据改变时更新数据,就需要给DataLink对象的OnDataChange事件增加事件处理过程。下面声明了DataChange方法,并将其赋给DataLink对象的OnDataChange事件:typeTDBCalendar=class(TCalendar)privateprocedure Datachange(Sender: TObject);end;constructor TDBCalendar Create(AOwner:TComponent);begininherited Create(AOwner);FReadOnly := True;FDataLink := TFieldDataLink.Create;FDataLink.OnDataChange := DataChange;end;destructor TDBcalendar.Destroy;beginFDataLink.OnDataChange := nil;FDataLink.Free;inherited Destroyend;procedure TDBCalendar.DataChange(Sender: TObject);beginif FDataLink.Filed=nil thenCalendarDate := 0;elseCalendarDate := FDataLink.Field.AsDate;end;;