Normalmente, cuando abre un cuadro de diálogo con ShowModal, la ejecución del hilo actual se detiene hasta que se cierra el cuadro de diálogo. Quiero mostrar un diálogo modal, pero continuar la ejecución en el hilo actual mientras el cuadro de diálogo aún está abierto.Abrir un cuadro de diálogo modal de forma asincrónica en Delphi
Por "modal" simplemente quiere decir que el usuario no puede interactuar con cualquiera de las otras formas de la aplicación hasta el cuadro de diálogo modal está cerrada.
La función Delphi ShowModal proporciona una definición ligeramente diferente de "modal" a la que yo requiero:
Una forma modal es uno donde la aplicación no puede continuar funcionando hasta que se cierra el formulario.
Actualmente tengo un código como éste:
dialog.Parent:=self;
dialog.Show;
// keep doing stuff...
Esto funciona, excepto que todavía puedo interactuar con la ventana padre (moverlo, cerrarla etc)
¿Cómo muestro una forma que impide al usuario interactuar con la ventana primaria, sin usar ShowModal?
Esto parece haber funcionado. Divido ShowModal en dos funciones; ShowModalNonBlocking y CloseModalNonBlocking. Tuve que eliminar algunas líneas de código que no compilaría. Espero que haya una solución mejor, pero esta es la mejor sugerencia que he encontrado hasta ahora. – awmross
Sé que no puede publicar el código, pero ¿puede publicar sugerencias, como "dividir en la línea X"? – Mawg
@Mawg La función "ShowModalNonBlocking" finalizó con una llamada a "Mostrar()". El "CloseModalNonBlocking" se inició al enviar un mensaje de Windows para desactivar el diálogo. ¿Espero que ayude? – awmross