BASE: Formular, "Ist modifiziert" prüfen bei Fokusverlust

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

BASE: Formular, "Ist modifiziert" prüfen bei Fokusverlust

Beitrag von juetho »

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
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: BASE: Formular, "Ist modifiziert" prüfen bei Fokusverlus

Beitrag von juetho »

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:

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
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
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Antworten