Differenze tra le versioni di "Verificare l'esistenza di un Controllo in un Contenitore"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Analizzeremo il caso in cui si debba verificare l'esistenza di un Oggetto grafico su un ''Form'', e l'esistenza di un Oggetto grafico a sé stante privo di ''genitore''.
 
Analizzeremo il caso in cui si debba verificare l'esistenza di un Oggetto grafico su un ''Form'', e l'esistenza di un Oggetto grafico a sé stante privo di ''genitore''.
=Verifica sul form principale=
+
=Se si conosce solo il nome della Classe del Controllo=
 
 
Per verificare l'esistenza di oggetto su un ''Form'', possiamo adottare almeno tre modalità:
 
 
 
===Usando [https://gambaswiki.org/wiki/comp/gb/object/isvalid?l=it Object.IsValid()]===
 
Public Sub Button1_Click()
 
 
  If Object.IsValid(FMain["<FONT color=gray>'''''Variabile'''_del_Controllo''</font>"]) Then
 
    Print "L'oggetto è presente nel Form !"
 
  Endif
 
 
 
End
 
  
 
===Usando [https://gambaswiki.org/wiki/comp/gb/object/is?l=it Object.Is()]===
 
===Usando [https://gambaswiki.org/wiki/comp/gb/object/is?l=it Object.Is()]===
Riga 32: Riga 21:
 
   
 
   
 
   For Each ob In Me.Children
 
   For Each ob In Me.Children
     If ob Is "<FONT color=gray>''Nome_della_'''Classe'''_del_Controllo''</font>") Then
+
     If ob Is "<FONT color=gray>''Nome_della_'''Classe'''_del_Controllo''</font>" Then
 
       Print "L'Oggetto è presente nel Form !"
 
       Print "L'Oggetto è presente nel Form !"
 
     Endif
 
     Endif
Riga 53: Riga 42:
  
 
===Usando Object.Type()===
 
===Usando Object.Type()===
 +
Public Sub Button1_Click()
 +
 +
  Dim ob As Object
 +
 +
  For Each ob In Me.Children
 +
    If Object.Type(ob) = "<FONT color=gray>''Nome_della_'''Classe'''_del_Controllo_cercato''</font>" Then Print "L'Oggetto è presente nel Form !"
 +
  Next
 +
 +
End
  
 +
===Usando La funzione "Str()" e l'operatore "Like"===
 +
In questo caso il nome della Classe del Controllo cercato va posto fra due asterischi.
 
  Public Sub Button1_Click()
 
  Public Sub Button1_Click()
 
   
 
   
Riga 59: Riga 59:
 
   
 
   
 
   For Each ob In Me.Children
 
   For Each ob In Me.Children
     If Object.Type(ob) = "<FONT color=gray>''Nome_della_'''Classe'''_del_Controllo_cercato''</font>" Then Print "L'Oggetto è presente nel Form !"
+
     If Str(ob) Like "'''*'''<FONT color=gray>''Nome_della_'''Classe'''_del_Controllo_cercato''</font>'''*'''" Then Print "L'Oggetto è presente nel Form !"
 
   Next
 
   Next
 
   
 
   
 +
End
 +
 +
=Se si conosce il nome della variabile del Controllo==
 +
 +
===Usando [https://gambaswiki.org/wiki/comp/gb/object/isvalid?l=it Object.IsValid()]===
 +
Public Sub Button1_Click()
 +
 +
  If Object.IsValid(FMain["<FONT color=gray>''Nome_della_'''Variabile'''_del_Controllo''</font>"]) Then
 +
    Print "L'oggetto è presente nel Form !"
 +
  Endif
 +
 
 
  End
 
  End
  
Riga 68: Riga 79:
 
   
 
   
 
   If IsNull(Me.Controls["<FONT color=gray>''Nome_della_'''variabile'''_del_Controllo''</font>"]) = False Then
 
   If IsNull(Me.Controls["<FONT color=gray>''Nome_della_'''variabile'''_del_Controllo''</font>"]) = False Then
 +
    Print "L'Oggetto è presente nel Form !"
 +
  Endif
 +
 +
<FONT color=gray>' ''oppure:''</font>
 +
  If IsNull(Me["<FONT color=gray>''Nome_della_'''variabile'''_del_Controllo''</font>"]) = False Then
 
     Print "L'Oggetto è presente nel Form !"
 
     Print "L'Oggetto è presente nel Form !"
 
   Endif
 
   Endif
 
   
 
   
 
  End
 
  End
 +
Può essere utile nel caso in cui il Controllo possa essere stato distrutto.
  
 
===Usando la Proprietà ".Name" dei Controlli===
 
===Usando la Proprietà ".Name" dei Controlli===
Riga 79: Riga 96:
 
    
 
    
 
   For Each ob In Me.Children
 
   For Each ob In Me.Children
     If ob.Name = "<FONT color=gray>'''''Variabile'''_del_Controllo''</font>" Then
+
     If ob.Name = "<FONT color=gray>''Nome_della_'''Variabile'''_del_Controllo''</font>" Then
 
       Print "L'oggetto è presente nel Form !"
 
       Print "L'oggetto è presente nel Form !"
 
     Endif
 
     Endif

Versione attuale delle 10:06, 12 dic 2023

Analizzeremo il caso in cui si debba verificare l'esistenza di un Oggetto grafico su un Form, e l'esistenza di un Oggetto grafico a sé stante privo di genitore.

Se si conosce solo il nome della Classe del Controllo

Usando Object.Is()

Public Sub Button1_Click()

 Dim ob As Object

 For Each ob In Me.Children
   If Object.Is(ob, "Nome_della_Classe_dell'Oggetto") Then
     Print "L'oggetto è presente nel Form !"
   Endif
 Next

End

Usando Is

Public Sub Button1_Click()

 Dim ob As Object

 For Each ob In Me.Children
   If ob Is "Nome_della_Classe_del_Controllo" Then
     Print "L'Oggetto è presente nel Form !"
   Endif
 Next

End

Usando Object.Class().Name

Public Sub Button1_Click()

 Dim ob As Object

 For Each ob In Me.Children
   If Object.Class(ob).Name = "Nome_della_Classe_del_Controllo_cercato" Then
     Print "L'Oggetto è presente nel Form !"
   Endif
 Next

End

Usando Object.Type()

Public Sub Button1_Click()

 Dim ob As Object

 For Each ob In Me.Children
   If Object.Type(ob) = "Nome_della_Classe_del_Controllo_cercato" Then Print "L'Oggetto è presente nel Form !"
 Next

End

Usando La funzione "Str()" e l'operatore "Like"

In questo caso il nome della Classe del Controllo cercato va posto fra due asterischi.

Public Sub Button1_Click()

 Dim ob As Object

 For Each ob In Me.Children
   If Str(ob) Like "*Nome_della_Classe_del_Controllo_cercato*" Then Print "L'Oggetto è presente nel Form !"
 Next

End

Se si conosce il nome della variabile del Controllo=

Usando Object.IsValid()

Public Sub Button1_Click()

 If Object.IsValid(FMain["Nome_della_Variabile_del_Controllo"]) Then
   Print "L'oggetto è presente nel Form !"
 Endif
 
End

Usando IsNull()

Public Sub Button1_Click()

 If IsNull(Me.Controls["Nome_della_variabile_del_Controllo"]) = False Then
   Print "L'Oggetto è presente nel Form !"
 Endif

' oppure:
 If IsNull(Me["Nome_della_variabile_del_Controllo"]) = False Then
   Print "L'Oggetto è presente nel Form !"
 Endif

End

Può essere utile nel caso in cui il Controllo possa essere stato distrutto.

Usando la Proprietà ".Name" dei Controlli

Public Sub Button1_Click()

 Dim ob As Object
 
 For Each ob In Me.Children
   If ob.Name = "Nome_della_Variabile_del_Controllo" Then
     Print "L'oggetto è presente nel Form !"
   Endif
 Next

End


Verifica di un oggetto a sé stante senza Genitore

Poniamo il caso di un Oggetto di tipo Window senza genitore, creato ad esempio così:

Private w As Window


Public Sub Form_Open()

 With w = New Window As "w"
   .W = 100
   .H = 200
   .X = 300
   .Y = 300  
   .Background = Color.Yellow
   .Show
 End With

End

Ne potremo verificare l'esistenza come segue:

Public sub Button1_Click()

' All'interno della funzione "Object.IsValid()" verrà inserita la variabile del tipo dell'oggetto a sé stante, del quale cui si vuole verificare l'esistenza:
 If Object.IsValid(w) Then Print "Oggetto esistente !"

End