![]() |
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* |
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 |
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? |
Re: Event abbrechen
Versuche es mal mit dem Ereignis OnCloseQuery() der Form.
Grüße vom marabu |
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
|
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 |
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: |
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:
Und überall, wo es wichtig ist, ob alle Werte richtig sind, kannst du dann die Variable "AllesRichtig" abfragen.
procedure GlobalOnExit;
begin Alles Richtig := (Wert1 = Richtig) and (Wert2 = Richtig); end; MfG freak |
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 02:29 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