Es que el evento OnValidate se disparará solamente si el usuario ha introducido un valor que si es un número de coma flotante, pues el OnValidate no se encarga de "validar" cuestiones sintácticas.
Pienso que en el Evento OnSetText podrias capturar el error... pero hay que probar.
Bastará algo como:
Código Delphi
[-]
Procedure Table1Campo1SetText(sender : TField; const Text: string);
Begin
try
sender.Value := StrToFloat(Text);
except
on EConvertError do
Begin
ShowMessage('Valor inválido!');
End;
end;
End;
hasta luego.