Domanda

Ho un'app Delphi 2006 che apre una finestra di dialogo di avviso modale quando viene rilevata una condizione di errore.Poiché il controllo per la condizione di errore viene eseguito in un gestore inattivo, la finestra di dialogo può aprire sopra la parte superiore di un'altra finestra di dialogo modale se viene visualizzata quella.Ciò può portare a una situazione di confusione per l'utente in cui il modulo principale dell'applicazione non si concentra dopo la messa a fuoco dopo la finestra di dialogo Alert perché è un'altra finestra di dialogo modale oscurata.

Quello che vorrei fare è posticipare i popup Alert mentre l'app ha tutte le finestre di dialogo modale aperto.

Ho provato GetLastactivePopup (mymainwindow.handle) ma sembra restituire il non-zero tutto il tempo.

Altri suggerimenti

Basta test

if not IsWindowEnabled(MyMainWindow.Handle) then
.

Ciò si prenderà cura di sititazioni quando una finestra di dialogo non delphi agisce modale, come in windows.MessageBox(Handle....o una finestra di dialogo comune mostra (cioè un topendolog).

Usa Anyppopup () Funzione .

A proposito di getlastactivepopup ().Può restituire il valore è lo stesso del parametro HWND quando

    .
  • La finestra identificata da HWND è stata più recente attiva.
  • La finestra identificata da HWND non possiede alcuna finestre pop-up.
  • La finestra identifica di HWND non è una finestra di alto livello o è di proprietà di un'altra finestra.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top