Differenze tra le versioni di "Timer"

Da Gambas-it.org - Wikipedia.
Riga 29: Riga 29:
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
   timer1 = New Timer As "timer1"
+
   With timer1 = New Timer As "timer1"
   
+
  <Font Color= #006400>' ''Qui poniamo il ritardo minimo della prima attivazione del "Timer":''</font>
  timer1<Font Color= #B22222>.Delay = 1</font>
+
    <Font Color= #B22222>.Delay = 1</font>
 +
  End With
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 38: Riga 39:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
  <Font Color= #006400>' ''Possiamo impostare qui il ritardo principale del "Timer":''</font>
+
  <Font Color= #006400>' ''Qui ad esempio attiviamo il "Timer":''</font>
     With timer1
+
     timer1.Start
      <Font Color= #B22222>.Delay = 500</font>
 
      .Start
 
    End With
 
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 49: Riga 47:
 
  '''Public''' timer1_Timer()  <Font Color= #006400>' ''Viene sollevato l'evento "_Timer" (ogni ms 500)''</font>
 
  '''Public''' timer1_Timer()  <Font Color= #006400>' ''Viene sollevato l'evento "_Timer" (ogni ms 500)''</font>
 
    
 
    
 +
<Font Color= #006400>' ''Possiamo impostare qui il ritardo principale del "Timer":''</font>
 +
    timer1.<Font Color= #B22222>.Delay = 500</font>
 +
 
   <Font Color= #006400>' ''...qui fa qualcosa...''</font>
 
   <Font Color= #006400>' ''...qui fa qualcosa...''</font>
 
   
 
   

Versione delle 20:21, 9 gen 2013

La Classe Timer può essere creata da codice:

Private timer1 As Timer


Public Sub Form_Open()

  With timer1 = New Timer As "timer1"
' In questo caso il "Timer" si attiva ogni 500 millisecondi:
    .Delay = 500
' Quindi viene attivato:
    .Start
  End With

End


Public timer1_Timer()   ' Viene sollevato l'evento "_Timer" (ogni ms 500)

  ' ...qui fa qualcosa...

End


Evitare un ritardo nell'attivazione del Timer

L'esempio precedente prevede un ritardo, posto con la proprietà .Delay, di 500 millisecondi. Questo ritardo avverrà anche al momento della sua prima attivazione, ossia della partenza del Timer medesimo. Per ovviare a questo ritardo in fase di prima attivazione (partenza iniziale), si dovrà porre la proprietà .Delay ad 1 millisecondo (ma se non interessa una partenza con questo bassissimo ritardo, ovviamente si può porre un qualunque valore). La definizione del ritardo principale (quello che nel precedente esempio era di ms 500) potrà essere posta altrove (anche nella sub-routine scatenata dall'evento _Timer):

Private timer1 As Timer


Public Sub Form_Open()

  With timer1 = New Timer As "timer1"
' Qui poniamo il ritardo minimo della prima attivazione del "Timer":
    .Delay = 1
  End With

End


Public Sub Button1_Click()

' Qui ad esempio attiviamo il "Timer":
    timer1.Start

End


Public timer1_Timer()   ' Viene sollevato l'evento "_Timer" (ogni ms 500)
 
' Possiamo impostare qui il ritardo principale del "Timer":
    timer1..Delay = 500

  ' ...qui fa qualcosa...

End


Usare l'oggetto speciale Timer

L'uso del Timer potrà avvenire, oltre attraverso la creazione della specifica Classe Timer, anche ponendo sul Form l'oggetto speciale Timer presente nell'IDE di Gambas.


Facciamo un altro semplice esempio esplicativo del funzionamento del Timer, suppondendo in questo caso che sia stato posto sul Form l'oggetto speciale Timer:

Private a As Integer


Public SUB Form_Open()

  With Timer1
' All'avvio poniamo il Timer come disabilitato:
    .Enabled = False
' poniamo il Delay inizialmente a 1 millisecondo,
' per non generare alcun ritardo quando premeremo il tasto "Button1":
    .Delay = 1
  End With

End


Public SUB Button1_Click()

   With Timer1
' Viene posto un ritardo pari a ms 100
     .Delay = 100
' Viene abilitato il Timer, il quale solleva l'evento "_Timer"
' (il risultato del metodo ".Enabled = True" è equivalente al metodo ".Start"):
     .Enabled = True
      
End


Public Sub Timer1_Timer()   ' Subroutine invocata con l'attivazione di Timer

' ogni ms 100 verrà stampato in console il nuovo valore della variabile " a "
   Print a

   Inc a

End