Ver Mensaje Individual
  #10  
Antiguo 13-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
carlosmari comentó:
Roman:

Al principio había puesto la validación en el onCloseQuery. El problema lo tenía cuando se producía un error de validación pero igualmente quería abandonar el form (por que me arrepentí y no quiero seguir con la carga), es ahí donde quedaba atrapado por los erros de validación y no podía salir de ninguna manera.
Sigo sin entender.

Por error de validación te refieres a que se produce una excepción en la función valida() o simplemente a que regresa false?

De cualquier forma si la validación falla, es decir, no se cumplen las condiciones para aceptar los cambios entonces basta que te regrese al formulario y el usuario oprima el botón Cancelar en lugar de Aceptar. La estructura de prácticamente cualquier evento OnCloseQuery que hago es:

Código:
if ModalResult = mrOk then
begin
  { Hacer validaciones }
end;
De hecho casi nunca hago uso del parámetro CanClose-- y no digo que esta sea la forma correcta de manejar el evento --, en su lugar, si algo falla en la validación lanzo una excepción ya que normalmente me interesa no sólo impedir que se cierre el formulario sino además situar al usario en el control que contiene algún dato incorrecto:

Código:
if ValorDelControlIncorrecto then
begin
  Control.SetFocus;
  raise Exception.Create('Usted debe acostumbrarse a poner valores correctos');
end;
Cita:
carlosmari comentó:
Ej:

if valida() = false then
canClose = false
else
canClose = true;

[/b]
Por cierto, este código quedaría más claro así:

Código:
canClose := valida();
// Saludos
Responder Con Cita