PDA

Ver la Versión Completa : Focus en un checkbox


Livey
27-01-2011, 19:31:34
Buenos dias,
Estoy trabajando en Delphi 7, y estoy utilizando un check box, pero como este componente no tiene la propiedad de transparent, he recurrido a agregar el texto en un label, al cual si le puedo aplicar esta propiedad, y el checkbox, lo tengo del tamaño del cuadrito, de manera que cuando el focus esta posicionado en el componente no se ve el recuadro punteado alrededor(focus).
Les agradezco me ayuden con esto, ya sea que me expliquen como se puede agregar la propiedada transparent al checkbox o que se muestre el focus

Aleca
28-01-2011, 13:50:46
:confused:es automatico la tranparencia del checkbox, me toma el color del fondo.

rgstuamigo
28-01-2011, 13:52:30
...
Estoy trabajando en Delphi 7, y estoy utilizando un check box, pero como este componente no tiene la propiedad de transparent, he recurrido a agregar el texto en un label, al cual si le puedo aplicar esta propiedad, y el checkbox, lo tengo del tamaño del cuadrito...

Disculpame pero no me explico por que hacer eso;), aunque el checkBox no tiene la propiedad transparent, pues el caption del mismo si es transparente.;) ¿acaso eso no te sirve?
... de manera que cuando el focus esta posicionado en el componente no se ve el recuadro punteado alrededor(focus).
...
Bueno eso claramente ocurre por se trata de otro componente diferente al CheckBox.;)
Saludos...:)

Livey
28-01-2011, 15:23:41
Disculpame pero no me explico por que hacer eso;), aunque el checkBox no tiene la propiedad transparent, pues el caption del mismo si es transparente.;) ¿acaso eso no te sirve?

Bueno eso claramente ocurre por se trata de otro componente diferente al CheckBox.;)
Saludos...:)


Hola de nuevo, estoy segura que es un checkbox, pero al caption no logro que quede con el color de fondo (el cual es una imagen y no un color sólido)

Aleca
28-01-2011, 15:40:07
Hola de nuevo, estoy segura que es un checkbox, pero al caption no logro que quede con el color de fondo (el cual es una imagen y no un color sólido)
es cierto sobre la imagen hace eso. :(

Aleca
28-01-2011, 15:53:53
cosa rara, lo probe de nuevo y lo hace perfectamente. fijate que la imagen no sea transparente.

roman
28-01-2011, 16:03:36
es cierto sobre la imagen hace eso. :(

Así es, la etiqueta del checkbox no es transparente.

cosa rara, lo probe de nuevo y lo hace perfectamente. fijate que la imagen no sea transparente.

¿No sera que pusiste el XPManifest? A mi me pasó haberlo puesto y aunque lo quites sigue estando "activo" mientras no elimines la unidad xpman del uses.

// Saludos

Chris
28-01-2011, 16:06:55
Yo creo que con un Class Inteceptor puede hacerse transparente. Yo lo hago con el TLinkLabel (incluido en D2009 y posteriores). Lamentablemente no tengo el código a mano para brindártelo. Te lo quedo debiendo para mañana talvez o espérame un momento, tal vez pueda encontrar la fuente de donde en su momento lo obtuve.

Saludos,
Chris

Aleca
28-01-2011, 16:11:27
Uso delphi 2007 con la opción Enabled Runtime Themes seleccionado, cuando probé y no hizo transparente a la imagen la tenia dentro de un panel con la opción parentbackgound en true al ponerlo en false me lo hace transparente.

roman
28-01-2011, 16:14:10
¿Cómo está eso del class interceptor?

// Saludos

Livey
28-01-2011, 16:14:59
Yo creo que con un Class Inteceptor puede hacerse transparente. Yo lo hago con el TLinkLabel (incluido en D2009 y posteriores). Lamentablemente no tengo el código a mano para brindártelo. Te lo quedo debiendo para mañana talvez o espérame un momento, tal vez pueda encontrar la fuente de donde en su momento lo obtuve.

Saludos,
Chris

Lo malo es que en este caso estoy utilizando Delphi 7.

Pero quizas me puedas ayudar con lo que mencione al inicio.
Si el caption checkbox tiene texto, se muestra el focus, pero si no agrego texto y el tamaño del componente es igual al check, no se muestra el focus, entonces requiero que cuando se este posicionado en el checkbox, se muestre el focus.

Gracias a todos por su ayuda!!!:)

roman
28-01-2011, 16:19:22
Uso delphi 2007 con la opción Enabled Runtime Themes seleccionado, cuando probé y no hizo transparente a la imagen la tenia dentro de un panel con la opción parentbackgound en true al ponerlo en false me lo hace transparente.

¡Ah! Pero eso es usando los temas. El problema (aunque quizá me equivoque) es que al usar temas, al checkbox y otros controles no puedes modificarle el color. Pero si eso no mete ruido entonces en delphi 7 bastaría con agregar el XPManifest.

// Saludos

rgstuamigo
28-01-2011, 16:23:22
¡Ah! Pero eso es usando los temas. El problema (aunque quizá me equivoque) es que al usar temas, al checkbox y otros controles no puedes modificarle el color. Pero si eso no mete ruido entonces en delphi 7 bastaría con agregar el XPManifest.
...
Efectivamente roman, al poner un componente XPManifest se soluciona la cosa.;)
NOTA: Probado en Delphi 7 ;)
Saludos...:)

