掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他のオブジェクトの変更を知りたい (ID:22247)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TQuery - TDataSource - TDBGrid のように TQueryが変更になるとTDBGridの表示が更新されるみたいな コンポーネントが作りたいのですが やり方がわかりません。 どのように作ればよいか教えてください。 自分なりに考えてメッセージを送ればよいのではと思い サンプルをつくって見ましたがうまくいきません。 TQuery -> TSendHoge , TDBGrid -> TGetHoge のイメージです。 方向性から間違えているでしょうか? Const WM_SendMsg = WM_USER + 1234; type TSendHoge = class(TControl) public data: String; //値 procedure Setdata(AData: String); //メッセージ送信 end; type TGetHoge = class(TLabel) private SendHoge: TSendHoge; public procedure View; //値をCaptionに表示 property hoge: TSendHoge read SendHoge write SendHoge; protected procedure MessegeGet(var Msg: TMsg); message WM_SendMsg; end; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); private { Private 宣言 } SendHoge: TSendHoge; GetHoge: TGetHoge; public { Public 宣言 } protected procedure MessegeGet(var Msg: TMsg); message WM_SendMsg; end; var Form1: TForm1; implementation {$R *.dfm} procedure TSendHoge.Setdata(AData: String); var i: Integer; begin //値を変更 data := AData; //TGetHogeへ更新依頼のつもり //反応なし PostMessage(HWND_BROADCAST, WM_SendMsg, 0, 0); //Form1が反応 for i:=0 to Application.ComponentCount-1 do begin (Application.Components[i] as TControl).Perform(WM_SendMsg, 0, 0); end; end; procedure TGetHoge.View; begin Caption := hoge.data; end; procedure TGetHoge.MessegeGet(var Msg: TMsg); begin ShowMessage('GetHoge'); View; //Caption更新 end; procedure TForm1.MessegeGet(var Msg: TMsg); begin ShowMessage('Form1'); end; procedure TForm1.FormCreate(Sender: TObject); begin SendHoge := TSendHoge.Create(Self); GetHoge := TGetHoge.Create(Self); SendHoge.data := '1234'; GetHoge.Parent := Form1; GetHoge.hoge := SendHoge; GetHoge.View; 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;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.