In meinem Base-Formular habe ich ein maskiertes Feld, für das ich die Eingabe prüfen möchte. Diese Prüfung ist natürlich nur nötig, wenn der Anwender den Feldinhalt geändert hat. Das Ereignis Text modifiziert ist dafür nicht geeignet, weil es während der Eingabe gefeuert wird; und zu dieser Zeit kann der Inhalt noch nicht korrekt sein. Das Ereignis Modifiziert wäre das richtige, aber das gibt es bei einem maskierten Feld nicht. Deshalb meine Frage:
Enthält das Objekt oEvent beim Fokusverlust Informationen darüber, ob sich der zugrundeliegende Inhalt geändert hat? Oder gibt es einen anderen Weg?
Danke für Tipps! Jürgen
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
BASE: Formular, "Ist modifiziert" prüfen bei Fokusverlust
Moderator: Moderatoren
BASE: Formular, "Ist modifiziert" prüfen bei Fokusverlust
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: BASE: Formular, "Ist modifiziert" prüfen bei Fokusverlus
Teillösung: Bei einem Feld, das an eine Datenquelle (Tabelle) gebunden ist, passt das Ereignis "Vor dem Aktualisieren". Damit können der alte und der neue Feldinhalt geprüft und verglichen werden:
Welche der Eigenschaften (Text, String, CurrentValue, Date usw.) geprüft und verglichen werden müssen, hängt wesentlich vom Datentyp ab. Ich habe für ein Date-Feld viel mit xray und Basic probiert, bis die Werte ohne Laufzeit-Exception angezeigt werden konnten.
Hinweis: Zuerst wird das Ereignis "Fokusverlust" behandelt, erst danach "Vor dem Aktualisieren". Trotzdem kann man beim Fokusverlust nur noch auf den neuen Wert zugreifen. Jürgen
Code: Alles auswählen
Sub dateModified(oEvent as Object)
fld = oEvent.Source
alt = fld.BoundField.string
neu = fld.Text
msgBox("alt: " & alt & chr(13) & "neu: " & neu )
End Sub
Hinweis: Zuerst wird das Ereignis "Fokusverlust" behandelt, erst danach "Vor dem Aktualisieren". Trotzdem kann man beim Fokusverlust nur noch auf den neuen Wert zugreifen. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC