Autore Topic: [risolto]bottone in stato di premuto e passare da un elemento all'altro in una listview  (Letto 1465 volte)

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
1° problema: volevo sapere se è possibile fare in modo che un bottone una volta premuto resti nello stato di premuto, in poche parole se un utente in un player audio schiaccia il bottone per la modalità shuffle il disegno del bottone rimane premuto ad indicare che è stato premuto (ma va? :-D).
Ho verificato tra le proprietà del bottone ma non mi pare ci sia niente del genere.

2°problema: sono sempre nel mio progetto del player audio e ho implementato la playlist con una listview, ovviamente quando in una listview ho più file audio quando uno termina deve passare all'elemento successivo, per fare questo ho inserito nella funzione che si occupa di gestire il timer uno spezzone di codice che dice che quando Music.Pos = 0 allora significa che lui deve passare all'elemento successivo, e l'ho implementato cosi:
Codice: [Seleziona]
IF Music.Pos = 0 AND IF REPEATS = FALSE THEN
    ListView1.MoveBelow
    timMusic.Enabled = FALSE
    timMusic.Delay = 1000
    timMusic.Enabled = TRUE
    ListView1_Click
    timMusic.Start
  ENDIF

solo che quando faccio quel MoveBelow mi dice che l'elemento successivo è NULL (cosa non vera), ho provato anche con il metodo MoveNext ma il problema rimane lo stesso...
dove sbaglio?
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
1° problema >>non devi usare un button ma un togglebutton
2° prova con con
Codice: [Seleziona]

IF Music.Pos = 0 AND IF REPEATS = FALSE THEN
    IF ListView1.index <> ListView1.Count - 1 THEN
        ListView1.index = ListView1.index + 1
    ELSE
        ListView1.index = 0
    ENDIF
   
    timMusic.Enabled = FALSE
    timMusic.Delay = 1000
    timMusic.Enabled = TRUE
    ListView1_Click
    timMusic.Start
  ENDIF
 

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
1° problema -> risolto :pint:

2° problema -> ho capito come mi suggerisci di risolverlo ed è sensato solo che l'attributo index non c'è per una listview e non c'è un attributo in grado di sostituirlo... cosa ci posso mettere al posto di listview.index?
il mio progetto -> SITO

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Prova con

Codice: [Seleziona]
IF Music.Pos = 0 AND IF REPEATS = FALSE THEN 
    IF ListView1.item.key <> ListView1.Count - 1 THEN  
        ListView1.movenext
    ELSE
        ListView1.movefirst
    ENDIF  
     
    timMusic.Enabled = FALSE
    timMusic.Delay = 1000
    timMusic.Enabled = TRUE
    ListView1_Click
    timMusic.Start
  END IF

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
mi restituisce ancora NULL
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
potresti usare una listbox è molto più gestibile
in alternativa prova con:
Codice: [Seleziona]

 IF Music.Pos = 0 AND IF REPEATS = FALSE THEN
    IF ListView1.item.key <> ListView1.Count - 1 THEN  
        ListView1.item.MoveAfter
    ELSE
        ListView1.Item.MoveFirst
    ENDIF  
     
    timMusic.Enabled = FALSE
    timMusic.Delay = 1000
    timMusic.Enabled = TRUE
    ListView1_Click
    timMusic.Start
  END IF
 

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
un altro bel NULL anche cosi!!

siamo sicuri non ci sia un modo?? una listbox è molto molto diversa? se no mi tocca riscrivere mezzo programma :cry:
il mio progetto -> SITO

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Puoi allegare i sorgenti che ci diamo un'occhiata per favore?

Così sennò aiutarti ora è difficile..

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
se devi visualizzare solo un testo è identica

ti spiace postare il programma risolvere i problemi con tuitto applicativo funzionante è molto + semplice

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
un attimo, sto provando a sostituire con una listbox... se ho problemi ve lo posto!! grazie comunque!!
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
ricordati il comodo pulsante dell' ide cerca e sostituisci per sostituire la una parola con un altra all' interno di una sub o di un file o dell' intero progetto

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
un errore di questo tipo a cosa è dovuto?


per da quello che mi pare di aver capito in rete si tratta di un bug di Gambas... oppure dipende dal mio codice? perchè mi compare a caso, cioè non sempre quando faccio la stessa cosa e non mi segnala un punto preciso del programma in cui c'è un errore...
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
se usi gnome presente in ubuntu 9.10 con gambas >= 2.16 è un bug di gambas , prova ad usare una versione più vecchia di gambas (tipo la 2.13) e prova a vedere se succede ancora

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
sembra essersi risolto, il problema era che in alcuni punti avevo scritto ListBox1.index anzichè ListBox1.Index, corretto quello ha smesso di dare problemi!!

adesso funziona solo che quando deve scorrere tutti gli elementi della playlist è lento perchè lo fa anche graficamente!!
faccio fatica a spiegarvelo, vi allego i sorgenti e provate ad importare una cartella e poi cliccare sulla checkbox e guardate cosa succede!!
c'è modo di evitare questo?
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
posso dire solo una cosa : ti complichi troppo la vita , gambas è molto + semplice!!

ad esempio per salvare la play list puoi fare anche :


stringa=""

for each listbox1.list

 stringa=stringa & listbox1.list
 inc i
next

file.save(percorso e nome file , stringa)

inoltre all' avvio  il programma genera alcuni errori ( se non è ancora presente alcun file di configurazione) che puoi risolvere
modificando le righe:
CheckBox1.Value = setting["checkbox"]
playlist_open_dir = Settings["checkbox/playlist"]

con

    CheckBox1.Value = setting["checkbox",0]
    playlist_open_dir = Settings["checkbox/playlist", 0]

il ",0" serve per dare un valore di default all' impostazione nel caso caricando il prog non ci sia ancora un file di settings