Differenze tra le versioni di "Timer"

Da Gambas-it.org - Wikipedia.
 
(39 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Esponiamo questo oggetto speciale con un semplice esempio:
+
La Classe '''Timer''' scatena in modalità temporizzata il proprio Evento "_Timer()".
 +
<BR>E' infatti sufficiente impostare il periodo di attivazione mediante la Proprietà ".Delay" che è espresso in <SPAN Style="text-decoration:underline">millisecondi</span>.
  
 +
L'uso della Classe ''Timer'' è piuttosto semplice. L'unica attenzione è sull'uso massivo, perché può saturare le risorse di sistema e in casi eccessivi rendere impossibile l'uso dell'applicazione.
  
  <Font Color= #006400>' ''Gambas class file''</font>
+
''Timer'' può essere utilizzato sia in un'applicazione in ambiente grafico (in tal caso l'Oggetto ''Timer'' può essere creato anche usando lo strumento presente nella sezione "Speciale" degli strumenti forniti dall'IDE di Gambas), sia in un'applicazione a ''riga di comando'', potendo essere creato via codice.
 +
 
 +
Come già detto, ''Timer'' fornisce la Proprietà ".Delay" per impostare l'intervallo di tempo tra un tick e il successivo: il ''Timer'' scatena un Evento ogni qualvolta scade il tempo prefissato.
 +
<BR>Creare un Evento ''Timer'' in un ''Form'' è molto semplice: una volta inserito l'Oggetto ''Timer'' nel ''Form'', basta farci un doppio click sopra, e verrà creato automaticamente un Evento "_Timer()"; altrimenti è possibile crearlo manualmente da codice.
 +
Private <Font Color=red>timer1 As Timer</font>  <Font Color=gray>' ''Perché possa scatenare il proprio Evento, "Timer" va dichiarato SEMPRE con variabile "'''Globale'''"''</font>
 +
 +
 +
Public Sub Form_Open()
 +
 +
  With <Font Color=red>timer1 = New Timer As "Timer1"</font>
 +
<Font Color=gray>' ''In questo caso il "Timer" si attiva ogni 500 <B>millisecondi</b>:''</font>
 +
    .Delay = 500
 +
  <Font Color=gray>' ''Quindi viene attivato:''</font>
 +
    .Start
 +
  End With
 
   
 
   
  Private a As Integer
+
  End
 
   
 
   
 
   
 
   
  '''Public''' SUB Form_Open()
+
  Public Sub <Font Color=red>Timer1<B>_Timer()</b></fonT>  <Font Color=#006400>' ''Viene sollevato l'evento "_Timer" (ogni ms 500)''</font>
 
   
 
   
  With Timer1
+
  <Font Color=gray>' ''...qui fa qualcosa...''</font>
<Font Color= #006400>' ''All'avvio poniamo il Timer come disabilitato:''</font>
+
    .Enabled = False
+
End
<Font Color= #006400>' ''poniamo il Delay inizialmente a 1 millisecondo,''
+
All'interno dell'Evento è possibile inserire tutto il codice necessario per utilizzare il ''timer'' all'interno di una Classe (o di un Form).
''per non generare alcun ritardo quando premeremo il tasto "Button1":''</font>
+
<BR>E' da tener ben presente che se le funzioni all'interno dell'Evento, superano l'intervallo impostato, l'Evento viene chiamato ulteriormente. Ciò può creare grossi problemi, in quanto gli eventi si accavallano, e possono rovinare il lavoro fatto nell'Evento precedente.
    .Delay = 1
+
<BR>In questi casi è utile avere la possibilità di arrestare momentaneamente il ''timer'' (usando il Metodo ".Stop()" o assegnando alla Proprietà ".Enabled" il valore booleano ''False''), che verrà riattivato al termine della procedura.
  End With
+
 
 +
Il ''timer'' può essere utilizzato anche come ''one-shot'' (un solo evento). In questo caso è sufficiente disabilitarlo in modo definitivo una volta entrati nel Evento "_Timer".
 +
<BR>Un altro suggerimento da poter dare è il seguente: alla chiusura (''destroy'') della Classe contenente il ''Timer'', è sempre meglio arrestare in ogni caso (con il predetto Metodo ".Stop()" oppure ponendo "Enable = False"), onde evitare che rimanga appeso e attivo all'interno dell'applicazione, causando guai. In un Form è sufficiente inserirlo nell'evento Close; negli oggetti in genere basta inserirlo nel [[Metodi_New()_e_Free()_degli_oggetti|metodo speciale _free()]].
 +
 
 +
 
 +
===Semplice esempio di uso del ''Timer''===
 +
Come già detto, l'uso del ''Timer'' potrà avvenire, oltre attraverso la creazione da codice della specifica Classe ''Timer'', anche ponendo sul ''Form'' l'Oggetto speciale ''Timer'' presente nel ''toolbox'' dell'IDE di Gambas.
 +
 
 +
Facciamo un altro semplice semplice esempio esplicativo del funzionamento del ''Timer'', supponendo in questo caso che sia stato posto sul ''Form'' l'Oggetto speciale ''Timer'':
 +
Private i As Integer
 
   
 
   
'''End'''
 
 
   
 
   
 +
Public Sub Button1_Click()
 
   
 
   
  '''Public''' SUB Button1_Click()   ''<Font Color= #006400>' Cliccando sul tasto...''</font>
+
  <Font Color=gray>' ''Viene posto un ritardo pari a ms 100:''</font>
 +
  Timer1.Delay = 100
 +
    
 +
<Font Color=gray>' ''Viene abilitato il Timer, il quale solleva l'evento "_Timer()".''
 +
' '''(''l'effetto della proprietà ".Enabled = True" è equivalente al metodo ".Start"''):'''</font>
 +
  Timer1.Enabled = True 
 +
     
 +
End
 
   
 
   
<Font Color= #006400>' ''...viene abilitato il Timer, il quale invoca, così, la subroutine Timer1_Timer():''</font>
 
  Timer1.Enabled = True
 
 
   
 
   
  '''End'''
+
  Public Sub Timer1_Timer()  <Font Color= #006400>' ''Subroutine invocata con l'attivazione di Timer''</font>
 
   
 
   
 +
<Font Color=gray>' ''Dunque, ogni ms 100 verrà stampato in console il nuovo valore della variabile "i":''</font>
 +
  Print i
 
   
 
   
'''Public''' Sub Timer1_Timer()   ''<Font Color= #006400>' Subroutine invocata con l'attivazione di Timer''</font>
+
   Inc i
 
   
 
   
  <Font Color= #006400>' ''poniamo per esempio un ritardo pari a 100 ms, cosicché...''</font>
+
  End
    Timer1.Delay = 100
 
 
   
 
   
<Font Color= #006400>'...''ogni 100ms verrà stampato in console il nuovo valore della variabile " a "''</font>
 
    Print a
 
 
   
 
   
  <Font Color= #006400>' ''viene incrementato il valore della variabile " a "''</font>
+
  Public Sub Button2_Click()
    Inc a
 
 
   
 
   
  '''End'''
+
  <Font Color=gray>' ''Il Timer viene arrestato:''</font>
 +
  Timer1.Enabled = False
 +
     
 +
End

Versione attuale delle 21:19, 14 nov 2024

La Classe Timer scatena in modalità temporizzata il proprio Evento "_Timer()".
E' infatti sufficiente impostare il periodo di attivazione mediante la Proprietà ".Delay" che è espresso in millisecondi.

L'uso della Classe Timer è piuttosto semplice. L'unica attenzione è sull'uso massivo, perché può saturare le risorse di sistema e in casi eccessivi rendere impossibile l'uso dell'applicazione.

Timer può essere utilizzato sia in un'applicazione in ambiente grafico (in tal caso l'Oggetto Timer può essere creato anche usando lo strumento presente nella sezione "Speciale" degli strumenti forniti dall'IDE di Gambas), sia in un'applicazione a riga di comando, potendo essere creato via codice.

Come già detto, Timer fornisce la Proprietà ".Delay" per impostare l'intervallo di tempo tra un tick e il successivo: il Timer scatena un Evento ogni qualvolta scade il tempo prefissato.
Creare un Evento Timer in un Form è molto semplice: una volta inserito l'Oggetto Timer nel Form, basta farci un doppio click sopra, e verrà creato automaticamente un Evento "_Timer()"; altrimenti è possibile crearlo manualmente da codice.

Private timer1 As Timer  ' Perché possa scatenare il proprio Evento, "Timer" va dichiarato SEMPRE con variabile "Globale"


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 Sub Timer1_Timer()   ' Viene sollevato l'evento "_Timer" (ogni ms 500)

 ' ...qui fa qualcosa...

End

All'interno dell'Evento è possibile inserire tutto il codice necessario per utilizzare il timer all'interno di una Classe (o di un Form).
E' da tener ben presente che se le funzioni all'interno dell'Evento, superano l'intervallo impostato, l'Evento viene chiamato ulteriormente. Ciò può creare grossi problemi, in quanto gli eventi si accavallano, e possono rovinare il lavoro fatto nell'Evento precedente.
In questi casi è utile avere la possibilità di arrestare momentaneamente il timer (usando il Metodo ".Stop()" o assegnando alla Proprietà ".Enabled" il valore booleano False), che verrà riattivato al termine della procedura.

Il timer può essere utilizzato anche come one-shot (un solo evento). In questo caso è sufficiente disabilitarlo in modo definitivo una volta entrati nel Evento "_Timer".
Un altro suggerimento da poter dare è il seguente: alla chiusura (destroy) della Classe contenente il Timer, è sempre meglio arrestare in ogni caso (con il predetto Metodo ".Stop()" oppure ponendo "Enable = False"), onde evitare che rimanga appeso e attivo all'interno dell'applicazione, causando guai. In un Form è sufficiente inserirlo nell'evento Close; negli oggetti in genere basta inserirlo nel metodo speciale _free().


Semplice esempio di uso del Timer

Come già detto, l'uso del Timer potrà avvenire, oltre attraverso la creazione da codice della specifica Classe Timer, anche ponendo sul Form l'Oggetto speciale Timer presente nel toolbox dell'IDE di Gambas.

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

Private i As Integer


Public Sub Button1_Click()

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


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

' Dunque, ogni ms 100 verrà stampato in console il nuovo valore della variabile "i":
 Print i

 Inc i

End


Public Sub Button2_Click()

' Il Timer viene arrestato:
 Timer1.Enabled = False
      
End