avrei un piccolo problema nel visualizzare un array 2d in una combobox...
:ciao:
Questo tuo messaggio mi ha incuriosito: non avevo mai pensato a far gestire un array pluridimensionato da un ComboBox.
Allora ho fatto una cosa del genere (non so se è sostanzialmente analogo a quello tuo):
Public Sub Form_Open()
Dim a As New String[2, 2]
a[0, 0] = "alibaba"
a[1, 0] = "simbad"
a[0, 1] = "aladino"
a[1, 1] = "abukir"
ComboBox1.List = a
End
...ed infatti nel Combo viene mostrata visivamente una sola unica lista-colonna, però la disposizione è sulla base del primo parametro dell'array:
alibaba
aladino
simbad
abukir
Sarebbe interessante fare una prova per vedere se in questo caso il ComboBox ha una capacità maggiore di contenere elementi.
Che io ricordi le ComboBox e le ListBox (anche in ambiente VisualBasic) permettono solamente la gestione di array ad una sola dimensione. L'ostacolo si può superare benissimo riunendo le due sottodimesioni (a[n,0] e a[n,1]) in un 'unica stringa, aggiungendovi magari un carattere sparatore come ".(punto) ,(virgola) ;(punto e virgola) :(due punti) ..., per riconoscerle e trattarle adeguatamente dopo
Dim a As New String[2]
a[0] = "alibaba.aladino"
a[1] = "simbad.abukir"
:ciao:
Che io ricordi le ComboBox e le ListBox (anche in ambiente VisualBasic) permettono solamente la gestione di array ad una sola dimensione. L'ostacolo si può superare benissimo riunendo le due sottodimesioni (a[n,0] e a[n,1]) in un 'unica stringa, aggiungendovi magari un carattere sparatore come ".(punto) ,(virgola) ;(punto e virgola) :(due punti) ..., per riconoscerle e trattarle adeguatamente dopo
Dim a As New String[2]
a[0] = "alibaba.aladino"
a[1] = "simbad.abukir"
:ciao:
.......ma non è che hai semplicemente scritto due normali stringhe contenenti nel mezzo il carattere del punto ? ???
Il punto o punto-e-virgola o due-punti o virgola sono solamente un esempio del crt di separazione logica fra la prima e la seconda dimensione dello stesso elemento di ComboBox(ListBox).List. La sua presenza dovrebbe rendere più facile un'eventuale successiva ricerca o riconoscimento della stringa puntata da ComboBox(ListBox).List.Index, attraverso un insieme di istruzioni come le seguenti:
DIM $ArrayMio AS NEW String[]
Dim i as Integer
Dim n as Integer
n=ComboBox.count-1
For i = 0 to n
$ArrayMio.add= Split(ComboBox.List[i],"." ) ' se il separatore fra la prima e la seconda dimensione della ComboBox.List è rappresentata dal "."
Next
Un'altra soluzione potrebbe esser l'utilizzo dell'istruzione "Instr":
Dim i as Integer
Dim iLun1 as Integer
Dim iLun2 as Integer
Dim k as Integer
Dim n as Integer
Dim $StriMia as String
Dim $ArrayMio As New String[n, 2]
n=ComboBox.count-1
For i = 0 to n
k=Instr(ComboBox.List[i])
iLun1=len(ComboBox.List[i]-k
iLun2=len(ComboBox.List[i]-(iLun1+1))
ArrayMio[i,0]=Left(ComboBox.List[i],iLun1)
ArrayMio[i,1]=Right(ComboBox.List[i],iLun2)
Next
Spero di essere riuscito a spiegare meglio quello che non ero riuscito a fare in maniera assolutamente sintetica. ;D
:ciao:
ma come si fa a visualizzare questa griglia in un form...
Dall'editor grafico di Gambas, più esattamente in basso a destra scegli la scheda "View". Lì poi clicca sulla GridView, e la porrai nel form come fosse un qualsiasi altro oggetto.
Ti dò una mano anticipatamente. ;D
Guardati e prova questo esempio basilare:
Public Sub Button1_Click()
Dim mioarray As New Integer[6, 11]
Dim a, b, c As Byte
' Assegnamo dei valori agli elementi dell'array bidimensionale,
' (così possiamo condurre questo esempio):
For a = 0 To 5
For b = 0 To 10
mioarray[a, b] = c
Inc c
Next
Next
' Impostiamo 6 righe ed 11 colonne alla GridView:
With GridView1
.Columns.Count = 11
.Rows.Count = 6
End With
' Assegnamo a ciascuna cella della GridView
' (una cella viene individuata con: GridView1[a, b] !)
' il valore del corrispondente elemento dell'array bidimensionale:
For a = 0 To 5
For b = 0 To 10
GridView1[a, b].Text = Str(mioarray[a, b]) '...l'uso della funzione di conversione Str() qui non è per forza indispensabile...
Next
Next
End