Wie wäre es einfach damit?
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in [#8, #45, #48..#57]) then
key := #0;
end;
#8: Backspace
#45: Minus
#48-#57: Ziffern
Im OnChange muss man dann eben auf die Größe der zahl überprüfen.