Differenze tra le versioni di "Impedire che cliccando su un tasto della tastiera si produca più volte il medesimo effetto"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
Sappiamo che, utilizzando l'evento ''_KeyPress()'', allo scatenarsi di tale evento un comando presente nelle sua routine si scatena ripetutamente sino a quando il tasto non verrà rilasciato.
 
Sappiamo che, utilizzando l'evento ''_KeyPress()'', allo scatenarsi di tale evento un comando presente nelle sua routine si scatena ripetutamente sino a quando il tasto non verrà rilasciato.
  
Per ovviare a questo problema, e quindi per far produrre solo una volta l'effetto di quanto previsto nella routine dell'evento ''_KeyPress()'', possiamo adottare un codice come il seguente:
+
Per ovviare a questo problema, e quindi per far produrre solo una volta l'effetto di quanto previsto nella routine dell'evento ''_KeyPress()'', possiamo adottare un codice come il seguente, che ingloba il codice fondamentale - presente nell'Evento "_KeyPress()" - all'interno della procedura condizionale "IF":
 
  Private status As Byte
 
  Private status As Byte
 
   
 
   
Riga 7: Riga 7:
 
  '''Public''' Sub Form_KeyPress()
 
  '''Public''' Sub Form_KeyPress()
 
    
 
    
   If status = 0 Then
+
   If status == 0 Then
 
     Print "Produzione effetto"
 
     Print "Produzione effetto"
 
     status = 1
 
     status = 1
Riga 13: Riga 13:
 
    
 
    
 
  '''End'''
 
  '''End'''
 
 
   
 
   
 
  '''Public''' Sub Form_KeyRelease()
 
  '''Public''' Sub Form_KeyRelease()
Riga 21: Riga 20:
 
   status = 0
 
   status = 0
 
      
 
      
 +
'''End'''
 +
oppure quest'altro analogo, facendo uscire il controllo dalla routine dell'Evento "_KeyPress()" nel caso di verifica della condizione posta con "IF":
 +
Private status As Byte
 +
 +
 +
'''Public''' Sub Form_KeyPress()
 +
 
 +
  If status == 1 Then <FONT Color=#B22222>Return</font>
 +
 
 +
  Print "Produzione effetto"
 +
  status = 1
 +
 +
'''End'''
 +
 +
'''Public''' Sub Form_KeyRelease()
 +
 +
  Print "Tasto rilasciato"
 +
 +
  status = 0
 +
 
  '''End'''
 
  '''End'''

Versione delle 12:11, 6 gen 2022

Sappiamo che, utilizzando l'evento _KeyPress(), allo scatenarsi di tale evento un comando presente nelle sua routine si scatena ripetutamente sino a quando il tasto non verrà rilasciato.

Per ovviare a questo problema, e quindi per far produrre solo una volta l'effetto di quanto previsto nella routine dell'evento _KeyPress(), possiamo adottare un codice come il seguente, che ingloba il codice fondamentale - presente nell'Evento "_KeyPress()" - all'interno della procedura condizionale "IF":

Private status As Byte


Public Sub Form_KeyPress()
 
 If status == 0 Then
   Print "Produzione effetto"
   status = 1
 Endif
 
End

Public Sub Form_KeyRelease()
 
 Print "Tasto rilasciato"
 
 status = 0
   
End

oppure quest'altro analogo, facendo uscire il controllo dalla routine dell'Evento "_KeyPress()" nel caso di verifica della condizione posta con "IF":

Private status As Byte


Public Sub Form_KeyPress()
 
 If status == 1 Then Return
 
 Print "Produzione effetto"
 status = 1

End

Public Sub Form_KeyRelease()

 Print "Tasto rilasciato"

 status = 0

End