Hola dimer18.
Para que acepte sólo números enteros (0-9):
Código Delphi
[-]
procedure SoloNumeros(Hnd: THandle);
begin
SetWindowLong(Hnd, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) or ES_NUMBER);
end;
...
begin
SoluNumeros(Edit1.Handle);
end;
Para que acepte números decimales usá este código en el evento
OnKeyPress:
Código Delphi
[-]
procedure TForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [#8,',',' ','0'..'9']) then begin
MessageBeep(MB_ICONERROR);
Key:=#0;
end;
end;
Si querés ampliar la verificación contemplando que pudieran pegar contenido desde el portapapeles, agrega este código al evento
OnExit:
Código Delphi
[-]
procedure TForm.EditExit(Sender: TObject);
var
v: Double;
begin
if not TryStrToFloat((Sender as TEdit).Text, v) then
begin
MessageBeep(MB_ICONERROR);
(Sender as TEdit).SetFocus;
end;
end;
Saludos.