Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kommunikation Mutter - Tochterformular (https://www.delphipraxis.net/99466-kommunikation-mutter-tochterformular.html)

oghma 12. Sep 2007 16:06


Kommunikation Mutter - Tochterformular
 
Hallo!

Ich habe 2 Formulare. Eines wird immer gezeigt, eines wird bei Bedarf eingeblendet und versteckt (mittels schow und hide).

Die Kommunikation Mutter->Tochter ist klar. Ich hab Unit2 in den uses und somit kann ich einfach über Form2.Funktion die Funktionen starten.

Jetzt würde ich gerne beim Tochterformular im OnHide-Event eine Funktion im Mutterformular aufrufen. Wie mach ich das?

Danke,
Oghma

SirThornberry 12. Sep 2007 16:13

Re: Kommunikation Mutter - Tochterformular
 
Die schönste Variante finde ich per Event(Callback):
Delphi-Quellcode:
TForm2 = class(TForm)
[...]
public
  ClbOnHide: TNotifyEvent;
end;
[...]
procedure TForm2.FormHide(Sender: TObject);
begin
  if Assigned(ClbOnHide) then //Entspricht: if (ClbOnHide <> nil) then
    ClbOnHide(Self);
end;
in Form1 sieht es dann so aus:
Delphi-Quellcode:
TForm1 = class(TForm)
[...]
private
  fYourSubForm: TForm2;
  procedure OnSubFormHideClb(Sender: TObject);
end;
[...]
procedure TForm1.OnSubFormHideClb(Sender: TObject);
begin
  ShowMessage('Form2 wurde ausgeblendet');
end;
[...]
procedure TForm1.FormCreate(Sender:TObject);
begin
  fYourSubForm := TForm2.Create(Self);
  fYourSubForm.ClbOnHide := OnSubFormHideClb;
end;
Ich finde diese Variante so schön weil es keine Querverweise bei Units gibts und auch die Objectorientierung gewahrt bleibt da nicht auf globale Variablen zugegriffen werden muss.

dominikkv 12. Sep 2007 16:14

Re: Kommunikation Mutter - Tochterformular
 
du musst die mutter in den uses im implementation-Bereich einfügen
Delphi-Quellcode:
...
implementation

uses
  Mutter;

{$R *.dfm}
...
und dann wie gewohnt

oghma 12. Sep 2007 16:19

Re: Kommunikation Mutter - Tochterformular
 
Hallo!

Wahnsinn, ihr seid schnell! Dickes Lob. Ich hab es jetzt mal mittels uses im implementation Teil gemacht. Aber das CallBack werd ich mir auch noch genauer anschauen.

Danke,
Oghma

RavenIV 12. Sep 2007 17:02

Re: Kommunikation Mutter - Tochterformular
 
Du kannst auch mit Windows-Messages arbeiten.
Dazu muss das Empfängerform einen Message-Handler (Message-Methode) implementieren.
Dann kannst Du mit SendMessage und PostMessage das Form steuern.

SirThornberry 12. Sep 2007 17:06

Re: Kommunikation Mutter - Tochterformular
 
wobei bei Messages auch das Problem besteht, dass wenn man vom Tochterformular zum Mutterformular was senden will, das Tochterformular das Mutterformular kennen muss. Natürlich greifen da viele auf die globale Variable Form1 und Form2 zu aber dann gibt es auch riesen probleme wenn man mehrere Instanzen vom Mutterformular hat weil das Tochterformular dann nicht weiß zu welchem Mutterformular es gehört.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz