PDA

Ver la Versión Completa : No consigo cerrar una ventana modal


eliasterrero
11-11-2003, 18:00:38
Hola a todos, tengo un problemilla al cerra una pantalla, pasa olimpicamente de mi modalresult:=mrok y no se cierra nunca, tengo que salirme de la aplicación a las bravas (ctrl+alt+supr), eso lo me ocurre a veces y no logro encontrar una solución. Gracias de antemano.

Covadonga

Aqui os pongo algunas partes de código por si siven de ayuda, si teneis alguna duda, preguntadme por favor.

1º el procedimiento al que llamo para crear la pantalla.

procedure MuestraESAlmacen;
Begin
With TESAlmacen.Create(Application) do
Try
ShowModal; // la creo como modal
Finally
Free;
end;
end;


2º El procedimiento al que llamo pulsando un botón donde realizo un procedimiento y luego de digo el ModalResult. El procedimiento lo ejecuta, pero luego no cierra la ventana.

procedure TESAlmacen.Salir;
begin
// la funcion as mensaje es una funcion propia que utiliza un messagebox
if asMensaje('¿ Desea procesar estos movimientos de almacén ?'#13#10' (Si pulsa ''NO'', se cancelarán)', MB_YESNO + MB_ICONQUESTION) = idYES then
begin
TraspasaMovimientos; // función donde hago un proceso con unas tablas
ModalResult := mrOK; // Aqui es donde el programa pasa de mi
end
else
begin
ModalResult := mrCancel;
end;
end;

delphi.com.ar
11-11-2003, 18:22:25
Creo que todos los que programamos en Delphi, utilizamos habitualmente formularios modales, y si este fuera un problema habitual, Delphi no tendría tantos adeptos.
¿Estas seguro que el ModalResult se lo estas asignando al ModalResult de la instancia del formulario que necesitas cerrar?
¿Haces algo en el OnClose del formulario?
¿No se produce ninguna excepción?... ¿No estas "enmudeciendo" ninguna excepción?

eliasterrero
11-11-2003, 19:01:18
delphi.com.ar comentó:
Creo que todos los que programamos en Delphi, utilizamos habitualmente formularios modales, y si este fuera un problema habitual, Delphi no tendría tantos adeptos.
¿Estas seguro que el ModalResult se lo estas asignando al ModalResult de la instancia del formulario que necesitas cerrar?
¿Haces algo en el OnClose del formulario?
¿No se produce ninguna excepción?... ¿No estas "enmudeciendo" ninguna excepción?

Respuestas:
No hago nada en el on close del formulario.
No "enmudezco" ninguna excepcion, incluso pobre a depurar con debuger options del delphi y no me salto ninguna.
Y sobre si el modal result lo hago en el formulario, estoy casi convencida ya que creo que si no lo hiciera, el formulario no se cerraria unas veces si y otra no.
La verdad es que ando un pelin desquiciada, por que no le encuentro ninguna explicación, creo que lo he intentado casi todo, pero no logro cazar el error.

Gracias por tus sugerencias y por las futuras.

Covadonga.

delphi.com.ar
11-11-2003, 19:09:26
Porqué no nos cuentas que es lo que haces en este formulario...
Si puedes pasarnos mas código, mejor!

Saludos!

Nadie
11-11-2003, 23:17:26
procedure MuestraESAlmacen;
var
ventana: TESAlmacen;
Begin
ventana:=TESAlmacen.Create(Application);
if ventana.ShowModal=mrok then edit1.text:=ventana.edit1.text;
end;

ahora solo en el formulario esalmacen tenes que poner en el boton ok que sea mrok y listo

roman
11-11-2003, 23:55:48
Nadie comentó:
procedure MuestraESAlmacen;
var
ventana: TESAlmacen;
Begin
ventana:=TESAlmacen.Create(Application);
if ventana.ShowModal=mrok then edit1.text:=ventana.edit1.text;
end;

ahora solo en el formulario esalmacen tenes que poner en el boton ok que sea mrok y listo

No veo como esto puede solucionar su problema. El formulario tendría que cerrarse en cuanto su propiedad ModalResult sea distinta de cero (mrNone) independientemente de cómo se llame a ShowModal.

// Saludos