Hallo Zusammen,
sorry für den blöden Titel.
Es ist etwa kompliziert das Problem zu beschreiben und muss deshalb leider etwas ausholen.
[Edit] Das Problem vorab: Wenn ein MDI child Form das Property visible=false gesetzt wird, bleibt false nur solange das Form
nicht erneu geöffnet wird. Wird es neu geöffnet, ist visible wieder auf true.
Ich habe eine
MDI Anwendung mit XE2 geschrieben. Mir ist bekannt dass
MDI Client forms visible=true sind. Ich habe einen Fall indem ich die gleiche Form als
MDI child oder als modale form benötige. Als Beispiel das Adressenform. Unter Stammdaten öffne ich die Form als
MDI child. Wenn ich jedoch eine Rechnung erstelle und möchte auf das Adressenform zugreifen um eine Adresse auszuwählen bzw. eine neue anlegen und Übernehmen, wir die AdressenForm modal geöffnet. Die gleiche Form also einmal
MDI und einmal als modales Fenster.
Dieses Scenario funktionierte mit Delphi5 einwandfrei.
Unter Delphi XE2 nicht mehr so einfach. Das Problem ist, wenn das AdressenForm.visible=true oder false ist, kann ich die Form als
MDI child öffnen. Wenn ich eine neue Instanz erzeugen und das Form direkt nach dem erzeugen auf visible=false Setze, wird das Form nach dem erzeugen erzeugt, angezeigt, wieder unsichbar gemacht und durch ShowModal erneut angezeigt. Somit flackert die Form. Ich muss das Form auf visible=false setzen damit ShowModal funktioniert. ShowModal erwartet visible=false.
Wenn ich die Form über den Inspektor auf visible=False setze und das Form so speichere funktioniert alles einwandfrei. Sobald ich das Form in Delphi öffne, wird das Property automatisch auf visible=True gesetzt. Wenn ich es bemerke, ist alles gut. Denke ich nicht daran, und stelle visible=false flackert die Form beim Öffnen.
Das könnte ein Delphi Bug oder sogar auch so gewollt sein.
Wie gesagt, unter Delphi5 ist dieses Verhalten nicht zu beobachten.
Kennt jemand dieses Problem?
Gruß Kostas