Ele tem um delay de .3 segundos mas passa despercebido dependendo onde usa.
/ Compilar HBMK2 DP_CLIC
#include "inkey.ch"
Function Main()
CLS
SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE ) // + HB_INKEY_GTEVENT ) // Set Eventmask to 1002
DO WHILE .T.
@ 10,05 Say "De clic unico ou duplo com o botao esquerdo do mouse.!"
INKEY(0)
IF LASTKEY()=1002 // So efetua a verificacao qdo clicar no botao esquerdo do mouse
IF !DUPLO_CLIC()
// colocar aqui as ações para unico clique do botao esquerdo..
// No caso do DbEdit ou Achoice a opcao seria voltar para a edicao com return pois com um clic apenas selecionamos a linha/coluna.
ALERT("Clicou uma vez com o botao esquerdo")
else // Se clicou duas vezes, entao ele volta com lastkey()=1006
// colocar aqui as ações para duplo clique do botao esquerdo..
ALERT("Clicou duas vezes com o botao esquerdo")
ENDIF
ENDIF
if lastkey()=27
return
endif
ENDDO
**
** Funcao que testa se houve duplo click no botao esquerdo do mouse
**
FUNCTION DUPLO_CLIC()
local AAA,BBB
IF LASTKEY()=1006 // Se ja for detectado, entao volta .T.
RETURN .T.
ENDIF
IF !(LASTKEY()=1002) // Se o lastkey() nao for 1002 (botao esquerdo) , entao volta .F.
RETURN .F.
ENDIF
*alert("clicou 2 vezes"+str(lastkey()))
BBB=SECOND()
AAA=lastkey()
DO WHILE BBB+.3 > SECOND() // Fica aguardando em .3 segundos o segundo clicque
IF LASTKEY()=1006
RETURN .T.
ENDIF
AAA=INKEY()
ENDDO
RETURN .F. // Nao foi clicado pela segunda vez no botao esquerdo durante o tempo de espera...