Non vorrei sbagliarmi, ma mi pare che alcuni giorni fa un iscritto al forum aveva inserito una richiesta per sapere se è possibile gestire un tasto che sia abile a produrre effetti sia quando lo si preme sia quando lo si rilascia.
Non ricordo bene se la domanda sia stata posta nella parte dedicata a Gambas 2 o qui; sta però il fatto che quella domanda non la trovo più.
Forse, l'amico, non avendo in breve ricevuto una risposta, avrà eliminato la domanda dal forum.
Comunque, questa interessante domanda mi ha spinto a capire se quanto richiesto sia possibile. Tornando a vedere il funzionamento dei button, ho notato che i
Button scatenano gli eventi non dal momento della pressione, ma dal momento del loro rilascio.
Non sembra esserci quindi un oggetto che si comporti come il pulsante del "campanello di casa": quando premi è immeditamente abilitato a scatenare eventi, e
quando non lo lasci è abilitato a scatenarne altri.
Mi spiace che il messaggio/domanda sia stato eliminato (almeno così credo); ad ogni modo io avrei risolto così:
' Per ottenere un tasto che sia abilitato, e quindi attivo, sia al momento della pressione che al momento del suo rilascio, ho operato sulle funzionalità del Mouse: MouseDown e MouseUP.
' COMPITO del Programma: il programma alla pressione del Button mediante il tasto del mouse mostra in una Label un conteggio ad incremento numerico che si arresterà solo quando il tasto del mouse non sarà rilasciato.
' (Il programma presuppone anche un Timer impostato a bassissimo "delay".)
e As Integer
Public Sub Button1_MouseDown() ' si attiva al momento della pressione sul tasto del mouse
Print "Pressione tasto !"
e = 0
Timer1.Enabled = True ' attiva il Timer
End
Public Sub Timer1_Timer() ' Timer scatena, se abilitato, in continuazione i comandi
' che seguono, sino a che esso resta abilitato (enabled = true)
e = e + 1
Label1.text = e ' mostra in Label la somma della precedente operazione
End
Public Sub Button1_MouseUp() 'si attiva al momento del rilascio del tasto premuto del mouse
Print "Rilascio tasto !"
Timer1.Enabled = False ' disabilita il Timer
End
Qualcuno ha soluzioni migliori, più veloci ed efficaci ?