No, sarebbe:
PUBLIC SUB Timer1_Timer()
...fai qualcosa sulla PictureBox...
...ad esempio...
PictureBox1.Refresh
ENDRefresh
Allora ho appena controllato, il Delay del timer è settato a 1000, ed ecco il mio codice PUBLIC SUB Timer2_Timer()
'Aggiorna la posizione dello slider1
Slider1.Value = Music.Pos END
e poi ho questo codice:
PUBLIC SUB Slider1_Change() 'Varia la posizione dello slider in base alla posizione della musica Music.Pos = Slider1.Value END
In verità non ho capito dove sbaglio....
Ciao.
mmmm, saresti così gentile da spiegarmi come ho fatto il loop?
Comunque per ora ho risolto eliminando la riga:PUBLIC SUB Slider1_Change() 'Varia la posizione dello slider in base alla posizione della musica
'Music.Pos = Slider1.Value END
e cambiando invece:PUBLIC SUB Timer2_Timer()
'Aggiorna la posizione dello slider1
Slider1.Value = Music.Pos
Label6.Caption = Music.Pos * 60 END
Ovviamente ci sono degli errori, non far caso a quel *60 che non serve a nulla, provo semplicemente a far comparire il tempo trascorso in un label.
Ho anche un'altro problemino che però non c'entra nulla col timer, ma descrivo quì dato che il programma è sempre lo stesso, ovviamente se ritenete che debba creare un topic apposito, lo faccio.
Riguarda il pulsante di stop, vorrei che prima di fermare il brano musicale, mi vada a diminuire lentamente il volume e poi stoppare tutto. Sto facendo alcuni esperimenti:PUBLIC SUB ToolButton7_Click()
'Stoppa la musica
DIM a AS Integer
DIM b AS Float
DIM c AS Float
b = 0.1
FOR a = 0 TO 10
Music.Volume = c
c = 1.0 - b
b = b + b
WAIT 1.5
NEXT
Music.Stop
Timer2.Enabled = FALSE
Slider1.Value = 0
END
Il codice in linea di massima funziona ma non so perchè quando premo il tasto stop la musica si stoppa per un attimo, poi riparte e abbassa il volume fino poi a stopparsi completamente.
Ciao e grazie mille a tutti!!!!!!!!!!
PS: Perchè non lo facciamo noi un bel manuale per gambas2????? :-D
Dimenticavo, lo stesso problema che mi faceva il timer per l'ascolto della musica lo fa anche quando tento di visualizzare un video preso da una webcam in un picturebox...
ecco il codice che ho inserito:
PUBLIC SUB Timer1_Timer()
'Refresh dell'immagine nel PictureBox1
TRY PictureBox1.Picture = webcam.Picture
PictureBox1.Refresh
END
In pratica il programma mi si muove a scatti e il video lo vedo con delle fastidiose bande nere che compaiono e scompaiono.
il Dalay del timer è però settato a 40...per avere 25 fps.
Ciao.
prova cosi
PUBLIC SUB ToolButton7_Click()
'Stoppa la musica
DIM a AS Integer
DIM b AS Float
DIM c AS Float
b = 0.1
c=1
FOR a = 0 TO 10
Music.Volume = c
c = 1.0 - b
b = b + b
WAIT 1.5
NEXT
Music.Stop
Timer2.Enabled = FALSE
Slider1.Value = 0
END
se vuoi ti ho fatto una piccola funzione per leggere i tag mp3 (solo igli id3v1 per ora)
PUBLIC SUB lettura_tag()
DIM tag AS String
DIM tag_album AS String
DIM tag_anno AS String
DIM tag_artista AS String
DIM tag_commento AS String
DIM tag_genere AS String
DIM tag_null AS String
DIM tag_traccia AS String
DIM tag_titolo AS String
'File.OPEN FOR READ BINARY #1
pippo = File.Load(percorso)
tag = Mid$(pippo, (Len(pippo) - 127), 128)
IF Left$(tag, 3) = "TAG" THEN
label1.Text = "id3v1"
'effettua la lettura dei tag
tag_titolo = Trim$(Mid$(tag, 4, 30))
tag_artista = Trim$(Mid(tag, 34, 30))
tag_album = Trim$(Mid(tag, 64, 30))
tag_anno = Trim$(Mid(tag, 94, 4))
tag_commento = Trim$(Mid(tag, 98, 28))
tag_null = Trim$(Mid(tag, 126, 1))
tag_traccia = Trim$(Mid(tag, 127, 1))
tag_genere = Trim$(Mid(tag, 128, 1))
endif
END
Scrivo qui tanto parlo di timer lo stesso;
se io scrivessi questo codice:
Public sub Timer1_Timer()
Dim a as integer
a = 0
Label4.text = a+1
End
ed avendo settato timer delay = 1000
ed enable = true
il programma non dovrebbe aggiornare il valore della label ogni secondo?
quindi scrivermi 1,2,3,4,ecc..?
Infatti manca l'incremento della variabile....
Devi tenere presente che il timer ad ogni "schiocco" richiama la sub. In questo caso il DIM non fa altro che creare la variabile ma al tempo stesso la distrugge all'uscita del ciclo stesso. Poi c'è la questione che se all'inizio del ciclo metti a=0 ad ogni richiamo la variabile vale comunque 0 e quindi nella tua label leggerai 0 + 1 = 1 ad ogni ciclo.
Il codice corretto è:
a as integer
Public sub Timer1_Timer()
a +=1 'equivalente di a = a + 1
Label4.text = str(a)
End
Message.Info(day(now) & "-" & month(now) & "-" & year(now) , "esci")
cosi potrebbe essere un modo