Delphi - Detectando si mi aplicación tiene un cuadro de diálogo modal abierto
-
26-09-2020 - |
Pregunta
Tengo una aplicación de Delphi 2006 que aparece un cuadro de diálogo de alerta modal cuando se detecta una condición de error.Como la verificación de la condición de error se realiza en un manejador inactivo, el cuadro de diálogo puede aparecer en la parte superior de otro cuadro de diálogo modal si se lo ocurre.Esto puede llevar a una situación confusa para el usuario donde la forma principal de la aplicación no se enfoca después de que se cierre el cuadro de diálogo de alerta porque este es otro diálogo modal oscuro.
Lo que me gustaría hacer es posponer las ventanas emergentes de alerta mientras la aplicación tiene los cuadros de diálogos modales abiertos.
Intenté getLastAptApopup (Mymainwindow.Handle), pero parece volver a que no sea cero todo el tiempo.
Solución
Consulte TAPPLICION.MODALLEVEL o el tAlplication.onmodalbegin y agoblication.onmodalend eventos.También vea esta pregunta .
Otros consejos
solo prueba
if not IsWindowEnabled(MyMainWindow.Handle) then
Esto también se encargaría de situaciones cuando un diálogo que no sea de Delphi esté actuando modal, como en windows.MessageBox(Handle...
.o un cuadro de diálogo común está mostrando (es decir, un Topendialog).
Use anypopup () Función
Acerca de GetLastApectApopup ().Puede devolver el valor es el mismo que el parámetro HWND cuando
- La ventana identificada por HWND fue activa más reciente.
- La ventana identificada por HWND no posee ninguna ventana emergente.
- La ventana identifica por HWND no es una ventana de nivel superior, o es propiedad de otra ventana.