Thema: Delphi Einmal MDI, immer MDI

Einzelnen Beitrag anzeigen

Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#1

Einmal MDI, immer MDI

  Alt 31. Okt 2014, 10:48
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.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat