Announcement

Collapse
No announcement yet.

Vergleich, ob Max-Wert auch wirklich größer als der Min-Wert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vergleich, ob Max-Wert auch wirklich größer als der Min-Wert

    Hallo,

    ich habe in einer Datenbank-Anwendung immer wieder Felder die einen "Von - Bis" Bereich angeben. Wie kann ich nun sicherstellen, dass der Benutzer im "Von"-Feld auch wirklich den kleineren Wert eingibt.
    Das OnExit-Ereignis wäre optimal, scheidet aber leider aus, da beim Klick auf den Save-Button von TNavigator dieses Ereignis nicht aufgerufen wird. Natürlich könnte ich das Klick-Ereignis abfangen und dort den Focus verschieben oder die OnExit-Procedure direkt aufrufen.
    BeforePost ist nicht so schön, da dann die Auswertung erst erfolgt, wenn der Benutzer mit der Bearbeitung fertig ist. Mir wäre es aber am liebsten, er würde auf die Fehleingabe gleich hingewiesen, wenn er die Bearbeitung dieser beiden Felder beendet.
    Gibt es eine einfach Lösung?

    Gruß und Danke, Gerd

  • #2
    Hallo Gerd,

    ich würde eine Funktion auf BeforePost verwenden.
    Etwa in der Art :

    if dbedit1.text < dbedit2.text then
    table1.post
    else
    schowmessage('Feld1 muss kleiner sein ...');

    Ich hoffe, ich hab Dein Problem richtig verstanden

    Comment


    • #3
      Hallo Michael,

      leider nicht ganz. Das mit BeforePost ist mir bekannt. Das unschöne daran ist aber, dass diese Überprüfung für einige von-bis-Felder auf der Maske erfolgen soll. Deshalb wäre es mir am liebsten, ich könnte diese Prüfung gleich vornehmen, wenn der Benutzer die Eingabe in einem der zusammengehörigen Felder beenden will. Ist die Prüfung negativ, kann das Feld gar nicht verlassen werden. Dies würde mit OnExit funktionieren, wenn dieses Ereignis auch ausgelöst würde, wenn mann auf den Save-Button drückt. Dies ist aberleider nicht der Fall und so würden die eigentlich falschen Daten einfach gespeichert werden.

      Gruß Ger

      Comment


      • #4
        Hallo,

        anstelle das Problem in der Benutzeroberfläche (TDBEdit, Save-Button) lösen zu wollen, ist die Plausibilitätsprüfung direkt auf der Datenebene (TField-Instanzen für diese Tabelle) eleganter. Wenn persistente TFields angelegt werden, steht dort die Eigenschaft <b>OnValidate</b> zur Verfügung. In der Delphi-Hilfe liest sich das so: "<i>Direkt vor dem Speichern der Daten im Datensatzpuffer wird das Ereignis OnValidate ausgelöst. Schreiben Sie eine Ereignisbehandlungsroutine, welche die Änderungen an den Felddaten überprüft, bevor die Daten in den Datensatzpuffer geschrieben werden. Während der Eingabe von Daten durch den Benutzer können diese mit Hilfe der Eigenschaft EditMask zeichenweise geprüft werden. Eine Anwendung kann mit OnValidate die Daten insgesamt prüfen.</i>"

        Comment

        Working...
        X