熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

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

2013-11-23 17:48:11  來源: Delphi編程 

  下面是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 TDBCalendarGetDataField: string;

  begin

  Result := FDataLinkFieldName;

  end;

  function TDBCalendarGetDataSource: TDataSource;

  begin

  Result := FDataLinkDataSource;

  end;

  procedure TDBCalendarSetDataField(const Value: string)

  begin

  FDataLinkFieldName := Value;

  end;

  procedure TDBCalendarSetDataSource(Value: TDataSource)

  begin

  FDataLinkDataSource := 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 := TFieldDataLinkCreate;

  end;

  destructor TDBCalendar Destroy;

  begin

  FDataLinkFree;

  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 := TFieldDataLinkCreate;

  FDataLinkOnDataChange := DataChange;

  end;

  destructor TDBcalendarDestroy;

  begin

  FDataLinkOnDataChange := nil;

  FDataLinkFree;

  inherited Destroy

  end;

  procedure TDBCalendarDataChange(Sender: TObject)

  begin

  if FDataLinkFiled=nil then

  CalendarDate := ;

  else

  CalendarDate := FDataLinkFieldAsDate;

  end;

  返回目錄DELPHI基礎教程

       編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南

  Java程序性能優化讓你的Java程序更快更穩定

  C嵌入式編程設計模式

  Android游戲開發實踐指南

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25116.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.