Gambas-it

Archivi (sola lettura) => Domande tecniche (Gambas 2) => Topic aperto da: fly_1234 - 06 Luglio 2012, 23:40:29

Titolo: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 06 Luglio 2012, 23:40:29
avrei un piccolo problema nel visualizzare un array 2d in una combobox o listbox e premetto che sono un neofita sia di gambas che nella programmazione...dopo aver scritto combobox.list=prova dove prova è un array 2d mi viene visualizzata una unica colonna con tutti i dati di prova...ho letto la guida ma forse non abbastanza ma non riesco ad impostare una visualizzazione corretta delle colonne...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 07 Luglio 2012, 01:39:55
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):
Codice: gambas [Seleziona]

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.
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: md9327 - 07 Luglio 2012, 02:33:42
In effetti è strano, e devo dire che avevo tentato di creare un qualcosa a livello addirittura di oggetti, ma le ComboBox e le ListBox non pare lo permettano.
Il fatto che comunque presentino un valore da un array pluridimensionale potrebbe anche essere un bug...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: Picavbg - 07 Luglio 2012, 19:36:30
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
Codice: gambas [Seleziona]
Dim a As New String[2]  
a[0] = "alibaba.aladino" 
a[1] = "simbad.abukir" 

 :ciao:
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 07 Luglio 2012, 19:49:15
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
Codice: gambas [Seleziona]
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 ?  ???
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 07 Luglio 2012, 22:43:33
quindi sembra chiaro che i combobox e i listbox non si possono utilizzare per rappresentare array2d. Cosa si può utilizzare?
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 07 Luglio 2012, 23:17:50
Scusa, vorrei capire meglio.
Come - diciamo - vorresti che fossero rappresentati ? Cioè, come visivamente vorresti che fossero mostrati ?
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 07 Luglio 2012, 23:34:32
leggo da un database record[6,11] e vorrei visualizzarli uno alla volta nel form in combobox o listbox e non so come fare...cosa altro potrei utilizzare?
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 07 Luglio 2012, 23:42:32
...ma all'interno di un elemento di un array pluridimensionale non v'è comunque un solo valore ?  ???
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: Picavbg - 07 Luglio 2012, 23:45:11
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
Codice: gambas [Seleziona]
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:
Codice: [Seleziona]
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":
Codice: [Seleziona]
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:
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 07 Luglio 2012, 23:55:32
i record contengono diversi campi di numeri (integer), vorrei leggere il record[6,11] e passarlo sul form in una specie di griglia...
Picavbg ho letto i listati ma non ho capito se la soluzione può essere adatta a come sopra...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 07 Luglio 2012, 23:58:31
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
 :ciao:
Adesso ho compreso il tuo intento.

 :ciao:
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 08 Luglio 2012, 00:00:57
... vorrei leggere il record[6,11] e passarlo sul form in una specie di griglia...

Scusami, ma lo specifico record[6,11] non contiene un solo valore ?
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 08 Luglio 2012, 00:12:49
no sono valori diversi...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 08 Luglio 2012, 00:16:36
no sono valori diversi...
Scusami, pensavo ti riferissi ad uno specifico elemento dell'array bidimensionale.

Allora mi astengo, mi spiace, non ho mai trattato  :-X con i database record.
Pensavo che volessi operare con i classici array.
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 08 Luglio 2012, 00:23:38
ma carico la struttura del record in un array bidimensionale e vorrei riportarla sul form in 2d...l'array è : mio_array[6,11] as integer...sul form ho un puklsante avanzamento record e li aggiorno i dati nell'array e sul form si vedono i dati aggiornati...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 08 Luglio 2012, 00:32:58
ma carico la struttura del record in un array bidimensionale e vorrei riportarla sul form in 2d...l'array è : mio_array[6,11] as integer...
Quindi tu carichi tutto in una matrice di 6 righe ed 11 colonne

Quindi a mio modesto parere, se ho capito, dovrai servirti di una griglia appunto così composta.
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 08 Luglio 2012, 00:40:28
esatto ma come si fa a visualizzare questa griglia in un form senza ne combobox e ne listbox? non riesco a venirne a capo...creare 66 caselle di testo mi sembra uno spreco in tutti i sensi...di gridview o tableview non trovo la docu per cui non saprei come usarli...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 08 Luglio 2012, 00:44:04
esatto ma come si fa a visualizzare questa griglia in un form senza ne combobox e ne listbox? non riesco a venirne a capo...creare 66 caselle di testo mi sembra uno spreco in tutti i sensi...di gridview o tableview non trovo la docu per cui non saprei come usarli...
Fai una ricerca qui nel Forum sulle GridView: c'è abbastanza. Anzi ultimamente se n'è trattato in modo particolare.
Poniti nella Home del Forum e usa lo strumento Ricerca (sotto "Il Resto del PInguino", in alto a destra).

Se successivamentre troverai problemi, gli amici qui nel Forum saranno sempre pronti a darti una mano.

    :ciao:
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 08 Luglio 2012, 00:49:36
ok grazie
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 08 Luglio 2012, 01:04:43
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:
Codice: gambas [Seleziona]

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
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: fly_1234 - 08 Luglio 2012, 01:58:28
beh...che dire se non un grosso grazie per la tua risposta e la tua disponibilità...sei in "gamba"'s"...
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: vuott - 08 Luglio 2012, 02:02:42
beh...che dire se non un grosso grazie per la tua risposta e la tua disponibilità...sei in "gamba"'s"...

Invece sei stato sfortunato  :-\ , poiché con me hai avuto a che fare con l'iscritto al forum più inesperto che c'è ! :-X
Titolo: Re: piccolo aiuto sui combobox e listbox
Inserito da: md9327 - 08 Luglio 2012, 10:31:08
...ma anche uno dei più disponibili...  :ok: