Chiudere tutte le finestre aperte da un applicativo

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca

Chiudere tutte le finestre, generate da un programma, chiudendo il Form principale

Se, chiudendo il Form principale, si intende chiudere anche tutte le finestre secondarie eventualmente generate dall'applicativo, si può utilizzare l'istruzione:

Public Sub Form_Close()

' Assegna alla Proprietà ".MainWindow" della Classe Application la finestra principale dell'applicativo:
 Application.MainWindow = Me

End

che fa diventare la finestra corrente quella principale: quando viene chiusa la finestra principale, vengono chiuse tutte le altre finestre e l'applicazione.

E' possibile usare anche la Classe Windows, che ritorna una collezione di tutte le finestre create dall'applicativo principale:

Public Sub Form_Open()

 Dim w As Window

 With w = New Window
   .Move(0, 0, 100, 100)
   .Show
 End With

 With w = New Window
   .Move(200, 100, 100, 100)
   .Show
 End With

 With w = New Window
   .Move(300, 200, 100, 100)
   .Show
 End With

 Me.Center

End


Public Sub Form_Close()

 For Each w As Window In Windows
   w.Close
 Next

End


Chiudere tutte le finestre, generate da un programma, da una finestra secondaria

Se si intende chiudere tutte le finestre, generate da un programma, chiudendo una sua finestra secondaria, si dovrà sollevare l'Evento "_Activate()".

Private Form1 As Form
Private Form2 As Form


Public Sub Form_Open()

 With Form1 = New Form As "Form1"
   .Move(100, 100, 300, 300)
   .Show
 End With 

 With Form2 = New Form As "Form2"
   .Move(500, 300, 300, 300)
   .Show
 End With 

End


Public Sub Form1_Activate()

 Application.MainWindow = Form1

End


Public Sub Form2_Activate()

 Application.MainWindow = Form2

End

Se la creazione dei Form (o delle finestre) secondari è avvenuta dall'IDE di Gambas, allora nella Classe del Form secondario, alla chiusura del quale si vuole far chiudere anche le altre finestre generate, si assegnerà la parola-chiave "ME":

Public Sub Form_Activate()

 Application.MainWindow = Me

End