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 Einmal MDI, immer MDI (https://www.delphipraxis.net/182554-einmal-mdi-immer-mdi.html)

bernau 31. Okt 2014 10:48

Einmal MDI, immer MDI
 
Delphi 2007:

Ich habe ein eigenartiges Problem, welches man auch leicht nachvollziehen kann.

Ich erstelle eine normale VCL-Formularanwendung mit zwei Forms. Auf dem Mainform ist ein Button, mit dem ich das zweite Form erzeuge und anzeige.

Delphi-Quellcode:
procedure TFormTest1.Button1Click(Sender: TObject);
var
  lFormTest2:TFormTest2;
begin
  lFormTest2:=TFormTest2.Create(Self);
  lFormTest2.show; // Muss aufgerufen werden, damit das Form angezeigt wird
end;

Danach folgender Test:
FormTest1 bekommt als Formstyle den Wert fsMDIForm und FormTest2 als Formstyle den Wert fsMDIChild. Der Folgende Code funktioniert wie erwartet. TFormTest2 wird als MDIChild angezeigt.

Delphi-Quellcode:
procedure TFormTest1.Button1Click(Sender: TObject);
var
  lFormTest2:TFormTest2;
begin
  lFormTest2:=TFormTest2.Create(Self);
  // lFormTest2.show; -> Muss nicht aufgerufen werden, da MDIChilds beim erzeugen automatisch angezeigt werden.
end;
Nun mache ich alles Rückgängig. Beide Forms bekommen als Formstyle wieder fsNormal.

Nun passiert aber etwas eigenartiges. Wenn ich das zweite Codebeispiel aufrufe, sollte ja erwartungsgemäß des FormTest2 "nicht" angezeigt werden, da dafür ja "show" zuständig ist. Dem ist aber nicht so. Das Form wird trotzdem angezeigt. Es zwar korrekterweise als normales Form und nicht als MDIForm angezeigt. Aber eigendlich dürfe es ja garnicht erscheinen.

Kann mir das jemand mal erklären.

Sir Rufo 31. Okt 2014 11:13

AW: Einmal MDI, immer MDI
 
Durch das Setzen von
Delphi-Quellcode:
fsMDIchild
wird auch die Eigenschaft
Delphi-Quellcode:
Visible
geändert und wenn es danach geht, dann muss die Form auch angezeigt werden ;)

bernau 31. Okt 2014 11:36

AW: Einmal MDI, immer MDI
 
Unglaublich. Da sucht man stundenlang. Denkt, man hat einen Bug gefunden. Und dann ist es so etwas triviales.

Danke!


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