當前位置:成語大全網 - 新華字典 - DELPHI基礎教程:Delphi自定義部件開發(三)[4]

DELPHI基礎教程:Delphi自定義部件開發(三)[4]

 下面是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