Differenze tra le versioni di "Timer"

Da Gambas-it.org - Wikipedia.
Riga 22: Riga 22:
  
  
===Evitare un ritardo nell'attivazione del ''Timer''===
+
===Evitare un ritardo nella <SPAN style="text-decoration:underline">prima</span> 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''):
 
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
 
  '''Private''' timer1 As Timer

Versione delle 19:23, 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 nella prima 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()
 
' 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