データ リンクの初期化
データ リンクの追加 への移動
データ対応コントロールでは、その存続期間を通して、データ リンクへのアクセスが必要なため、コントロール自身のコンストラクタの一部としてデータ リンク オブジェクトを作成し、また、コントロール自身が破棄される前にデータ リンク オブジェクトを破棄する必要があります。
以下では、カレンダーの Create メソッドと Destroy メソッドをオーバーライドして、データ リンク オブジェクトの作成と破棄をそれぞれ行います。
type TDBCalendar = class(TSampleCalendar) public { constructors and destructors are always public } constructor Create(AOwner: TComponent); override; destructor Destroy; override; . . . end; . . . constructor TDBCalendar.Create(AOwner: TComponent); begin inherited Create(AOwner); { always call the inherited constructor first } FDataLink := TFieldDataLink.Create; { construct the datalink object } FDataLink.Control := self; {let the datalink know about the calendar } FReadOnly := True; { this is already here } end; destructor TDBCalendar.Destroy; begin FDataLink.Free; { always destroy owned objects first... } inherited Destroy; { ...then call inherited destructor } end;
class PACKAGE TDBCalendar : public TSampleCalendar { public: virtual __fastcall TDBCalendar(TComponent *Owner); __fastcall ~TDBCalendar(); }; __fastcall TDBCalendar::TDBCalendar(TComponent* Owner) : TSampleCalendar(Owner) { FReadOnly = true; FDataLink = new TFieldDataLink(); FDataLink->Control = this; } __fastcall TDBCalendar::~TDBCalendar() { FDataLink->Control = NULL; FDataLink->OnUpdateData = NULL; delete FDataLink; }
これで、データ リンクが完成しましたが、リンク先のフィールドから読み取るデータをコントロールにまだ指示していません。次のセクションでは、その方法について説明します。