Un pequeño ajuste a esa función ya que si le envían '' me diría que es Numérico y si envían un numero negativo diría que es alfanumerico:
Código Delphi
[-]
function TForm1.EsNumero(Numero: String): Boolean;
var
i :Integer;
begin
i := 0;
Result := (Length(Numero)<>0);
while ((i <= Length(Numero)-1) and (Result = True)) do
begin
inc(i);
Result := (IsNumeric(Numero[i]) or (Numero[i]='-'));
end;
end;
Seguro que esa función debe tener errores aun, pues no tiene en cuenta los flotantes o si le envian algo como -1222-566 tambien presentaria problemas, pero alli se las dejo por si alguien quiere refinarla.