Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Message an alle Fenster (MDI Child) schicken - wie?

  Alt 13. Jul 2008, 14:23
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.
  Mit Zitat antworten Zitat