Come rendere OpenDialog spettacolo modale in FireMonkey?
-
26-10-2019 - |
Domanda
Quando sto chiamando un OpenDialog dalla mia forma sull'evento ButtonClick. La finestra di dialogo non mostra come modali ed è anche visualizzato nella barra delle applicazioni (in Windows XP). Posso tornare a forma principale e clicca di nuovo e di nuovo aperto - spuntando diverse finestre di dialogo in una volta ..
Come faccio a fare un OpenDialog di essere modale in FireMonkey? E 'espressamente fatto in modo che non le finestre di dialogo modali sono autorizzati a causa di multi-piattaforma anture di FM?
EDIT:. Il bug è stato risolto in Update 3
Soluzione
Penso che sia un bug. Ci sono un sacco di bug di tipo modale con FireMonkey, e speriamo che saranno loro riparavano presto. Attualmente, anche le forme modali non sono modali.
Per il tuo problema, ho una soluzione per Windows, ma non si potrebbe piacervi.
È necessario fissare la seguente riga nella TPlatformWin.DialogOpenFiles () metodo FMX.Platform.Win.
In cambio with OpenFile do
:
hwndOwner := 0;
Per questo:
hWndOwner := FmxHandleToHWND(Application.MainForm.Handle);
La funzione utilizza la chiamata GetOpenFileName
API di Windows, anche se è deprecato su Vista e sopra. Se una maniglia proprietario viene passato, la finestra è modale, altrimenti non è.
Si potrebbe desiderare di presentare questo come un bug per qc.embarcadero.com insieme la soluzione.