che controllo usi? un TEdit?
Prova, se lo hai, il controllo TMaskEdit.
In alternativa puoi utilizzare la funzione

codice:
function _IsNum(s : String) : Boolean;
var
 Value : Real ;// Integer, Real... il tipo che desideri
 Code  : Integer;
begin
 Val(s, Value, Code);
 //
 _IsNum := Code = 0;
end;
e, prima di utilizzare il contenuto della edit verifichi se è un numero o no, e ti comporti di conseguenza prima che l'eccezione venga sollevata.
ciao
sergio