Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Event abbrechen (https://www.delphipraxis.net/77830-event-abbrechen.html)

trashcandesign 25. Sep 2006 14:42


Event abbrechen
 
Hi,

ich habe verschiedene Mask-Felder, in die je ein Datums-Wert eingetragen werden soll.
Im OnExit-Event überprüfe ich dann die Eingabe auf Richtigkeit.

Wenn ich aber das Feld nicht mit einem Tab verlasse, sondern zum Beispiel mit einem Klick auf einen anderen Button wird zwar auch diese Überprüfung durchgeführt, aber eben auch die den Button zugrunde liegende Funktion.
Wenn diese Funktion zum Beispiel 'schließen' ist, dann bekomme ich einen Hinweis, das das Eingegebene Datum nicht dem Format entspricht, aber direkt danach wird dann auch das Programm geschlossen.

Wie könnte ich dem Programm sagen, dass er bei einem falschen Wert nichts mehr machen soll?

Oh Gott, kann das einer verstehen? Wenn nich versuche ich es nochmal genauer und sinnvoller zu schreiben *g*

marabu 25. Sep 2006 15:50

Re: Event abbrechen
 
Hallo,

ich würde die Eigenschaft Enabled des Button erst dann auf True setzen, wenn deine Bedingungen erfüllt sind.

Grüße vom marabu

trashcandesign 26. Sep 2006 07:04

Re: Event abbrechen
 
Hi,

das Problem ist, dass ich viele verschiedene Felder habe, deren Werte nach dem Verlassen in eine Datenbank geschrieben werden. allerdings muss nicht jedes Feld ausgefüllt werden. Deswegen kann ich nicht sagen, der Button ist inaktiv bis das Feld gefüllt ist.

Gibt es nicht zufällig eine Window-Message, dass das Schließen der Applikation, bzw. die Aktion des Buttons abbricht?

marabu 26. Sep 2006 07:10

Re: Event abbrechen
 
Versuche es mal mit dem Ereignis OnCloseQuery() der Form.

Grüße vom marabu

trashcandesign 26. Sep 2006 07:48

Re: Event abbrechen
 
Da das dynamisch sein soll kann ich im OnClose leider die Felder nicht auf Richtigkeit prüfen.
Also sowas nach dem Motto geht leider nicht:

Delphi-Quellcode:
if CheckField(TMaskEdit) then TForm(Hauptformular).Release

freak4fun 26. Sep 2006 07:57

Re: Event abbrechen
 
Wie wäre es mit einer Variable die du auf True setzt, wenn eine Aktion durchgeführt werden kann und auf False, wenn nicht. Ich glaube, du musst dir selbst erstmal klar werden, wann genau eine Aktion durchgeführt werden kann. Dann kannst du nach diesen Kriterien auch zB den Button enabled machen, oder nicht. :)

MfG
freak

trashcandesign 26. Sep 2006 08:27

Re: Event abbrechen
 
Dann müsste ich also beim OnEnter-Event eines jeden Edit-, Maskenfeldes eine Variable auf false setzen und dann, wenn ich die Form schließen, oder einen Button Drücken möchte überprüfen, ob ich die Variable nicht vielleicht wieder auf true setzen kann?

Hm.... müsste ich mal ausprobieren... :gruebel:

freak4fun 26. Sep 2006 16:21

Re: Event abbrechen
 
Du könntest auch allen OnExit-Evnts die gleiche Methode zuweisen. In der Methode überprüfst du ALLE Werte. Zum Beispiel:
Delphi-Quellcode:
procedure GlobalOnExit;
begin
  Alles Richtig := (Wert1 = Richtig) and (Wert2 = Richtig);
end;
Und überall, wo es wichtig ist, ob alle Werte richtig sind, kannst du dann die Variable "AllesRichtig" abfragen.

MfG
freak

marabu 26. Sep 2006 17:26

Re: Event abbrechen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Als Nachschlag zu meinem Beitrag #2 hier eine DemoForm, die das Konzept verdeutlicht. Drei Edit-Felder und jedes hat eine eigene Validierung. Fehlerhafte Eingaben werden farbcodiert und im tag property vermerkt, wo sie vom OnUpdate() Event der mit dem OKButton verknüpften Action ausgewertet werden. Andere Standardtechniken, wie shared events, lassen sich zusätzlich anwenden.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 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