フォーム内のすべてのコントロールにメッセージをブロードキャストする

提供: RAD Studio
移動先: 案内検索

メッセージの送信 への移動


フォームなどのコンテナにあるすべてのコントロールに影響を及ぼすグローバルな設定をコンポーネントで変更するときは、それらのコントロールにメッセージを送信して各コントロールが自分自身を適切に更新できるようにするとよいでしょう。 必ずしもすべてのコントロールがこの通知に応答する必要があるわけではありませんが、メッセージをブロードキャストすることで、応答方法がわかっているすべてのコントロールに通知することができます。それ以外のコントロールでは、メッセージを無視してかまいません。

別のコントロールにあるすべてのコントロールにメッセージをブロードキャストするには、Broadcast メソッドを使用します。メッセージをブロードキャストする前に、伝えたい情報をメッセージ レコードに格納します。

var
Msg: TMessage;
begin
  Msg.Msg := MY_MYCUSTOMMESSAGE;
  Msg.WParam := 0;
  Msg.LParam := Longint(Self);
  Msg.Result := 0;
TMessage Msg;
Msg.Msg = MY_MYCUSTOMMESSAGE;
Msg.WParam = 0;
Msg.LParam = (int)(this);
Msg.Result = 0;

次に、通知先となるすべてのコントロールの親に、このメッセージ レコードを渡します。これは、アプリケーション内のどのようなコントロールでもかまいません。たとえば、次のように、作成中のコントロールの親でもかまいません。

Parent.Broadcast(Msg);
Parent->Broadcast(Msg);

次のように、現在のコントロールが含まれているフォームでもかまいません。

GetParentForm(self).Broadcast(Msg);
GetParentForm(this)->Broadcast(Msg);

次のように、アクティブなフォームでもかまいません。

Screen.ActiveForm.Broadcast(Msg);
Screen->ActiveForm->Broadcast(Msg);

次のように、アプリケーション内のすべてのフォームでさえかまいません。

for I:= 0 to Screen.FormCount - 1 do
  Screen.Forms[I].Broadcast(Msg);
for (int i = 0; i < Screen->FormCount; i++)
  Screen->Forms[i]->Broadcast(Msg);

関連項目