掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他のオブジェクトの変更を知りたい (ID:22249)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たしかに少し伝わりにくい質問ですね。 オレ負け犬デス さんの言うとおり > これが通用するのは、ウインドウハンドルを持っているコンポーネント・・・ > 基本的に、TWinControlから継承されたコンポーネントだけです。 ですし、クラスの連携に メッセージを使うなんてことは全く必要ないのですが > (1)プロパティ値が変更になったとき、ソレを検出したいのか、 たぶん、これなのかな。 お望みの機能を実現する簡単なコードを書くために TGetHogeにTSendHogeを所有させるのではなく TSendHogeにTGetHogeを所有させてみました。 どうぞ。 type TGetHoge = class; TSendHoge = class(TControl) public FData: String; FGetHoge: TGetHoge; constructor Create; procedure Setdata(AData: String); property Gethoge: TGetHoge read FGetHoge write FGetHoge; end; TGetHoge = class(TLabel) public procedure View(ACaption: String); //値をCaptionに表示 end; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); private SendHoge: TSendHoge; GetHoge: TGetHoge; public end; var Form1: TForm1; implementation {$R *.dfm} constructor TSendHoge.Create; begin FGetHoge := nil; end; procedure TSendHoge.Setdata(AData: String); var i: Integer; begin //値を変更 FData := AData; if Assigned(FGetHoge) then begin FGetHoge.View(FData); end; end; procedure TGetHoge.View(ACaption: String); begin Self.Caption := ACaption; end; procedure TForm1.FormCreate(Sender: TObject); begin SendHoge := TSendHoge.Create(); GetHoge := TGetHoge.Create(Self); GetHoge.Parent := Form1; SendHoge.Gethoge := GetHoge; SendHoge.Setdata('1234'); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin SendHoge.Free; GetHoge.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin SendHoge.Setdata('test'); end; 余談ですが なんでメッセージ投げて情報伝達しようとか 互いの所有部分のコードが逆だったりするのか理由がさっぱり。 VC++あたりで勉強したんでしょうか... Delphiでオブジェクト指向を学ぶともっと素直に理解できるのに...
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.