Eine Botschaft an alle Steuerelemente eines Formulars senden
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.
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;
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:
Parent.Broadcast(Msg);
Parent->Broadcast(&Msg);
Es kann sich um das Formular handeln, das Ihr Steuerelement enthält:
GetParentForm(self).Broadcast(Msg);
GetParentForm(this)->Broadcast(&Msg);
Es kann sich um das aktive Formular handeln:
Screen.ActiveForm.Broadcast(Msg);
Screen->ActiveForm->Broadcast(&Msg);
Es kann sich sogar um alle Formulare in der Anwendung handeln:
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);