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 Neues Fenster nach Aufruf eines MDIChilds (https://www.delphipraxis.net/102228-neues-fenster-nach-aufruf-eines-mdichilds.html)

handson 25. Okt 2007 10:28


Neues Fenster nach Aufruf eines MDIChilds
 
Hallo!

Vielleicht kann mit jemand einen Tipp geben, wie ich folgendes Problem lösen kann:

Ich habe eine MDI-Anwendung. Die MDIChild-Fenster werden jeweils aus BPLs gelesen und angezeigt. Diese MDIChilds werden immer maximiert angezeigt und sollen nicht die Größe ändern. Einen Schönheitsfehler haben die Dinger, wenn sie geöffnet werden, dann sind sie nicht maximiert und werden erst nach der Anzeige autom. vergrößert. Hat zur Folge, dass man diese Veränderung des Fensters ganz kurz sieht. Das habe ich nie wegbekommen und weiss auch nicht, wie ich es hinbekommen kann.
So, jetzt mein eigentliches Problem: Nach dem Öffnen eines MDIChilds soll aus diesem Fenster ein weiters geöffnet werden, sofort nachdem das Fenster angezeigt werden. Das Fenster wird auch angezeigt, nur im Hintergrund sieht man das MDIChild, wo es noch nicht maximiert ist. Es maximiert sich erst automatisch, nachdem ich dieses Extrafenster geschlossen habe. Also, wie bekomme ich es hin, dass dieses Extrafenster erst dann angezeigt wird, wenn sich das MDIChild im Hintergrund vollständig maximiert hat?

Stephan

Nuclear-Ping 25. Okt 2007 11:02

Re: Neues Fenster nach Aufruf eines MDIChilds
 
Wie erstellst du denn das neue Fenster?
Und wie wird dein jetziges MDIChild maximiert? Durch FormStyle im Objektinspektor oder setzt du es erst zur Laufzeit?

handson 25. Okt 2007 11:38

Re: Neues Fenster nach Aufruf eines MDIChilds
 
Das Maximieren mache ich sowohl im Object-Manager (WindowsState) als auch während der Laufzeit:

Delphi-Quellcode:
procedure TFormBuchungen.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or WS_MAXIMIZE;
  Params.Style := Params.Style and not WS_SYSMENU;
end;
Das Extra-Fenster rufe ich jetzt unter OnActivate auf, bei den anderen Ereignisse hatte ich das auch schon versucht, leider erfolglos.

Delphi-Quellcode:
 
 
procedure TFormBuchungen.FormActivate(Sender: TObject);
begin
:
:
    FormBuchDatum := TFormBuchDatum.Create(self);
    Try
      FormBuchDatum.ShowModal;
      Buchungsdatum.Caption := DateToStr(FormBuchDatum.Buchdatum);
    Finally
      FormBuchDatum.Free;
    End;
:
:
End;

Nuclear-Ping 25. Okt 2007 12:27

Re: Neues Fenster nach Aufruf eines MDIChilds
 
WindowState wars ... sorry, verwechselt. :P

Im OnActivate würde ich das nicht reinpacken, da afaik das jedesmal aufgerufen wird, wenn die Form den Fokus bekommt. Was ist mit OnShow?
Weiterhin ist ShowModal für das Problem verantwortlich, dass sich die andere Form erst dann maximiert, wenn du die neue Form schließt.

handson 25. Okt 2007 13:09

Re: Neues Fenster nach Aufruf eines MDIChilds
 
Naja, das ist auch ein netter Effekt: Jetzt kommt erst das Extra-Fenster bevor das MDIChild angezeigt wird.
Es soll aber genau umgekehrt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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