Non sono riuscito a trovare nel forum, né nella guida "A Beginner's Guide to Gambas" la soluzione del mio problema:
Per immettere la data della giornata in cui inserire le mie registrazioni da utente, ho pensato di costruire una Form con tre Combobox (read-only) e due pulsanti per annullare o confermare la selezione operata nelle Combobox.
Le Combobox dispongono ciascuna della propria "list" di item per la scelta del giorno, del mese e dell'anno. Solo che già in fase di "show" della form vorrei mostrare le combiobox con la selezione già preparata di giorno,mese,anno relativi alla data di accensione del sistema, in modo da realizzare una preimpostazione ordinaria. Ho già preparato i campi dove ho immesso le informazioni prese dalla data di sitema con le istruzioni
DataOggi=Date
Giorno = Day(DataOggi)
Mese = Month(DataOggi)
Anno = Year(DataOggi)
Ora, dovrei solamente selezionare da codice gli item corrispondenti nelle relative "list". Leggendo in un post un suggerimento di md9327 (.selection 'ritorna un oggetto con le informazioni necessarie), avevo intuito che l'istruzione suggerita potesse funzionare anche per selezionare l'item desiderato e, partendo da codesto concetto, ho scritto:
ComboGiorno.selection(Giorno)
ma mi sono sbagliato, perché ho dovuto incassare l'errore "Not a function" in esecuzione e sono rimasto a guardare... :roll:
Poichè non credo che sia impossibile comandare una simile operazione da codice, spero che mi possiate dare una spinta...rella. :-)
:ciao: :ciao:
Devi usare la proprietà .Index().
Sapendo che la numerazione degli elementi di qualunque oggetto in Gambas inizia da 0, se hai ComboGiorno che contiene i giorni da 1 a 31, per selezionare il 12 devi semplicemente scrivere:
ComboGiorno.Index(Giorno-1)
L'altra alternativa è impostare la proprietà .Text con la stringa corrispondente al giorno (o mese, o anno).
Se, per ipotesi, hai riempito l'elenco dei giorni, con stringhe formattate a due caratteri (es. primo giorno = "01"), basta che imposti la proprietà di cui sopra in:
oppure, direttamente dalla data di sistema:
.Text = Format(Day(Now()), "00")
Comunque, dato che si tratta in definitiva di numeri ben definiti, l'uso della proprità .Index resta più semplice; 'importante è che la lista nella combo sia ordinata in modo corretto.
md9327 ha scritto:
L'altra alternativa è impostare la proprietà .Text con la stringa corrispondente al giorno (o mese, o anno).
Se, per ipotesi, hai riempito l'elenco dei giorni, con stringhe formattate a due caratteri (es. primo giorno = "01"), basta che imposti la proprietà di cui sopra in:
Comunque, dato che si tratta in definitiva di numeri ben definiti, l'uso della proprità .Index resta più semplice; 'importante è che la lista nella combo sia ordinata in modo corretto.
Ho provato sia il suggerimento di Leo72 che il tuo 1°. Il risultato é il seguente:
combo_giorno.Text = Str$(Giorno) ->> F U N Z I O N A !
mentre
combo_giorno.Index(Giorno-1) ->> produce l'errore "Not an object"
Pur avendo superato l'ostacolo col Vostro aiuto, mi pare necessario capire perché il richiamo della proprietà .index non debba funzionare. :-o
:ciao:
combo_giorno.index = Giorno-1 ->> ha funzionato!
Grazie; ho acquisito una nuova picccola esperienza. :-D
:ciao: