Autore Topic: [risolto]listbox vuota  (Letto 5080 volte)

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
[risolto]listbox vuota
« il: 10 Gennaio 2010, 14:31:34 »
buona domenica a tutti :-D
in questa soleggiata domenica (almeno dove abito io) mi sono trovato difronte ad un altro problema non da poco :-D
devo controllare che una listbox non sia vuota e ho pensato bene di controllare se listbox.count sia uguale a 0 solo che c'è un problema...
anche quando la listbox è vuota listbox.count vale comunque 1!!

a questo punto come posso fare per vedere se la listbox è vuota?
il mio progetto -> SITO

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: listbox vuota
« Risposta #1 il: 10 Gennaio 2010, 15:41:05 »
Usi la proprietà count di list

Ovvero:

Codice: [Seleziona]
IF ListBox1.List.Count = 0 THEN PRINT "vuoto"

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
Re: listbox vuota
« Risposta #2 il: 11 Gennaio 2010, 19:14:23 »
ennesimo problema da cui non esco... sarà la solita cavolata come sempre!!
con il comando che mi hai suggerito effettivamente ora ho il numero corretto di elementi nella listbox solo che il programma sembra non rispetti le condizioni quando la listbox è vuota...

è difficile da risolvere cosi a parole... vi allego i sorgenti! il problema è nella funzione ListBox1_Click dove gestisco il caso in cui la listbox sia vuota (è tutto commentanto dovreste capire) nonostante listbox1.list.count valga 0 il programma prosegue nell'if in cui listbox1.list.count vale 1... non riesco a capire!!  :muro:

p.s. il fatto che ci siano milioni di ripetizioni nel codice l'ho visto, appena finite alcune cose creo un modulo a parte con le funzioni che uso più spesso cosi snellisco molto il codice perchè cosi comincia a diventare abbastanza incasinato!!
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: listbox vuota
« Risposta #3 il: 11 Gennaio 2010, 20:06:50 »
a parte l' incasinamento genrale, la cosa che mi salta ll' occhio è questa:

Codice: [Seleziona]

'se ero sull'ultimo elemento fermo tutto
        IF ListBox1.Index = ListBox1.List.Count THEN

 


index inizia da 0  ma count inizia da 1 quindi dovrebbe essere:

Codice: [Seleziona]

'se ero sull'ultimo elemento fermo tutto
        IF ListBox1.Index = ListBox1.List.Count-1 THEN

 


non so se qui il prob :)

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
Re: listbox vuota
« Risposta #4 il: 11 Gennaio 2010, 20:13:12 »
si si dell'incasinamento generale ne sono consapevole, un problema alla volta :-)

grazie per l'aiuto ma il problema non è quello!!
è assurdo perchè con le diverse print che ho messo nel codice si vede che listbox1.list.count alla fine è uguale a 0 ma nonostante questo entra nell'if sbagliato...

qualcosa non mi quadra :-?
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: listbox vuota
« Risposta #5 il: 11 Gennaio 2010, 20:48:59 »
un consiglio che ti posso dare è di fare attenzione quando indichi due if in cui uno è if i<1 then e un altro è if i>1 then perchè così prendi in esame solo i casi in cui i sia minore o maggiore saltando la condizione i=1.


a parte questo non capisco quando si verifica il problema se la list è vuota e ci clicco sopra non succede nulla

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
Re: listbox vuota
« Risposta #6 il: 11 Gennaio 2010, 21:03:20 »
no beh prima avevo scritto if ...=0 e if ...=1 ma non sapendo più a cosa pensare ho provato anche cosi!!

ma quel controllo li "funziona" se prima ci sono elementi nella playlist!
mi spiego, quando un utente importa delle canzoni queste vengono aggiunte automaticamente nella playlist, ma supponiamo che uno di questi file per qualche motivo non si trovi più nella posizione in cui era prima, ovviamente questo causerebbe un crash del programma in quanto quando vado a fare Music.Load(....) avrei un bel NULL, in quel punto li sarei nel caso in cui provo a riprodurre gli elementi nella playlist e mi ritrovo senza più elementi, ovviamente si deve fermare tutto!!
il mio progetto -> SITO

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: listbox vuota
« Risposta #7 il: 12 Gennaio 2010, 16:35:15 »
Il problema risiede nelle proprietà intrinseche del controllo per cui, come ti ha detto luca, l'evento Click funziona se nel ListBox ci sono degli elementi. Se non ci sono, l'evento Click non viene generato semplicemente perché non è stato cliccato nessun elemento.

