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

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

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


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

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

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

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

Delphi:
 Parent.Broadcast(Msg);
C++:
 Parent->Broadcast(&Msg);

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

Delphi:
 GetParentForm(self).Broadcast(Msg);
C++:
 GetParentForm(this)->Broadcast(&Msg);

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

Delphi:
 Screen.ActiveForm.Broadcast(Msg);
C++:
 Screen->ActiveForm->Broadcast(&Msg);

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

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

関連項目