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.