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 von einem MDI-Child aus ein anderes MDI-Child aufrufen (https://www.delphipraxis.net/119304-von-einem-mdi-child-aus-ein-anderes-mdi-child-aufrufen.html)

Colaka 24. Aug 2008 06:04


von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Hallo,

ich habe eine Anwendung mit mehreren MDI-Childs, die ich auch alle vom Hauptformular aus aufrufen kann. Weil eine sinnvolle Bearbeitung des Programms aber eine ganz bestimmte Reihenfolge der MDI-Childs erfordert, möchte ich, daß man von einem bestimmten MDI-Child aus immer nur ein ganz bestimmtes anderes MDI-Child aufrufen kann.

Kann mir hier vielleicht jemand auf die Sprünge helfen?

Danke Ebi

DelphiKlaus 24. Aug 2008 09:18

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Hallo,

ich verstehe Deine Frage nicht ganz. Was meinst Du mit aufrufen? Ich verstehe unter "aufrufen" das Fenster in den Vordergrund holen. aber ich vermute, Du meinst erzeugen. Und ich seh kein Problem, aus einem MDI-Child ein weiteres zu erzeugen. Letztlich wird doch nur der Konstruktor des zu erzeugenden MDI-Childs aufgerufen; und dem dürfte es egal sein, von wo er aufgerufen wird.

MfG

Klaus

Colaka 24. Aug 2008 09:47

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Hallo Klaus,

vielen Dank für Deine Antwort. Das Aufrufen des neuen Fensters funktioniert jetzt prima.

Gescheitert bin ich vor allem deshalb, weil ich zuerst versucht habe, das alte Fenster zu schließen, bevor ich das neue aufrufe. Und das Problem habe ich jetz immer noch. Das alte Fenster bleibt im Hintergrund geöffnet, auch wenn das neue im Vordergrund erscheint. Kannst Du mir vielleicht auch noch einen Tipp geben, wie ich das alte Fenster schließen kann und gleichzeitig ein neues öffnen?

Danke Ebi

MacGuyver 24. Aug 2008 09:59

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Moin auch :hi:

Einfach mit PostMessage WM_CLOSE an das zu schließende Fenster schicken. Dann schließt es sich.

Stefan

Colaka 24. Aug 2008 10:45

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Hallo,

leider bekomme ich das nicht hin. Ich habe es so probiert:

procedure TFUebersicht.Button1Click(Sender: TObject);
begin
PostMessage(FUebersicht.Handle, WM_CLOSE, 0, 0);
FZugang := TFZugang.Create(self);
end;

Damit schließt sich zwar das Fenster "FUebersicht", aber "FZugang" erscheint nicht mehr. Wenn ich den PostMessage-Befehl weglasse, dann erscheint das neue Fenster.

Danke Ebi

TBx 24. Aug 2008 10:54

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Zitat:

Zitat von Colaka
procedure TFUebersicht.Button1Click(Sender: TObject);
begin
PostMessage(FUebersicht.Handle, WM_CLOSE, 0, 0); // ==> hier sägst Du den Ast ab, auf dem Du sitzt !!!
FZugang := TFZugang.Create(self);
end;

Also, erst das neue Fenster generieren, dann das alte schließen

Colaka 24. Aug 2008 11:09

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Hallo,

ich habe es auch schon umgekehrt probiert, also:

procedure TFUebersicht.Button1Click(Sender: TObject);
begin
FZugang := TFZugang.Create(self);
PostMessage(FUebersicht.Handle, WM_CLOSE, 0, 0);
end;

Das Ergebnis ist das gleiche. Selbst wenn ich den PostMessage-Befehl in die FormCreate-Prozedur von "FZugang" verlege, funktioniert es nicht.

Danke Ebi

TBx 24. Aug 2008 11:15

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Zitat:

Zitat von Colaka
Das Ergebnis ist das gleiche. Selbst wenn ich den PostMessage-Befehl in die FormCreate-Prozedur von "FZugang" verlege, funktioniert es nicht.

Versuchs mal im Formshow von der erzeugten Form. Im Create sägst Du noch immer an dem Ast, auf dem Su sitzt.

Hope it helps

onlinekater

Colaka 24. Aug 2008 11:24

Re: von einem MDI-Child aus ein anderes MDI-Child aufrufen
 
Hallo,

ich habe jetzt der Reihe nach OnShow, OnActivate und OnPaint versucht, doch das neue Fenster erscheint nicht. Da muß doch irgendwas an meinem Aufruf "PostMessage(FUebersicht.Handle, WM_CLOSE, 0, 0);" faul sein.

Danke Ebi


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.

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