Trucos Distinguir el Click del DobleClick

Cuando haces doble click sobre un control en VB siempre salta primero el evento click y luego el doble click. Para poder distinguirlos y ejecutar sólo el código del doble click podemos registrar que ha saltado el evento click y esperar. Si una vez transcurrido el intervalo máximo definido en windows para el doble click no se ha producido este segundo click será que sólo han pulsado una vez al ratón.
Para hacer esto debemos incluir un control timer en el formulario con la propiedad enabled a false y hacer lo siguiente :

- Declaramos en el formulario la función del api que nos dice cual es el intervalo para doble click en nuestro sistema :
Private Declare Function GetDoubleClickTime Lib "user32" () As Long

- En la carga del formulario ajustamos la propiedad Interval del Timer a dicho intervalo :
Timer1.Interval = GetDoubleClickTime()

- En el evento Click del control lo que hacemos es activar el Timer :
Timer1.Enabled = True

- Si se produce el evento DobleClick es que el usuario ha pulsado al ratón dos veces y ejecutaremos la acción asociada en nuestro programa (después de parar el timer) :
Timer1.Enabled = False
Debug.Print "doble click"

- Si se produce el evento Timer del control Timer significa que ha pasado el intervalo y no se ha producido el segundo click, por lo que debemos ejecutar el código asociado al Click del ratón (después de parar el Timer) :
Timer1.Enabled = False
Debug.Print "click"

Como en el caso del Click no se ejecutará el código hasta que haya transcurrido el intervalo definido en windows podemos "poner el reloj" para que el usuario no tenga la sensación de que no ha pulsado nada. Para ello añadiremos Me.MousePointer=11 en el evento click del control, que quedará :
Me.MousePointer=11
Timer1.Enabled = True



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com