Die Lösung mit den If-Abfragen dürfte hier den Ablauf deutlich verkomplizieren.
Versuch bitte eine Lösung mit Case zu finden, dann sind mehrere Bedingungen besser abzubilden.
Delphi-Quellcode:
Case key of
// zuerst mal alles das, was in Ordnung ist:
#8 : ; // Zurücktaste
'0'..'9' : ; // die Ziffern
// Beim - schauen, ob CellText noch leer ist, nur dann ist der - erlaubt.
'-' : if Length(CellText) <> 0 then key := #0;
// der MyDecSep darf nur einmal vorkommen.
MyDecSep : if Pos(MyDecSep,CellText) <> 0 then key := #0;
else
key := #0; // Alles andere wird verworfen.
end;
Hast Du momentan den Inhalt der zu prüfenden Spalte?
Wird das Ergebnis mit meinem Vorschlag besser?