Distruggere i Controlli grafici posti in un Contenitore

Da Gambas-it.org - Wikipedia.

Per eliminare i Controlli posti in un Contenitore, si possono adottare alcune modlità.

Uso diretto del Metodo ".Clear()" della Proprietà ".Children"

Il Metodo ".Clear()" della Proprietà ".Children" di un Contenitore distruggerà tutti i Controlli presenti nel Contenitore medesimo.

Nel seguente esempio pratico poniamo vari Controlli sul Form, e con essi anche un Button cliccando il quale azionerà l'azione distruttiva:

Public Sub Button1_Click()

 Me.Children.Clear

End

Qui i Controlli saranno posti in un Panel:

Public Sub Button1_Click()

 Panel1.Children.Clear

End

Uso della Classe ContainerChildren

Alla variabile del tipo della Classe non creabile ContainerChildren, va assegnato il riferimento ai "Figli" (Children ) del Contenitore, e successivamente usare il Metodo ".Clear()".

Mostriamo un esempio pratico:

Public Sub Button1_Click()

 Dim cn As ContainerChildren

 cn = Me.Children

 cn.Clear
 
End

Usando il ciclo "For...Each" e la variabile del tipo dei Controlli da distruggere

Se in un Contenitore sono presenti Controlli appartenenti a un unico tipo (ad esempio soltanto Button, allora si potrà usare l ciclo "FOR...EACH" e la variabile del tipo dei Controlli da distruggere.

Mostriamo un esempio pratico, nel quale in un Panel sono contenuti soltanto dei Button:

Public Sub Button5_Click()

 Dim bt As Button

 For Each bt In Panel1.Children
   bt.Delete
 Next

End

Usando il ciclo "For...Each" e la variabile di tipo "Object"

Se invece sul Contenitore sono presenti Controlli di vari tipi, e si intende eliminare soltanto i Controlli appartenenti a un determinato tipo, allora con il ciclo "FOR...EACH" si utilizzerà una variabile di tipo Object, nella quale caricare tutti i Controlli e distinguerli successivamente all'interno del ciclo.

Mostriamo un esempio pratico, nel quale su un Form sono presenti vari tipi di Controllo. Si intende distruggere soltanto i Button:

Public Sub Button1_Click()

 Dim ob As Object

 For Each ob In Me.Children
   If Object.Type(ob) = "Button" Then ob.Delete
 Next

End