Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi onCloseQuery (https://www.delphipraxis.net/12233-onclosequery.html)

mickmack 23. Nov 2003 16:10


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 ?

Niko 23. Nov 2003 16:12

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]

Tiefflieger 23. Nov 2003 17:41

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?

mickmack 23. Nov 2003 17:44

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

mickmack 23. Nov 2003 21:21

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:
procedure TFrmLizenz.BitBtnSpeichernClick(Sender: TObject);
begin
  if checkAll() then
    FrmLizenz.BitBtnSpeichern.ModalResult := mrOK
  else
    FrmLizenz.BitBtnSpeichern.ModalResult := mrNone;
end;
Also kann ich noch irgendwie während des onClicks-Ereignis das ModalResult ändern?

Kamil 23. Nov 2003 21:35

Re: onCloseQuery
 
Im OnMouseDown Ereignis kannst du ModalResult problemlos ändern

Christian Seehase 23. Nov 2003 21:38

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:
ModalResult := mrOK
schliessen, wenn die Prüfung erfolgreich war, ansonsten weist Du ModalResult nichts zu.
Der Unterschied ist, dass nicht die Eigenschaft ModalResult des Buttons, sondern die des Formulares verwendet wird.

mickmack 24. Nov 2003 07:58

Re: onCloseQuery
 
super danke. jetzt gehts :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz