Autor Beitrag
Horst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Do 10.04.03 20:30 
Hallo,

ich möchte gerne nach der Eingabe in einer DBGrid-Zelle die Eingaben prüfen und bei einem Fehler die Eingabe verwerfen. Wie mache ich das am geschicktesten? :roll: Ein geeignetes Ereignis habe ich nicht gefunden. Bei TEdit mache ich es immer über OnExit, prüfe die Eingabe und setze bei einem Fehler den Focus wieder auf das Eingabefeld. Ein Ereignis OnCellExit habe ich nicht gefunden. Wenn ich es über OnDataChange mache wird das Ereignis mehrfach aufgerufen und ich weiß nicht woran ich erkenne, ob ich die Zelle gerade verlassen habe. Danke für einen hilfreichen Tip.

Gruß

Horst
:wave:

Moderiert von user profile iconTino: Absätze entfernt.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 11.04.03 08:18 
Hi
es geht schon mit OnDataChange. Aber du musst halt dabei prüfen, ob es sich durch eine Änderung durch Bewegen in der Datenmenge handelt (Field = nil) oder ob eine Änderung im Feld vorliegt (Field <> nil).
Eine andere Möglichkeit wäre mit persistenten Feldern zu arbeiten und für das betreffende Feld eine OnValidate Routine bereitzustellen.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Horst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mi 16.04.03 18:43 
Hi

hört sich ja interessant an. Habe ich leider nur nicht ganz verstanden. Was sind persistente Felder :?: Und wie komme ich an die onValidate Routine :?: Gibt es diese Routine bei einem Objekt bereits wie tdbgrid, tcolumn, ttable oder so?

Kannst Du mir das bitte nochmal näher erläutern, Danke

Gruss Horst

Moderiert von user profile iconTino: Absätze entfernt.
Horst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mi 16.04.03 21:08 
Hi

onvalidate war ein gutes Stichwort. Ich habe in der Delphi Hilfe gestöbert und eine Lösung gefunden. Ich weise eine eigene procedure Fieldvalidate den onvalidate Ereignissen zu. :idea: mit fieldname kann ich dann den Feldnamen abfragen. Das funktioniert soweit auch gut. Nur weiß ich noch nicht wie ich eine falsche Eingabe ablehnen kann. Mit newvalue:=oldvalue läuft das ganze in einer Endlosschleife und ein rollback oder undo habe ich nicht gefunden.

Wie könnte es gehen... :?!?: , Danke.

Gruß

Horst
:wave:

Moderiert von user profile iconTino: Absätze entfernt.