掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他のオブジェクトの変更を知りたい (ID:22253)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
スレ最初にあったTGetHogeで、TSendHogeを保持する(部分のみ)例 ようするに、参照するのみの変数を確保する。 当然、TSendHogeの変更は検知できません。 ま、参考程度にどうぞ。 type TGetHoge = class(TLabel) private FSendHoge: TSendHoge; protected //コンポーネントの生成・破棄の通知を受け取る procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure SetSendHoge(aSendHoge: TSendHoge); public property Hoge: TSendHoge read FSendHoge write SetSendHoge; end; procedure TGetHoge.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if Operation = opRemove then begin //コンポーネントが破棄される //TComponentから継承されたクラスでないと発生しませんし、 //「THoge.Create(nil)」のように親を指定していない場合、発生しない(はず) if FSendHoge = AComponent then begin //参照解除しておかないと、存在しないインスタンスにアクセスし、 //アクセス違反になります。 FSendHoge := nil; end; end else begin //コンポーネントが生成される //あまり使ったことないです end; end; procedure TGetHoge.SetSendHoge(aSendHoge: TSendHoge); begin //これだけの場合 //property (略) write FSendHoge; で記述してもOK //メソッドを用意する必要がないので FSendHoge := aSendHoge; //SendHoge が変更されることにより、表示が変わったりする場合 //このタイミングで更新するといい。 end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.