Moin Hummer,
Delphi-Quellcode:
if (Key in ['0'..'9', #8]) or ((Key = '-') and (pos('-',Edit1.Text) = 0)) then begin
if Key = '-' then begin
Edit1.Text := '-' + Edit1.Text;
Key := #0;
end;
end else begin
Key := #0;
end;
ungetestet, und einfach hier mal reingehackt.
Im Prinip müsstest Du ja nur noch zusätzlich auf das '-' testen, dass aber nur zugelassen ist, wenn es noch nicht enthalten ist.
Als Verbesserung könnte man sich noch die aktuelle Caretposition merken wenn es ein, zugelassenes, '-' war und dann wieder Herstellen.