Se infatti crei per il ListBox anche l'evento MouseDown e ci metti dentro PRINT ListBox1.List.Count, vedrai che, anche in caso di lista vuota, nel terminale viene correttamente stampato "0" non appena l'utente clicca sul controllo.

Quindi secondo me dovresti rivedere il codice portando il tuo algoritmo in quell'evento MouseDown, che si genera ogni volta che l'utente clicca sul controllo, indipendentemente se seleziona o meno un elemento, e da lì poi controllare se l'utente ha selezionato una canzone oppure ha cliccato in un'area vuota.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: listbox vuota
« Risposta #8 il: 12 Gennaio 2010, 16:51:54 »
Oppure un'altra soluzione che mi viene in mente (brutta ma pratica e funzionale come piace a me :-D ) è quella di creare un button che gestisca l'eventuale canzone selezionata. In questo modo hai un controllo sull'oggetto listbox estraneo alle proprietà intrinseche dell'oggetto stesso....

3.....2.....1.....0 ----- Ora arriva la frase di fsurfing per sminuire la mia affermazione...:-D

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: listbox vuota
« Risposta #9 il: 12 Gennaio 2010, 16:54:26 »
No no. Non creiamo arzigogoli vari. L'evento MouseDown è quello da usare per controllare i click su una listbox anche vuota. Basta che l'amico inserisca un controllo in più per verificare se l'utente ha selezionato qualcosa oppure no. Mi pare che ci sia un controllo apposta nella Listbox anche se ora a mente non mi viene.

P.S.:
basta già che controlli se ListBox1.Text sia diverso da NULL per vedere se l'utente ha cliccato qualcosa. Insomma la soluzione è semplice. L'importante è che funzioni il click, il resto vien da solo.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: listbox vuota
« Risposta #10 il: 12 Gennaio 2010, 16:57:41 »
Leo!!!!!! Mi stupisco di te!!! Sbaglio o eri tu a dire che quanti più bottoni ci sono da premere più sei contento????

Eh no Leo caro!!!! Se sei tornato incoerente, per cortesia, riparti sullo stesso binario di prima...

:-D

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: listbox vuota
« Risposta #11 il: 12 Gennaio 2010, 18:50:44 »
Citazione
Oppure un'altra soluzione che mi viene in mente (brutta ma pratica e funzionale come piace a me ) è quella di creare un button che gestisca l'eventuale canzone selezionata. In questo modo hai un controllo sull'oggetto listbox estraneo alle proprietà intrinseche dell'oggetto stesso....


non ho parole!  :-o

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: listbox vuota
« Risposta #12 il: 12 Gennaio 2010, 23:34:30 »
La valvola termoionica è svalvolata termoionicamente parlando generando sulla coppia catodo/anodo correnti spurie che inficiano la stabilità del flusso elettrico accoppiato al dissipatore dissipato.  :giullare:

Cmq, sì, ero io l'amante dei "ninnoli" grafici :-P
Però qua i bottoncini servono a poco se la logica dietro è sballata
Visita il mio sito personale: http://www.leonardomiliani.com

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
Re: listbox vuota
« Risposta #13 il: 13 Gennaio 2010, 17:05:09 »
dunque eccomi... sono stato assente per qualche giorno per "colpa" dell'università ma eccomi di nuovo!

dunque penso che proverò la soluzione proposta da leo72!!

provo e vi faccio sapere!
il mio progetto -> SITO

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
Re: listbox vuota
« Risposta #14 il: 13 Gennaio 2010, 18:03:40 »
dunque... penso di essere vicino alla soluzione ma mi trovo difronte all'ennesimo mistero (per me che sono ignorante in gambas :duro: ) e precisamente mi stavo chiedendo che valore contenesse listbox1.index, che da documentazione dovrebbe ritornare l'elemento sul quale ci si trova, ma non mi pare sia molto cosi dato che con una PRINT vedo che index vale sempre -1... c'è qualcos altro che non sò?
il mio progetto -> SITO