Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Aus welcher Form wurde das Modale Fenster geöffnet?


BrixxtoN - Di 21.09.10 13:06
Titel: Aus welcher Form wurde das Modale Fenster geöffnet?
Hallo,

ich habe drei Forms, aus zwei wird die dritte Form Modal geöffnet.

Form3 := TForm3.Create(self);
Form3.ShowModal;
Form3.Release;

Gibt es eine möglichkeit in der dritten Form bei FormCreate zu erfahren aus welcher Form die geöffnet wurde.

Oder muss ich da eine Variable an die dritte Form übergeben.


Tilman - Di 21.09.10 13:11

Statt "Self" "Sender" eintragen, dann kannst du OnCreate den Sender auswerten, er zeigt dann auf das aufrufende Formular. Du kannst z.B. die Eigenschaft "Tag" setzen. Du musst "Sender" dann allerdings noch nach TComponent casten.


BrixxtoN - Di 21.09.10 13:37

Habe das schon so probiert, aber das funktioniert nicht wie ich mir das gedacht habe.

Form1:
Form3 := TForm3.Create(Form1);
Form3.ShowModal;
Form3.Release;

Form3:
procedure TForm3.FormCreate(Sender: TObject);
begin
ShowMessage(Sender.UnitName);
end;

Bei ShowMessage wird noch immer der UnitName von Form3 zurück gegeben.


JoelH - Di 21.09.10 13:46

überlade doch einfach den Constructor der der Modalform und übergib einen eindeutigen Integerwert oder sowas.


Gausi - Di 21.09.10 13:57

user profile iconBrixxtoN hat folgendes geschrieben Zum zitierten Posting springen:
Oder muss ich da eine Variable an die dritte Form übergeben.

Das dürfte die einfachste Möglichkeit sein. ;-)


BrixxtoN - Di 21.09.10 14:01

Das denke ich mir auch.

Ich dachte nur es würde vieleicht eine einfachere möglichkeit geben z.B. über Sender, aber das hat irgend wie nicht funktioniert.

Das reicht mir alls Antwort, allen Danke für die Hilfe.


Tilman - Di 21.09.10 14:15

Habs grad mal ausprobiert, mit property will es unter Delphi 7 bei mir nicht funktionieren, warum auch immer, aber so geht es:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
type
  TForm2 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure ShowModalvar(v: String);
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure tForm2.ShowModalvar;
begin
  self.Caption := v;
  self.ShowModal;
end;


und

Form3 := TForm2.Create(self);
form3.ShowModalvar('blabla');
Form3.Release;


bummi - Di 21.09.10 15:57

Den Anzeigenden bekommst Du nicht aber den Owner ..

Delphi-Quelltext
1:
  if Assigned(Owner) then Showmessage(Owner.Unitname);