Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ventana MDIChild y ventana de aviso (https://www.clubdelphi.com/foros/showthread.php?t=72534)

M. FM. 24-02-2011 17:27:55

Ventana MDIChild y ventana de aviso
 
Buenas tardes:

Tengo una aplicación con una ventana principal que va llamando a otras de tipo MDIChild. Tras abrir una de esas ventanas MDIChild, el usuario puede ejecutar una acción que lanza una ventana de aviso. Dicha ventana se abre con ShowModal y cuando se le da a aceptar se envía un ModalResult := mrOk.

Es decir, tenemos 3 ventanas: la principal o ventana marco, la que se abre como MDIChild y la de aviso que lanza esta última con ShowModal.

Mi problema es que después de mandar el resultado (que se recoge bien), la ventana modal se cierra, pero también se pierde el foco de toda la aplicación y se me muestra otra aplicación de las que tengo abiertas en el ordenador. No sé cómo hacer para que se siga mostrando mi aplicación porque no entiendo por qué pasa esto.

Muchas gracias de antemano si alguien me puede ayudar.
Saludos,
M.

gluglu 24-02-2011 17:43:34

Deberías crear esa ventana de aviso también con MDIChild. Seguramente no lo hagas así, y por eso devuelve el foro a Windows

M. FM. 25-02-2011 10:01:39

Hola, gluglu:

Muchas gracias por tu respuesta. He probado a hacerlo así, pero ahora no puedo mostrarla con el ShowModal porque me sale un mensaje de error, 'Cannot make a visible window modal'.

Probé a mostrarla con Show, pero entonces no se cierra cuando el usuario pincha en Aceptar. ¿Tengo que poner algo en el procedimiento que devuelve el resultado?

Código:

procedure TMensaje.btnAcepClick(Sender: TObject);
begin
  ModalResult := mrOk;
end;

procedure TMensaje.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

Esos son los procedimientos que tengo, no sé si debería cambiar alguno de ellos.

Saludos y muchas gracias,
M.

gluglu 25-02-2011 14:41:07

'Cannot make a visible Window Modal' te está indicando que algún sitio has creado ya previamente la ventana Mensaje.

Comprueba tus opciones de proyecto para ver si se crea automáticamente o no al inicio del programa.

Si no es así, es porque la estás creando en alguna parte de tu programa, y no lo tienes en cuenta que ya está visible porque previamente la has mostrado con Show.

En principio los procedimientos que indicas para salir son correctos.


La franja horaria es GMT +2. Ahora son las 09:51:29.

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