Diviso da Array di controlliHo scoperto una cosa strana sul controllo ComboBox.
Se noi carichiamo il controllo da codice direttamente col metodo Add otteniamo un comportamento diverso rispetto all'uso della proprietà List (sia da IDE che da codice).
Vediamo Add:
Public Sub Form_Open()
ComboBox1.Add("PIPPO")
ComboBox1.Add("PLUTO")
ComboBox1.Add("PAPERINO")
End
Se noi carichiamo così la combo si presenta con visibile la scritta PIPPO.
E se noi aggiungiamo questo codice:
Public Sub Form_Open()
Dim ob As Object
ComboBox1.Add("PIPPO")
ComboBox1.Add("PLUTO")
ComboBox1.Add("PAPERINO")
For Each ob In Me.Children
If Object.Type(ob) = "ComboBox" Then
ob.index = -1
Endif
Next
End
otteniamo la combo vuota e via via variando il numero lo zero come da default PIPPO l'uno PLUTO ecc.
Vediamo List:
Public Sub Form_Open()
Dim ob As Object
Dim s As New String[]
s.Add("PIPPO")
s.Add("PLUTO")
s.Add("PAPERINO")
ComboBox1.List = s
End
Se noi carichiamo così la combo si presenta vuota senza la scritta.
E se noi aggiungiamo questo codice:
For Each ob In Me.Children
If Object.Type(ob) = "ComboBox" Then
ob.index = 0
Endif
Next
che dovrebbe mostrare la scritta PIPPO non funziona (-1, 1 e 2 funzionano) per poter mostrare nella combo il primo valore della lista (PIPPO) occorre fare così:
For Each ob In Me.Children
If Object.Type(ob) = "ComboBox" Then
ob.index = 1
ob.index = 0
Endif
Next
funziona anche se al posto di 1 mettiamo -1 o 2.
Succede anche a voi?