⑶ 初始化DataLink
在數據相關控制在其存在的期間要不停地訪問DataLink對象,因此,必須在其構建函數中創建DataLink創建並且在析構時,撤消DataLink對象,因此要覆蓋日歷的Create和Destroy方法。
type
TDBCalendar=class(TCalendar)
public
constructor Create(Aowna: TComponent); override;
destructor Destroy; override;
end;
constructor TDBCalendar Create (Aowner: TComponent);
begin
inherited Create(AOwner);
FReadOnly := True;
FDataLink := TFieldDataLink.Create;
end;
destructor TDBCalendar Destroy;
begin
FDataLink.Free;
inherited Destroy;
end;
現在,部件已擁有完整的DataLink,但部件還不知從相聯的域中讀取什麼數據。
19.3.1.4 響應數據變化
一旦控制擁有了數據聯接(DataLink)和描述數據源和數據域的屬性。就需在數據記錄改變時響應域中數據的變化。
DataLink對象都有個名為OnDataChange的事件。當數據源指示數據發生變化時,DataLink對象調用任何OnDataChange所聯接的事件處理過程。
要在數據改變時更新數據,就需要給DataLink對象的OnDataChange事件增加事件處理過程。
下面聲明了DataChange方法,並將其賦給DataLink對象的OnDataChange事件:
type
TDBCalendar=class(TCalendar)
private
procedure Datachange(Sender: TObject);
end;
constructor TDBCalendar Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FReadOnly := True;
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := DataChange;
end;
destructor TDBcalendar.Destroy;
begin
FDataLink.OnDataChange := nil;
FDataLink.Free;
inherited Destroy
end;
procedure TDBCalendar.DataChange(Sender: TObject);
begin
if FDataLink.Filed=nil then
CalendarDate := 0;
else
CalendarDate := FDataLink.Field.AsDate;
end;
;