Verificare se un Form è attivo

Da Gambas-it.org - Wikipedia.

Per verificare se un Form è attivo, si potranno utilizzare alcune modalità.

Uso delle risorse della Classe Application

Si utilizzerà la Proprietà ".ActiveWindow" della Classe Application.
Se la verifica deve avvenire all'apertura del Form, sarà necessario imporre Wait anche di qualche decimo di secondo.

Mostriamo un esempio:

Public Sub Form_Open()

 Me.Show

 Wait 0.5

 Print Application.ActiveWindow.Name

End

oppure:

Public Sub Form_Open()

 Me.Show

 Do
   Wait 0.5
 Loop Until Application.ActiveWindow.Name = "FMain"

 Print Application.ActiveWindow.Name 

End


Uso della Classe DesktopWindow

Per la verifica di un Form o comunque di una qualunque altra finestra si può anche pensare ad una soluzione che ne accerti l'esistenza partendo dal suo nome visibile mediante la Classe DesktopWindow.
E' necessario attivare i Componenti gb.desktop e gb.desktop.x11 .
Poniamo il caso che il Form da verificare si chiami "Finestra":

Public Sub Button1_Click()

 Dim dw As DesktopWindow
 
' Di ogni finestra aperta sul desktop...
 For Each dw In Desktop.Windows
' ...cerca il nome. Se il nome "visibile" è uguale al nome del "Form" che cerchiamo, allora lo rileva:
   If dw.VisibleName = "Finestra" then Print "Il Form è attivo !"
 Next

End