Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gianluigi - 13 Gennaio 2016, 15:39:42

Titolo: ComboBox proprietà List strano comportamento
Inserito da: Gianluigi - 13 Gennaio 2016, 15:39:42
Diviso da Array di controlli
Ho 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:
Codice: [Seleziona]
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:
Codice: [Seleziona]
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:
Codice: [Seleziona]
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:
Codice: [Seleziona]
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ì:
Codice: [Seleziona]
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.  :rolleyes:
Succede anche a voi?
Titolo: Re:Re:Array di controlli
Inserito da: vuott - 13 Gennaio 2016, 15:58:06
Vediamo List:
Codice: [Seleziona]
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.
No, a me il ComboBox si presenta con la scritta PIPPO, ma non esistono più gli altri due elementi e non è possibile dunque aprire il ComboBox.



E se noi aggiungiamo questo codice:
Codice: [Seleziona]
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)
A me invece mostra la scritta PIPPO ed, come ho prima descritto, non esistono gli altri elementi del ComboBox .
Titolo: Re:Re:Array di controlli
Inserito da: Gianluigi - 13 Gennaio 2016, 16:18:00
Vediamo List:
Codice: [Seleziona]
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.
No, a me il ComboBox si presenta con la scritta PIPPO, ma non esistono più gli altri due elementi e non è possibile dunque aprire il ComboBox.


 :rotfl:
Sei sicuro di aver dimensionato una nuova array dinamica?

Citazione
E se noi aggiungiamo questo codice:
Codice: [Seleziona]
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)
A me invece mostra la scritta PIPPO ed, come ho prima descritto, non esistono gli altri elementi del ComboBox .

Per tranquillità ho riprovato copiando dal forum e a me da quanto ho scritto.
Se non hai fatto errori di copia incolla allora andiamo bene...
:rotfl: :rotfl:

 ???  :rolleyes: :hatecomputer:  :hatecomputer:

PS: Aspettiamo altri responsi  :mad:
Titolo: Re:Re:Array di controlli
Inserito da: Gianluigi - 13 Gennaio 2016, 16:23:15
Senti vuott,
puoi fare questa prova?
Se carichi la List della combo dalla IDE?

 :ciao:
Titolo: Re:Re:Array di controlli
Inserito da: vuott - 13 Gennaio 2016, 17:00:55
Sei sicuro di aver dimensionato una nuova array dinamica?
Io ho semplicemente copiato quello che hai scritto tu.
Titolo: Re:Re:Array di controlli
Inserito da: Gianluigi - 13 Gennaio 2016, 22:50:12
La ComboBox dietro le quinte è un array di stringhe e gli array si possono copiare.
Ho provato anche con la Trunk in vari modi e funziona sempre.
Ne avevo (avevamo) parlato anche qui (http://www.gambas-it.org/smf/index.php?topic=4614.msg37506#msg37506), a mio parere c'è qualcosa che non funziona nel tuo Gambas, dovresti indagare.