Ciao a tutti, sono nuovo di questo forum e di gambas.
Sto facendo qualche prova per capirne qualcosa.
In questo momento stavo cercando di fare una specie di porta foto dove ogni X secondi viene cambiata la foto.
Questa operazione sono riuscito a farla senza problemi, ho inserito in una finestra un PictureBox e un Timer e ogni volta che il Timer viene richiamato,
viene cambiata l'immagine.
Ora, per abbellire un po' la cosa, volevo fare in modo che la PictureBox venisse spostato (scorrendo) tutto in alto o tutto in basso per poi ritornare sempre
scorrendo con la nuova immagine caricata.
Questo non me lo fa e non capisco il perchè.
Potreste per favore dare un'occhiata al codice e dirmi dove sto sbagliando?
PUBLIC Counter AS Integer
PUBLIC SUB Form_Keypress()
ME.close
END
PUBLIC SUB Form_Open()
Timer.Delay = 6000
ME.height = 1080
ME.Width = 1920
Img.Height = ME.Height
Img.Width = ME.Width
Img.Y = 0
Timer_Timer()
END
PUBLIC SUB Timer_Timer()
DIM i AS Integer
FOR i = 1 TO 1080
Img.y += 1
NEXT
IF Exist("/images/" & CStr(Counter) & ".JPG") = FALSE THEN Counter = 1
Img.picture = Picture["/dati/common/test/Left/" & CStr(Counter) & ".JPG"]
Counter += 1
FOR i = 1 TO 1080
Img.y -= 1
NEXT
END
Eppure, se inserisco un secondo Timer con durata 1ms ed ogni volta che viene richiamato gli faccio spostare la PicutreBox mentre viene visualizzata la foto, questa viene spostata.
Non capisco perchè all'interno della funzione del timer principale non lo faccia :(
Grazie.
Ciao.
...a mio avviso:
1) c'è il problema che hai posto nel codice il nome della Classe Timer e non il nome qualsiasi di variabile in quanto suo identificatore (ad esempio: Timer1 );
2) analogo discorso per la subroutine dell'evento _Timer(), nella quale la variabile dell'oggetto Timer che solleva tale evento ha come nome quello generale della sua Classe;
3) non avvii il Timer !
4) qualche problema nel ciclo For...Next.
Facciamo un semplice esempio:
Public Sub Form_Open()
Timer1.Delay = 2000
Me.height = Desktop.Height
Me.Width = Desktop.Width
' Coloriamo semplicemente l'oggetto "PictureBox":
Img.Background = Color.Red
Timer1.Start() ' <--- Avvia il Timer
End
Public Sub Timer1_Timer()
Dim i As Integer
Img.Y = 1
Wait 1
Img.Y = 500
End
Segnalo anche questa pagina della nostra WIKI sul tema da te posto:
http://www.gambas-it.org/wiki/index.php?title=Oggetti_scorrevoli
Però, poiché tu parli di scorrimento di una PictureBox, allora forse tu cerchi una cosa di questo genere: :-X
Private a As Short
Private b As Short
Public Sub Form_Open()
Timer1.Delay = 3
Me.Height = Desktop.Height
Me.Width = Desktop.Width
' Coloriamo semplicemente l'oggetto "PictureBox":
Img.Background = Color.Red
Timer1.Start() ' <--- Avvia il Timer
End
Public Sub Timer1_Timer()
Img.Y = a
If a = Desktop.Height - Img.Height Then b = -1
If a = 0 Then b = 1
a += b
End