Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

MDI Client form visible=false bleibt nicht

  Alt 27. Mär 2013, 14:55
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

Geändert von Kostas (27. Mär 2013 um 16:01 Uhr)
  Mit Zitat antworten Zitat