![]() |
onCloseQuery
Hallo zusammen,
ich habe folgendes Problem: Und zwar möchte ich gerne beim Verlassen meines Forms die eingegebenen Werte überprüfen. Dies habe ich versucht über OnCLoseQuery zu realisieren, so dass bei falschen Werten das Form doch nicht schliesst sondern offen bleibt um diese Werte korrigieren zu können. Doch diese Prüfung soll ja nur dann stattfinden, wenn der User auf -Speichern- geklickt hat. Bei Abbrechen- sollte das Form ohne Prüfung schliessen. Mein Problem ist nun: OnCLoseQuery ist es ziemlich egal, welchen der beiden Button (beides BitButton :!: ) ich gedrückt habe, er prüft immer. Auch über Sender ist nichts zumachen, denn Sender ist in diesem Fall nicht der Button sondern das Form. Hat jemand ne Idee wie ich OnCLoseQuery nun verklickern kann ob geprüft werden soll oder nicht? Oder gibts ne andere Lösung ? |
Re: onCloseQuery
Du könntest beim Buttonklick einfach eine Variable setzen, über die dann in CloseQuery geprüft wird, welcher Button gedrückt wurde.
[EDIT] Mir ist gerade noch eine bessere Idee gekommen: Setze die Eigenschaft ModalResult der beiden Buttons auf mrOK bzw. mrCancel und überprüfe dann in OnCloseQuery die Eigenschaft ModalResult der Form auf diese Werte [/EDIT] |
Re: onCloseQuery
warum packst du die überprüfung nicht in die OnClick-methode des "speichern" buttons und machst darin dann die forum nur dann zu, wenn alles ok ist?
|
Re: onCloseQuery
hab es jetzt so ähnlich gelöst. das problem waren die bitButtons. Die habe ich jetzt aber gegen normale Buttons ausgetauscht. Jetzt kann ich selber bsestimmen ob das Forumlar geschlossen wird oder nicht ;-)
Aber trotzdem Danke |
Re: onCloseQuery
hab gerade bemerkt, dass in meiner Überlegung noch ein Fehler steckt.
Kann es sein, dass folgendes nicht möglich ist. Bzw ich merke ja, dass es nicht möglich ist, aber kennt vielleicht jemand ne Möglichkeit es auf eine ähnliche Weise zu lösen? Das Problem ist, das Formular ist über showModal geöffnet, und bei einem einfachen Close scheint es ja kein ModalResult zu geben.
Delphi-Quellcode:
Also kann ich noch irgendwie während des onClicks-Ereignis das ModalResult ändern?
procedure TFrmLizenz.BitBtnSpeichernClick(Sender: TObject);
begin if checkAll() then FrmLizenz.BitBtnSpeichern.ModalResult := mrOK else FrmLizenz.BitBtnSpeichern.ModalResult := mrNone; end; |
Re: onCloseQuery
Im OnMouseDown Ereignis kannst du ModalResult problemlos ändern
|
Re: onCloseQuery
Moin Mickmack,
wenn Du das ModalResult für den Button nicht im OI zuweist, sondern auf mrNone lässt, kannst Du im OnClick Ereignis das Formular einfach mit
Delphi-Quellcode:
schliessen, wenn die Prüfung erfolgreich war, ansonsten weist Du ModalResult nichts zu.
ModalResult := mrOK
Der Unterschied ist, dass nicht die Eigenschaft ModalResult des Buttons, sondern die des Formulares verwendet wird. |
Re: onCloseQuery
super danke. jetzt gehts :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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