Hmm..
ab hier gerade kein Lazarus, jedoch habe ich deine Prüfroutine mal anders Formuliert:
Delphi-Quellcode:
if Key in['0'..'9',#8,'-',MyDecSep] then begin
if Key = '-' then if (selStart <> 0) then Key := #0; // '-' muss an erster Stelle sein (Wenn nicht mit 'E')
if Key = MyDecSep then begin
if (selStart = 0) // Nicht an erster Stelle
or (Pos(Key, CellText) > 0) // Nicht schon vorhanden
or ((Pos('-', CellText) > 0) and (selStart < 2)) // Nicht direkt nach einem '-'
then Key := #0;
end;
end else Key := #0;
(Ungetestet...)