2013-01-11 13 views
7

Sto mantenendo un'applicazione originariamente scritta in Delphi 7 e trasferita su Delphi XE.Finestra dell'applicazione Delphi ordine z e proprietà MainFormOnTaskBar

Utilizzando Windows 7, abbiamo sperimentato alcuni problemi come finestre modali che compaiono sotto la finestra principale e l'eventuale incapacità di interagire con il programma perché l'utente si aspetta di interagire con la forma modale e che è impossibile dal momento che è sotto la finestra principale .

Per evitare questo problema, ho modificato la proprietà MainFormOnTaskBar del progetto su True (i progetti precedenti non hanno questa proprietà) e ora proseguo con lo stesso progetto. Leggendo la documentazione ho trovato la nuova proprietà Form PopupParent. È obbligatorio utilizzare questa proprietà se imposto MainFormOnTaskBar su True? C'è un'altra soluzione a questo problema?

risposta

5

Sì, per le forme modali che "pop-under", è necessario fissare la Z-ordine utilizzando PopupParent o PopupMode, come spiegato da Allen Bauer nel suo post sul blog PopupMode and PopupParent.

MainFormOnTaskBar documentazione dice che ha poco a che fare con il pop-under: è per la scelta in cui le informazioni Titolo/icona sulla barra delle applicazioni si ottiene da (vostro o ApplicationMainForm).

Tuttavia, MainFormOnTaskBar := True fa di più e this article by Steve Trefethen (ex membro del team Delphi) spiega molti più dettagli in modo più dettagliato.

Questo "altro" ha conseguenze che riguardano z-order. Alcuni si potrebbe piace di più o forse meno, per cui qui sono alcuni esempi:

Nota che combattere i problemi introdotto con Vista non è stato un compito da poco risolto in quanto Microsoft ha introdotto molte più funzionalità, ma ha anche portato via alcune applicazioni di libertà che si usavano. Leggi these due articles di Nathanial Woolls per ottenere una migliore impressione su quelli.

+4

Sfortunatamente, 'MainFormOnTaskBar' è cresciuto negli anni per fare MOLTO di più che decidere quale HWND appare sulla TaskBar. Fondamentalmente è usato per abilitare/disabilitare molte funzionalità di Vista + nel VCL (piuttosto che creare nuove proprietà per governarle). E questo ** FA ** gioca un fattore nella scelta dell'HWND usato per la gestione degli ordini z quando 'PopupParent' è nullo. –

+0

Tempo per @ allen-bauer per pubblicare un nuovo post di blog (: –

+0

C'è qualche documentazione su come 'MainFormOnTaskBar' influenza l'ordine z della finestra? La raccomandazione è di lasciarlo' true' per un'applicazione vcl standard? – ventiseis

Problemi correlati