Newsgroup: it.comp.appl.access
Titolo: evitare l'evento click se premo doppio click

buongiorno a tutti, 
 
ho notato che quando premo doppio click con il mouse su una casella di testo viene generato anche l'evento click, è possibile evitare di attivare l'evento click quando viene premuto il doppio click?
 
Grazie.


No non è possibile perchè l'Evento Doppio Click in realtà viene scatenato SOLO dal 2° Click se fatto entro tot tempo(ms), ma il 1° Click genera a prescindere l'Evento, Access è stupido e non sa se tu ne fai 1 o 2...
Quindi la risposta è NO, se devi inibire l'esecuzione delle azioni nell'evento devi fare degli accrocchi, ma non sono basic...
 
@Alex


come farei io...
al click assegno a una variabile nel form il valore 1 e faccio partire il timer con timerinterval = 1000
al doppio click assegno alla stessa variabile il valore 0.
all'evento timer se la variabile è 1 eseguo il codice che avrei scritto nell'evento click, altrimenti niente, e alla fine ovviamente timerinterval = 0


+1
 
BFS


Tutto chiaro, grazie a tutti per i chiarimenti.

Il 27/04/2023 17:18, Michele ha scritto:

L'unico piccolo problema di questo metodo e' che bisogna ogni volta 
attendere almeno 1 sec per sapere se e' stato fatto un click
 
Prendo spunto dalla proposta sopra per chiedere se qualcuno sa come fare 
per 'leggere' il tempo max necessario tra primo e secondo click perche' 
sia considerato un doppio-click
Supponendo fossero 200 milliSecondi, si potrebbe fare la routine sopra 
con un adeguato margine, ma piu' rapida possibile, ad esempio 250 
millisecondi
Credo sia una proprieta' impostabile sulle caratteristiche del mouse, e 
quindi non un tempo fisso
Quindi la domanda e':  come fare per 'leggere' dal sistema operativo 
corrente il tempo necessario tra due click perche' sia considerato un 
doppio-click?
 


Private Declare Function GetDoubleClickTime Lib "user32" () As Long
 
 
Private Sub Comando0_Click()
MsgBox GetDoubleClickTime
End Sub
 
 
risultato in millisecondi
BFS


Si questo ti aiuta a tarare quel "Timer" per minimizzare  .... è pur vero che prevedere il futuro non è possibile e l'unico modo è quello di Sospendere l'esecuzione ed aspettare il MINIMO TEMPO del DoppioClick...
 
@Alex


scusa @Alex non ho capito.
ti riferisci al fatto che se l'utente fa un click e un secondo entro 100 
millisecondi, poi cmq ne deve aspettare 400? (nel caso di mouse settato 
a 500ms)?
 
 
BFS
 
 
 
 

Il 28/04/2023 12:48, @Alex ha scritto:

Supponendo che un doppio-click sia una sequenza di due click del mouse, 
il secondo ad una distanza temporale dal primo di 1 secondo, e 
supponendo che su questo tempo ci sia un minimo di tolleranza diciamo 
100mSec prima e dopo, una sequenza di click (singolo) la puoi fare 
solamente se attendi tra l'uno ed il successivo almeno il 'tempo max' 
del doppio-click che e' di 1.1 sec.
Per questo parlavo del fatto che bisogna attendere almeno il 'tempo max' 
di un doppio-click (nell'esempio sopra 1.1 sec) prima di poter dire 
"c'e' stato un click singolo"
 
Conoscere il 'tempo min' ( i 0,9 secondi dell'esempio sopra) non ha 
nessuna importanza relativamente al problema riportato inizialmente, che 
e' appunto di distinguere se quello che sta arrivando e' un click 
singolo o un doppio-click


Se e' gia' arrivato il secondo click, quello e' un doppio-click
Non credo il sistema operativo attenda prima di scatenare l'evento
 

 BFS
 
No no, dicevo che il sistema non può sapere se l'utente farà o meno il secondo Click... quindi è ovvio che l'unico modo per inibire il Click sia attendere l'Expired del DBL_Click
 
@Alex

 Non credo il sistema operativo attenda prima di scatenare l'evento
 
Il DBL_CLICK è un evento separato dal CLICK, quindi non si scatenano 2 Click all'interno del tempo restituito dall'API che dice BSF.
Si sviluppano 2 CLICK se il tempo intercorso tra il primo ed il secondo è superiore ai quei 500ms, almeno così dovrebbe essere.
 
@Alex