PDA

Ver la Versión Completa : que no se ejecute el evento onclick de un comonente tick


soyhugo
26-02-2004, 19:43:11
tengo un formulario que contiene varios componentes tick. EN cada uno de ellos, cuando se pone un tick o se quita, entra en su evento onclick. en este evento, dependiendo de lo que ha hecho ponerlo o quitarlo, ejecuta un código. ahora bien. por ejemplo tengo una serie de botones, que al accionarlos, limia o rellena cada varios de los componentes tick, según su objetivo. el problema surge que cuando en el código del botón, pongo el código que rellena tres de los componentes tick de los 8 que hay, automáticamente se ejecuta el evento onclick de cada uno de ellos. Mi problema viene en que yo no quiero que cuando se pulse sobre alguno de estos botones, se ejecute ninguno de los eventos
onclick de los tick. alguien sabría como solucionar esto sin necesidad de estar poniendo en cada evento onclick de los tick tal como

if not (pulsado_boton1 or pulsado_boton2 or...) then
sentencias del evento onclick


gracias

roman
26-02-2004, 20:58:02
¿Cuáles son las componentes Tick?

:confused:

soyhugo
27-02-2004, 03:49:07
cuando digo tick me refiero a los checkbox

roman
27-02-2004, 04:37:18
Revisando el código fuente de los CheckBox vemos que, en efecto, al asignar la propiedad Check (o State), se llama al procedimiento Click, a menos que la propiedad ClicksDisabled esté en true. Desafortunadamente dicha propiedad está protegida pero puedes usar el truco del "casting a un descendiente de palo":


type
THackCheck = class(TCheckBox);


y cambiar el valor al crear el formulario:


THackCheck(CheckBox).DisableControls := true;


En la prueba que hice funciona bien aunque es contrario a lo que indica la documentación que dice que si DisabledClicks está en true el control no acepta "clicks" pero sí que los acepta.

// Saludos