Hallo,
ich bin gerade auf ein Phänomen gestoßen, dass ich mir nicht erklären kann. Aber vielleicht hat jemand von Euch das auch schon gehabt:
In einer Maske gibt es ein Feld "X" vom Typ Kombinationsfeld. Es ist das erste Feld in der Maske, was bedeutet, dass beim Aufruf der Maske im Edit-Modus der Cursor in diesem Feld steht. Die Werte-Liste wird über einen DBLookUp dynamisch gefüllt. Gleich rechts neben dem Feld befindet sich eine Schaltfläche.
Da es sich beim Feld "X" um ein Pflicht-Feld handelt, wird dies beim Verlassen im OnBlur geprüft und der Cursor wird in das Feld zurückversetzt, wenn es ohne Wert verlassen wurde. Wird nun bei einem neuen Dokument das Feld mit einem Wert versorgt und dann verlassen, zieht der OnChange-Event und macht, was er soll.
Wird aber ein bestehendes Dokument aufgerufen und in den Editmodus gebracht, steht der Cursor wieder in Feld "X". Und nun passiert folgendes:
Verlasse ich das Feld ohne eine Änderung des bestehendes Feldwerts mit der Tab-Taste (der Cursor springt zur Schaltfläche) oder klicke ich die Schaltfläche an, wird nur der OnBlur-Event aktiv.
Verlasse ich aber das Feld mit der Maustaste, indem ich auf ein anderes Feld weiter unten in der Maske klicke, wird der OnChange-Event aktiv, obwohl der Wert nicht geändert wurde.
Das ist sehr irritierend. Ich behelfe mir nun damit, dass ich beim QueryOpen den Feldwert in eine masken-globale Variable "X" speichere und im OnChage des Felds "X" die Werte vergleiche.
Aber das kann's doch nicht sein, oder? Wenn ich die Wertänderung manuell abfragen muss, brauche ich auch kein OnChange-Event. Das kann ich dann auch im OnBlur-Event abfragen.
Grüße
Frank