L'unico metodo che conosco è quello di selezionare la riga pertinente al mese che vuoi fare risaltare.
In effetti sembra essere l'unica soluzione.
Volendo ad esempio evidenziare la riga num. 2 (quindi indice 1):
ListBox1[1].Selected = True
Uhm! Penso proprio che mi ero espresso male, applicando l'istruzione ListBox1[1].Selected = True in questa struttura:
Repeat
If n_mese < 10 Then
rif_mese$ = "0" & n_mese
Else
rif_mese$ = n_mese
Endif
name$ = "DDT" & codice$ & "@" & rif_mese$
test_file = Exist(_base & name$ & ".dbl")
If test_file = True
ListBoxMesi[n_mese].Selected = True
Endif
n_mese = n_mese + 1
Until n_mese > 12
si ottiene che ad essere selezionato è solo l'ultimo item che soddisfa il test, mentre dovrei poter fare un highlight di tutti gli item che soddisfano la condizione.
Probabilmente eseguendo una selezione viene automaticamente deselezionata quella precedente, beh, mi metterò alla ricerca di una proprietà che possa soddisfare la mia necessità
Probabilmente la selezione non funziona bene perché occorre prima puntare l'indice della ListBox sulla riga interessata:
ListBoxMesi[n_mese].Index= iInd
:ciao:
Ciao a tutti
Quindi tu desideri dare un colore (o in questo caso una evidenziazione) per ciascun mese ?
Si, per ciascun mese che sodddisfa la condizione:
test_file = Exist(_base & name$ & ".dbl")
If test_file = True
nello specifico per i mesi che hanno hanno il file presente, con più precisione quelli in cui è stato emesso almeno un D.D.T.
Per quanto riguarda l'amico Picavbg: il codice che mi hai suggerito:
ListBoxMesi[n_mese].Index = iInd
stranamente mi da errore:
ho anche provato a togliere la i iniziale ma il risultato non cambia.
Aggiunta dell'ultimo minuto: ho anche provato a sostituire iInd con n_mese, ma ottengo un ulteriore errore, più precisamente:
Unknown symbol 'index' in class '_ListBox_Item'
Grazie comunque
L'errore viene sollevato, poiché .Index non esiste come proprietà di ListBox[n]
Veramente dando F1 dall'Ide di Gambas -> Componenti 3.0 -> Qt4 -> ListBox si ottiene l'elenco delle proprietà, dei metodi e degli eventi legati alla ListBox e nel gruppo delle proprietà elencato in basso a sinistra la proprietà Index esiste ed io l'ho anche usata.
Secondo me era la variabile iInd che io avevo copiato erroneamente da un mio programma ad avere creato problemi a Franco.
Franco, scusami se non volendo ti ho suggerito una variabile non tua. Puoi riprovare utilizzando naturalmente le tue variabili:
n_mese = ListBoxMesi.Index ' e successivamente
ListBoxMesi[n_mese].Selected = True
oppure
n_mese = ListBoxMesi.Current.Key ' e successivamente
ListBoxMesi[n_mese].Selected = True
Io ho utilizzato entrambi le proprietà ed il mio programma non produce errori.
Fammi sapere.
:ciao:
Veramente dando F1 dall'Ide di Gambas -> Componenti 3.0 -> Qt4 -> ListBox si ottiene l'elenco delle proprietà, dei metodi e degli eventi legati alla ListBox e nel gruppo delle proprietà elencato in basso a sinistra la proprietà Index esiste ed io l'ho anche usata.
Non hai letto con attenzione quello che ho scritto.
Dunque....
questo:
esiste.
Questo:
ListBoxMesi[n_mese].Index =
non esiste.
@Picavbg
In effetti avevo anch'io pensato a questa eventualità ed avevo perciò provato a sostituire la tua variabile con la mia n_mese ricevendo di rimando l'errore che ho riportato nel precedente mio post.
ma fatemi capire un attimo ???: Mi state suggerendo di inserire le due righe dell'amico Picavbg nel mio listato che riporto sotto
Repeat
If n_mese < 10 Then
rif_mese$ = "0" & n_mese
Else
rif_mese$ = n_mese
Endif
name$ = "DDT" & codice$ & "@" & rif_mese$
test_file = Exist(_base & name$ & ".dbl")
If test_file = True
ListBoxMesi[n_mese].Selected = True
Endif
n_mese = n_mese + 1
Until n_mese > 12
ora n_mese viene determinato dal controllo sul file
test_file = Exist(_base & name$ & ".dbl")
If test_file = True
se il mese in esame possiede un file registrato il rispettivo mese nella ListBox si evidenzia, l'unico problema che ho riscontrato è che evidenziando un mese viengono de-evidenziati quelli precedenti, ora a quanto capisco dovrei modificare il controllo in questo modo
If test_file = True
n_mese = ListBoxMesi.Index
ListBoxMesi[n_mese].Selected = True
Endif
in questo caso però comprometterei il controllo perchè la variabile n_mese verrebbe sovrascritta dal valore di ListBoxMesi.index e mi bloccherebbe del tutto il ciclio Repeat, a meno che l'istruzione inserita non serva solo a non lasciar deselezionare i vari item, al che mi basterebbe scaricare il valore in una variabile fittizia, come uso io buffer$ ed il gioco sarebbe fatto.
Che ne dite?
@Picavbg
le variabili con il trattino sono una reminiscenza del vecchio programma ove il sottolinea non aveva nessuna valore, potrei quindi traformare le variabili in questo modo..... n_mese ===> nMese.
Grazie a tutti.
Se non inserisco altri post..... auguri di buon capodanno a tutti.
ora a quanto capisco dovrei modificare il controllo in questo modo
If test_file = True
n_mese = ListBoxMesi.Index
ListBoxMesi[n_mese].Selected = True
Endif
in questo caso però comprometterei il controllo perchè la variabile n_mese verrebbe sovrascritta dal valore di ListBoxMesi.index e mi bloccherebbe del tutto il ciclio Repeat
Certo, hai ragione. l'istruizione corretta é
ListBoxMesi.Index = n_mese
Tieni conto che nella ListBox puoi selezionare una sola riga alla volta oppure tutte le righe.
Ciao e Buon anno.
Rieccomi, sta scritto: "chi fa un azione al primo dell'anno la ripete tutto l'anno" che tradotto diventa: chi programma al primo dell'anno programma tutto l'anno.
@ Picavbg
ho provato ad inserire l'istruzione ListBoxMesi.Index = n_mese e non provoca problemi di sorta, ma non influisce in alcun modo sul comportamento della ListBoxMesi, in poche parole resta solo evidenziato l'ultimo item esaminato che ha superato la condizione:
test_file = Exist(_base & name$ & ".dbl")
If test_file = True
d'altronde nell'ultimo tuo post mi scrivevi:
Tieni conto che nella ListBox puoi selezionare una sola riga alla volta oppure tutte le righe.
ciò vuol dire che l'oggetto ListBox non può supportare ciò che intendo realizzare? a questo punto ciò che mi postava l'amico Vuott
...fai prima a cambiare oggetto.
ha un senso molto preciso, ma qual'è l'oggetto giusto da usare?
Ad occhio sull'editor di form vedo la TextArea e dall'help ho visto che supporta la proprietà Selected, quindi è pensabile che supporti un simile costrutto?
E poi cosa molto più importante, è in grado di supportare l'esigenza che vi ho illustrato?
Buon anno a tutti.
Ciao Golia,
:2birre: lavoro interessante anche se avresti potuto commentarlo un pochino. ;D
Io sincronizzerei il numero che appare nella textbox1 con quello della griglia.
Comunque è bene precisare che la ListBox ha la proprietà mode che permette di ottenere, se ho capito bene, quanto voleva a suo tempo Franco da Vercelli:
Public Sub Form_Open()
ListBox1.Add("Gennaio")
ListBox1.Add("Febbraio")
ListBox1.Add("Marzo")
ListBox1.Add("Aprile")
ListBox1.Add("Maggio")
ListBox1.Add("Giugno")
ListBox1.Add("Luglio")
ListBox1.Add("Agosto")
ListBox1.Add("Settembre")
ListBox1.Add("Ottobre")
ListBox1.Add("Novembre")
ListBox1.Add("Dicembre")
' imposta mode a multiple
ListBox1.Mode = 2
ListBox1[2].Selected = True
ListBox1[4].Selected = True
ListBox1[8].Selected = True
ListBox1[10].Selected = True
End
:ciao: