首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 資料感知元件開發:TDBCalendar DataLink 初始化與資料變更事件響應

     編輯:Delphi

19.3.1.3-4 TDBCalendar 核心機制實作

承接前文,TDBCalendar 已完成唯讀屬性與更新旗標機制。本節實作資料感知核心:

DataLink 物件生命週期管理


type
  TDBCalendar = class(TCalendar)
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  private
    FDataLink: TFieldDataLink;
  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;

TFieldDataLink 專為單欄位綁定設計;亦有 TDataLink 支援整張表綁定。

響應資料變更: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.Field = nil then
    CalendarDate := 0          // 無欄位綁定 → 清空顯示
  else
    CalendarDate := FDataLink.Field.AsDateTime;  // 同步欄位日期值
end;

資料來源指示變更 (換行、編輯後 Post、Refresh) → DataLink 觸發 OnDataChange → 元件同步顯示。AsDateTime 自動處理型別轉換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved