2012-11-25 16 views
5

So che probabilmente mi manca qualcosa, ma non riesco a capire cosa. Ho appena creato un'applicazione di test con 2 moduli (Form1, Form2). ho aggiunto un pulsante a Form1 con il seguente codice nel gestore di eventi OnClick:Come utilizzare più finestre in FireMonkey FM2

Application.CreateForm(TForm2,Form2); 
Form2.Show; 

Quando clicco il bottone, una seconda forma è mostrato come si intende, ma se clicco su Form1 I impossibile portarlo in primo piano anche se ha la proprietà TopMost impostata su true.

Cosa mi manca? Come posso risolvere il problema? Devo mostrare alcune sottomaschere e un modulo principale che deve essere sempre in primo piano.

+0

Sembra che form1 sia il proprietario di form2. E intendo il proprietario nel senso di Windows. Nel VCL, il termine sarebbe popup genitore. –

+3

Sì, tutti i moduli creati da FMX hanno 'ParentWnd' impostato in' TPlatformWin.CreateWindow'. Il primo modulo creato utilizza 'GetDesktopWindow', che sembra una pessima idea. E i moduli successivi usano la maniglia della finestra del primo modulo. Ciò significa che i moduli successivi sono sempre di proprietà del primo modulo creato. Che fa schifo Non ho idea di come ripararlo perché non uso FMX. Spero di non averlo mai. –

+0

Su XE2 funziona come previsto. Se compilo con XE3 posso portare il primo modulo in cima usando WinDowse (scheda Modifica -> rimani in cima). Ma non so quali API e parametri stanno usando per fare la magia ... –

risposta

0

Penso di poterti aiutare!

Innanzitutto, è necessario creare un nuovo modulo scegliendo File> Nuovo> FireMonkey Form | Delphi salverà questa forma come unit2.pas nello stesso progetto con form1

In unit1.pas, è il codice:

uses Unit2; 

Dopo in unit2.pas, è il codice 'usa Unit1'

Ora , si doveva mutiple di Windows e potrebbe fare qualsiasi cosa

È possibile visualizzare Form2 da: 'Form2.Show'

Bye Buona fortuna ...

Problemi correlati