Eine Botschaft an alle Steuerelemente eines Formulars senden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Botschaften senden


Sollte Ihre Komponente globale Einstellungen ändern, die sämtliche Steuerelemente in einem Formular betreffen, ist es erforderlich, diejenigen Steuerelemente zu benachrichtigen, die entsprechend reagieren und sich selbst aktualisieren können. Dazu ist es am einfachsten, alle Steuerelemente zu informieren, auch wenn einige die Botschaft ignorieren.

Sie versenden eine Botschaft an sämtliche Steuerelemente innerhalb eines anderen Steuerelements mit der Methode Broadcast. Zuvor geben Sie in einem Botschaftsdatensatz an, welche Informationen zu übertragen sind.

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;

Anschließend übergeben Sie diesen Botschaftsdatensatz an das übergeordnete Element aller Steuerelemente, die zu benachrichtigen sind. Es kann sich beispielsweise um das übergeordnete Element Ihres aktuellen Steuerelements handeln:

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

Es kann sich um das Formular handeln, das Ihr Steuerelement enthält:

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

Es kann sich um das aktive Formular handeln:

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

Es kann sich sogar um alle Formulare in der Anwendung handeln:

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);

Siehe auch