Autore Topic: [RISOLTO] Combobox - Chiarimenti sul suo utilizzo  (Letto 1668 volte)

Offline borch

  • Gamberetto
  • *
  • Post: 38
    • Mostra profilo
[RISOLTO] Combobox - Chiarimenti sul suo utilizzo
« il: 03 Novembre 2010, 22:35:17 »
Salve a tutti.
Mi scuso per l'argomento ormai piuttosto inflazionato nel forum ma vi assicuro che, nonostante il tempo speso a leggere i post e provare, non riesco a capire come risolvere il problema che segue.

Leggo i dati da un database che poi visualizzo su di un form.
Alcuni dei campi sono visualizzati tramite comboboxes.
Con il codice seguente "popolo" la combobox di turno
Codice: [Seleziona]
ComboBox.Add("Item1")
ComboBox.Add("Item2")
...
Con un semplice controllo leggo dal database il campo del record da visualizzare, ne individuo l'indice all'interno della combobox e infine lo visualizzo con
Codice: [Seleziona]
ComboBox.Text = ComboBox[Indice].Text

Fin qui tutto bene: quando scorro un record dopo l'altro il valore del campo viene visualizzato correttamente.

Il problema sorge quando desidero modificarne il valore, scegliendone uno nuovo dalla combobox. Semplicemente non viene modificato.
Immagino a questo punto di dovere agire con l'evento Change e di modificare la proprietà ComboBox.Text in base alla scelta effettuata. In quale proprietà della combo è individuata tale scelta?
Grazie e un saluto a tutti.
« Ultima modifica: 07 Novembre 2010, 10:12:58 da borch »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Combobox - Chiarimenti sul suo utilizzo
« Risposta #1 il: 03 Novembre 2010, 23:55:49 »
per cambiare il valore di un campo di una combo credo che l' unico modo sia di modificare la lista, puoi a tal proposito utilizzare i metodi degli array ricordandoti che la lista della combo non è altro che un array:


Codice: gambas [Seleziona]

id=combobox1.index 'ricavo l' indice della selezione o fai così oppure leggendo nel db ..fai tu

combobox1.list.fill(nuovovalore,id,1)





Offline borch

  • Gamberetto
  • *
  • Post: 38
    • Mostra profilo
Re: Combobox - Chiarimenti sul suo utilizzo
« Risposta #2 il: 04 Novembre 2010, 00:29:17 »
Grazie fsurfing.
Quello che però voglio fare non è modificare i valori di una combobox.
Semplicemente voglio poter visualizzare nella combobox un valore letto da un record di un database ed eventualmente modificarlo. I record letti dal database sono sempre e solo quelli presenti nella combobox, quindi non è necessario aggiungerne altri.
Il problema è che una volta che ho scritto il valore del database nella proprietà .text della combobox, non riesco successivamente a modificarlo tramite una semplice selezione dalla combobox stessa. Rimane sempre il valore scritto originariamente con
Codice: [Seleziona]
ComboBox.Text = ComboBox[Indice].Text

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Combobox - Chiarimenti sul suo utilizzo
« Risposta #3 il: 04 Novembre 2010, 00:50:07 »

Codice: [Seleziona]
combobox1.list.fill(nuovovalore,id,1)  
il codice serve appunto per modificare il testo di una riga indicata dall' indice  del combobox

se invece devi modificare il valore nel db è un altra faccenda..ma forse non ho ancora capito, posta un esempio al limite
« Ultima modifica: 04 Novembre 2010, 00:52:39 da fsurfing »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Combobox - Chiarimenti sul suo utilizzo
« Risposta #4 il: 04 Novembre 2010, 01:21:09 »
Grazie fsurfing.
Quello che però voglio fare non è modificare i valori di una combobox.
Semplicemente voglio poter visualizzare nella combobox un valore letto da un record di un database ed eventualmente modificarlo. I record letti dal database sono sempre e solo quelli presenti nella combobox, quindi non è necessario aggiungerne altri.
Il problema è che una volta che ho scritto il valore del database nella proprietà .text della combobox, non riesco successivamente a modificarlo tramite una semplice selezione dalla combobox stessa. Rimane sempre il valore scritto originariamente con
Codice: [Seleziona]
ComboBox.Text = ComboBox[Indice].Text
Anch'io non ho capito bene. Mi sembra che tu voglia esporre nell ComboBox.Text, di volta in volta, una delle righe della ComboBox.List, senza dovere per altro aggiornare la tabella corrispondente nel DB.
Per fare questo , mi pare che però utilizzi due ComboBox, una per la scelta della stringa da mostrare, l'altra per puntare tramite indice alla riga che vorresti appunto mostrare.
Se ho capito male e la ComboBox é, come dovrebbe essere, solamente una, allora puoi utilizzare l'ottima soluzione di Fsurfing, oppure questa:
Codice: [Seleziona]
ComboBox.Index = indice_di_ComboBox
É quella che utilizzo sempre io e ti assicuro che funziona meravigliosamente.  :)
Ciao.
:ciao: