![]() |
Form nach Prüfung schließen funktioniert nicht
Hallo zusammen!
Ich habe ein seltsames Problem, mit dem ich, wie ich meine, so noch nie konfrontiert wurde. Im OnShow-Event eines Formulars, das ich mit ShowModal aufrufe, führe ich eine Prüfung durch, die unter bestimmten Bedingungen dazu führen soll, dass das Formular sofort wieder geschlossen wird. Hierzu setze ich in diesem Fall ModalResult:=mrCancel Aber dies hat leider keinerlei Auswirkungen, das Formular wird trotzdem angezeigt und wartet auf Eingaben. Wenn ich dagegen einen Schließen-Button betätige, passiert eigentlich genau das Gleiche: Ich setze wieder ModalResult:=mrCancel und siehe da - diesmal wirkt es, und das Formular ist weg! Woran kann das liegen? Danke für jeden Tipp! |
Re: Form nach Prüfung schließen funktioniert nicht
Überlege doch mal, was du da eigentlich machst. Du sagst Windows es soll dein Fenster anzeigen und gleichzeitig sagst du ihm er soll es schließen. Und warum machst du die Überprüfung nicht bevor du das Fenster überhaupt erzeugst bzw. anzeigst? Ich meine, wenn ich in mein Auto einsteige, dann gucke ich ja auch schon vorher, ob ich den Schlüssel habe und gucke nicht erst, wenn ich einsteige. Und selbst, wenn ich erst beim Einsteigen gucke, ob ich den Schlüssel habe, kann ich mich nicht gleichzeitig anschnallen und aussteigen.
|
Re: Form nach Prüfung schließen funktioniert nicht
Schreib Dir eine eigene Methode als public ins Form, die ShowModal() aufruft und auswertet (oder halt entscheidet, ShowModal nicht aufzurufen). Die Rückgabe dieser Funktion kannst Du ja weiterhin als Integer machen, sodass du mrCancel etc. zurückgeben kannst.
|
Re: Form nach Prüfung schließen funktioniert nicht
@Luckie:
Da hast du natürlich recht! Irgendwie scheint das keinen richtigen Sinn zu ergeben, aber es gab eben dennoch Gründe dafür. Klar kann ich das auch anders machen, aber ich will eben auch verstehen, wieso kein Close funktioniert. Und der funktioniert tatsächlich nicht, auch dann nicht, wenn man ihn direkt einprogrammiert. So, und nun stelle man sich mal vor, dass beim Show irgendeine Aktion durchgeführt werden soll, die aus nicht vorhersehbaren Gründen nicht klappt - da wäre ja irgendeine Reaktion erforderlich, oder? Und die wäre bei mir eben sofortiges Schließen gewesen. Es bleibt also die Frage, wieso das nicht funktioniert! Scheint ja irgendwie mit dem aktuellen Event zusammenzuhängen ... |
Re: Form nach Prüfung schließen funktioniert nicht
Im OnShow kann man einfach kein Close aufrufen, genausowenig wie man im OnClose Show aufrufen kann.
Das passt einfach nicht ;) |
Re: Form nach Prüfung schließen funktioniert nicht
Zitat:
Es bleibt dann allerdings die Frage, ab wann man Close aufrufen kann ... weißt du da was Genaueres? |
Re: Form nach Prüfung schließen funktioniert nicht
Wenn ich ein Fenster mit ShowModal aufrufe, nutze ich das nur dazu um Werte zu überprüfen oder zu ändern. Der eigentliche Ablauf, wie Überpüfungen, Berechungen u.s.w. werden in der Hauptunit gemacht, die das Fenster mit ShowModal aufruft. Dadurch komme ich erst garnicht in die Verlegenheit, irgendwelche Prüfroutinen in die Unit des ShowModal-Fenster zu schreiben.
Bei sind die die ShowModal-Fenster Units in 99% der Fälle nicht größer als die Unit selber mit der Form und dessen Kommponenten. Edit: Zitat:
|
Re: Form nach Prüfung schließen funktioniert nicht
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Form nach Prüfung schließen funktioniert nicht
Zitat:
Ich fand bisher ShowModal immer dann ganz gut, wenn es z.B. darum ging, eine Auswahl zu treffen, weil dann tatsächlich eine klare Kapselung des untergeordneten Problems stattfand ... wenn jetzt allerdings der Benutzer sich etwas spät entscheidet, doch keine Auswahl zu treffen, dann muss ich doch irgendwie reagieren dürfen, oder? |
Re: Form nach Prüfung schließen funktioniert nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz