Ciao a tutti :-)
Nel progetto che sto realizzando per imparare Gambas, ho inserito una combobox per contenere un elenco dei progetti assegnabili per un determinato intervento. Sto facendo molta confusione e vorrei che qualcuno mi desse una delucidazione per vedere non tanto SE ho capito ma COSA ho capito :-)
I progetti hanno come codice una chiave numerica intera, e ho pensato che fosse cosa buona e giusta usare questo codice quando faccio la mia aggiunta alla ComboBox, usando una sintassi come la seguente:
sql = "Select * from Progetti order by Descrizione"
hData = db.Exec(sql)
cbProgetti.Clear()
FOR EACH hData
cbProgetti.Add(hData!Descrizione, hData!Progetto)
NEXT
Dove "Progetto" è il codice del progetto e "Descrizione" è la descrizione (ma va?! :-))
Va tutto bene, mi si carica la Combo, ma quando vado a usarla non fa quello che mi aspetto. Innanzi tutto, quando recupero i dati di un intervento esistente, metto il codice del progetto nel Combo, modificando il valore .Index, e già qui ho qualche dubbio. Quando sposto il record selezionato sposto il valore .Index nel campo del file.
Ma non sempre ho una corrispondenza esatta, e questo non capisco se dipenda dal fatto che l'index in realtà NON è la key ma un valore tipo un indice di array, e quindi che devo aggiungere/sottrarre una unità per avere il valore esatto, oppure se devo settare altre proprietà.
Inoltre, quando emetto il pannello con l'index settato in modo corretto (?), mi aspettavo di avere selezionato la riga che mi interessa, ma questo non capita.
Come avete potuto vedere, ho le idee parecchio confuse, ma questo temo sia normale per chi, come me, arriva da ambienti di programmazione completamente diversi (se volete qualche spiegazione sui SubFile sono a disposizione :-) ).
Ho provato a capire qualcosa con la documentazione e con il forum, ma sinceramente non ho capito granché... tra l'altro, anche il Wiki mi è sembrato piuttosto scarno (per ora). Se riesco a capire come funzionano i Combo, mi impegno a modificare il Wiki in modo che diventi CHIARISSIMO! :-D
Grazie a tutti