Warum willst du eine Message schicken wenn du doch auch ganz objekt-orientiert eine Methode aufrufen kannst??
Delphi-Quellcode:
procedure TMainForm.ComeOnClick(Sender: TObject);
var
i: Integer;
child : TMyChildForm;
begin
for i := 0 to Pred(Screen.FormCount) do
begin
if Screen.Forms[i] is TMyChildForm then
begin
child := TMyChildForm(Screen.Forms[i]); // mit der Zwischenvariable geht es einfacher
child.SaveToDirectory(verzeichnis); // ChildForm soll seine Daten im angeg. Verzeichnis speichern
child.Caption := x.Caption + ' [saved]'; // Caption des Formulars ändern
end;
end;
end;
Ich hoffe, du siehst, dass dieser Weg besser ist, als nur eine Windows-Message zu schicken (obwohl beides sehr ähnlich ist).
Vorallem auch deshalb, weil du so auch typsicher Argumente übergeben kannst und ganz einfach Daten vom ChildFormular abholen kannst.
Angenommen du hast verschiedene ChildForm Klassen.
Wenn du alle ChildForm Klassen von einer gemeinsamen Basisklasse ableitest, dann kannst du dort die notwendigen gemeinsamen Methoden und Properties implementieren.
Angenommen deine Anwendung ist schon fertig und du kannst die Klassenhierarchie nicht ändern.
Deshalb dein Ansatz mit den Messages.
Dann gibt es die Möglichkeit, dass deine Formulare ein zusätzliches Interface implementieren.