Mensajes de error en un DBGrid

faom
31 de Octubre del 2003
Resulta que tengo un DBGrid con un campo de tipo entero sin signo y otro de tipo fecha/hora, pues bien, tanto en el primero cuando se le introde un valor negativo como en el segundo cuando se le pone un valor de hora incorrecta, automáticamente me da un mensaje EN INGLÉS diciendo que el valor introducido es incorrecto. La pregunta es, ¿como puedo "interceptar" ese mensaje para mostrarlo en español?

Un saludo y gracias de antemano,
Paco O.

faom
31 de Octubre del 2003
Bueno, ya he encontrado la solución a mi problema, para el que le pueda interesar:
El problema era que el DBGrid automáticamente lanzaba una excepción del tipo EConvertError y mostraba dicho mensaje de error en inglés. Pues bien, la solución está en escribir un procedimiento para controlar las excepciones que no son tratadas en el código. Para ello hay que añadir los siguiente al formulario:

oid __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnException = AppException;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::AppException(TObject *Sender, Exception *E)
{
if (AnsiString(E->ClassName()) == "EConvertError") {
ShowMessage(" **nuevo mensaje** ");
}
else
Application->ShowException(E); // El resto de excepciones se deben seguir tratando igual.
}


Un saludo,
Paco.

mfercor
31 de Octubre del 2003
Pues se utiliza la siguiente estructura:

try
{Lo que se quiera efectuar}
except
on E:Exception do {Lo que se quiera hacer en caso de ocurrir un error}
end;