Autore Topic: ComboBox proprietà List strano comportamento  (Letto 383 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
ComboBox proprietà List strano comportamento
« il: 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?
« Ultima modifica: 14 Gennaio 2016, 19:44:03 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.320
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Re:Array di controlli
« Risposta #1 il: 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 .
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Re:Array di controlli
« Risposta #2 il: 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:
« Ultima modifica: 13 Gennaio 2016, 16:19:08 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Re:Array di controlli
« Risposta #3 il: 13 Gennaio 2016, 16:23:15 »
Senti vuott,
puoi fare questa prova?
Se carichi la List della combo dalla IDE?

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.320
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Re:Array di controlli
« Risposta #4 il: 13 Gennaio 2016, 17:00:55 »
Sei sicuro di aver dimensionato una nuova array dinamica?
Io ho semplicemente copiato quello che hai scritto tu.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Re:Array di controlli
« Risposta #5 il: 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, a mio parere c'è qualcosa che non funziona nel tuo Gambas, dovresti indagare.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro