下面是DataSource和DataField的聲明和它們的實現方法
type
TDBCalendar = class(TSampleCalendar)
private { 屬性的實現方法是 }
function GetDataField: string; { 返回數據庫字段的名字 }
function GetDataSource: TDataSource; { 返回數據源(Data source)的引用 }
procedure SetDataField(const Value: string) { 給數據庫字段名賦值 }
procedure SetDataSource(Value: TDataSource) { 給數據源賦值 }
published { 使屬性在設計時可用 }
property DataField: string read GetDataField write SetDataField;
property DataSource: TDataSource read GetDataSource write SetDataSource;
end;
……
function TDBCalendar GetDataField: string;
begin
Result := FDataLink FieldName;
end;
function TDBCalendar GetDataSource: TDataSource;
begin
Result := FDataLink DataSource;
end;
procedure TDBCalendar SetDataField(const Value: string)
begin
FDataLink FieldName := Value;
end;
procedure TDBCalendar SetDataSource(Value: TDataSource)
begin
FDataLink DataSource := Value;
end;
現在 就建立了日歷和DataLink的鏈 此外還有壹個更重要的步驟 妳必須在日歷構建時創建DataLink對象 在日歷析構時 撤消DataLink對象
⑶ 初始化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 但部件還不知從相聯的域中讀取什麽數據
響應數據變化
壹旦控制擁有了數據聯接(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 := ;
else
CalendarDate := FDataLink Field AsDate;
end;
返回目錄 DELPHI基礎教程
? 編輯推薦
? Java程序設計培訓視頻教程
? J EE高級框架實戰培訓視頻教程
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLE G數據庫開發優化指南
Java程序性能優化 讓妳的Java程序更快 更穩定
C嵌入式編程設計模式
Android遊戲開發實踐指南
lishixinzhi/Article/program/Delphi/201311/25116