Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No consigo cerrar una ventana modal (https://www.clubdelphi.com/foros/showthread.php?t=5165)

eliasterrero 11-11-2003 18:00:38

No consigo cerrar una ventana modal
 
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

Cita:

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

Cita:

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


La franja horaria es GMT +2. Ahora son las 09:11:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi