Hallo zusammen,
hallo Christopher,
nachdem ich ziemlich oft beim Durchsuchen des WWW und des Forums gelesen habe, daß ein Broadcast via PostMessage(HWND_BROADCAST,...) nicht ganz ungefährlich ist, da so JEDE auf dem System laufende Applikation diese Meldung erhält, habe ich mein Problem entsprechend anders gelöst, dank der Mithilfe von Christopher:
Ich suche mir einfach alle Formulare meiner Applikation zusammen und schicke dann expliziert an ihre Handles meine Nachricht, das sieht dann so aus:
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender:TObject);
var
i : integer;
begin
For i := 0 to Application.ComponentCount-1 do begin
if Application.Components[i] is TForm then begin
PostMessage((Application.Components[i] as TForm).Handle,WM_MEINENACHRICHT,Integer(self),0);
end;
end;
end;
In den jeweiligen Formularen binde ich eine eigene Prozedur ein, die die Nachricht WM_MEINENACHRICHT empfängt und auf die gewünschten Komponenten verteilt:
Delphi-Quellcode:
type
TForm1 = class(TForm)
.
.
procedure WMMEINENACHRICHT(var Msg : TMessage);message WM_MEINENACHRICHT;
.
.
end;
implementation
procedure TForm1.WMMEINENACHRICHT(var Msg:Tmessage);
var
i : integer;
begin
for i:= 0 to ComponentCount - 1 do begin
if Components[i] is TMeinStaticText then
begin
(Components[i] as TMeinStaticText).MachWas();
end;
end;
end;
So funktioniert's und die
böse Broadcast-Methode ist vermieden.
Vielen Dank an Christopher für die Hilfe!
Grüße,
Lagopus.