Livey
28-01-2011, 16:24:43
Uso delphi 2007 con la opción Enabled Runtime Themes seleccionado, cuando probé y no hizo transparente a la imagen la tenia dentro de un panel con la opción parentbackgound en true al ponerlo en false me lo hace transparente.

Que pena, pero no te entendi, donde esta "Enabled Runtime Themes ", pero no se si no me explique bien, lo que necesito que quede transparente es el caption del checkbox, como cuando se le aplica la propiedad a un label.
En mi caso no es un color sólido, sino una imagen de fondo.

rgstuamigo
28-01-2011, 16:28:45
Que pena, pero no te entendi, donde esta "Enabled Runtime Themes ", pero no se si no me explique bien, lo que necesito que quede transparente es el caption del checkbox, como cuando se le aplica la propiedad a un label.
En mi caso no es un color sólido, sino una imagen de fondo.
Amiga Livey, tu problema se resuelve poniento en tu formulario un componente XPManifest que se encuentra el la pestaña Win32 de la paleta de componente y eso es todo;)
Saludos...:)

Chris
28-01-2011, 16:34:05
¿Cómo está eso del class interceptor?

// Saludos

Bueno, me confundí, no es Class Interceptor, es Interceptor Classes (http://delphi.about.com/od/delphitips2009/qt/interceptor.htm). O clases interceptoras.

Saludos,
Chris.

Aleca
28-01-2011, 16:34:18
Amiga Livey, tu problema se resuelve poniento en tu formulario un componente XPManifest que se encuentra el la pestaña Win32 de la paleta de componente y eso es todo;)
Saludos...:)
asi es, al delphi 7 no lo usé, pase del 6 al 2007, si tenes ese componente usalo y listo, lo acabo de probar y funciono.
PD: el foco lo recibe, pero no te das cuenta graficamente.:)

Chris
28-01-2011, 16:38:38
En este hilo de StackOverflow (http://stackoverflow.com/questions/1345316/tlinklabel-background-on-a-tpagecontrol) puedes encontrar como hacer un transparente un TLinkLabel. Seguramente el mismo código de puede servir con TCheckbox y TRadioButton. El código mostrado es para crear una clase heredada, pero si no quieres entrar en ese rollo, puedes utilizar un interceptor de clases. Puedes leer al respecto de ellos en el enlace que proporcioné anteriormente.

Saludos,
Chris

rgstuamigo
28-01-2011, 16:40:03
Bueno, me confundí, no es Class Interceptor, es Interceptor Classes (http://delphi.about.com/od/delphitips2009/qt/interceptor.htm). O clases interceptoras.


De hecho a eso Ian Marteens lo llama Clases interpuestas (http://www.marteens.com/trick46.htm)
;)

roman
28-01-2011, 16:44:50
Bueno, me confundí, no es Class Interceptor, es Interceptor Classes (http://delphi.about.com/od/delphitips2009/qt/interceptor.htm). O clases interceptoras.


¡Ah! Ya sé a qué te refieres. Es lo que Ian Marteens llama clases interpuestas (http://www.marteens.com/trick46.htm). Incluso varios aquí citan a Ian como el inventor de la técnica, aun cuando él mismo aclara que la técnica ya existía.

Edito ¡Oh! No había visto el comentario de rgstuamigo. :o

// Saludos

Livey
28-01-2011, 16:53:25
Muchas gracias a todos, han sido de mucha ayuda, que éxito este componente, de nuevo gracias!!!!

Casimiro Notevi
28-01-2011, 17:03:13
¿Para qué sirve el XPmanifest?, por lo que veo en el código de delphi lo que hace es cargar unos recursos, ¿pero de qué?

Chris
28-01-2011, 17:08:24
¿Para qué sirve el XPmanifest?, por lo que veo en el código de delphi lo que hace es cargar unos recursos, ¿pero de qué?

Sirve para activar los temas visuales para tu aplicación en Windows XP y posterior. Sino lo colocas, pues la aplicación luciará al estilo <=Windows 2000

Saludos,
Chris.

Casimiro Notevi
28-01-2011, 17:39:02
¿Entonces para qué sirve "Enable runtime themes" en las opciones del proyecto?

Chris
28-01-2011, 18:33:38
¿Entonces para qué sirve "Enable runtime themes" en las opciones del proyecto?
Es que ese es el nuevo método de hacerlo, seguro porque es más intuitivo. Pero antes tenías que incluir este componente o la unidad XPMan en algún lugar de tu aplicación.