| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 26 Jul, 2004 1:40 pm Asunto: Aspecto de un GroupBox y similares |
|
|
Hace algún tiempo preguntaba si se podía desactivar los elementos de un RadioGroup de forma individual; Leo me facilitó un codigo ue me funciona a las mil maravillas.
Ahora voy a dar otra vuelta de tornillo: ¿Es posi ble cambiar el aspecto de un GroupBox o un RadioGroup, de foma que por ejemplo el caption esté en negrillla y los items no?
He estado probando con Controls[...], pero no sé si pondré bien la estructura:
| Código: | RadioGroup1->Controls[0]->Font->Style = TFontStyles() << fsBold; |
Con esto en teoría cambiaría el aspecto del primer elemento de un RadioGroup. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 26 Jul, 2004 7:19 pm Asunto: |
|
|
En un TGroupBox si no quieres que el cambio de la fuente o color afecte a los controles que contiene solo tienes que desactivar en cada uno de estos propiedades como ParentFont o ParentColor.
En el TRadioGroup es mas o menos lo mismo, pero como no lo puedes hacer en tiempo de diseño tienes que hacerlo en tiempo de ejecución modificando las propiedades de los RadioButtons que contiene usando ..Controls[]..
| Cita: | | RadioGroup1->Controls[0]->Font->Style = TFontStyles() << fsBold; |
Esta bien, solo te falto moldear el tipo, ya que lo que te devuelve es un TControl, que es la clase base común a todos los controles y tiene prácticamente todas sus propiedades protegidas, o sea:
| Código: | TRadioButton* rb = static_cast<TRadioButton*>(RadioGroup1->Controls[0]);
rb->Font->Style = TFontStyles() << fsBold; |
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 27 Jul, 2004 11:22 am Asunto: |
|
|
A ver si te he entendido Leo: Yo tengo definido un DBRadioGroup en el que he puesto la fuente en negrita para que el título sea vea resaltado, pero claro también salen en el mismo tipo de letra los ítems definidos. Si utilizo el código que me has puesto, ¿Sería algo así como esto?
| Código: | TRadioButton *rb = static_cast<TRadioButton*>(RadioGroup1->Controls[0]);
rb->ParentFont= false; |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 27 Jul, 2004 2:54 pm Asunto: |
|
|
Puesto que inicialmente has puesto la fuente del RadioGroup en negrita los items del mismo estarán también con el mismo atributo, así que una vez se haya aplicado el código perfecto de _Leo lo que hay que hacer es volver a cambiar los atributos de los items a su estado normal, algo así como:
| Código: |
TRadioButton *rb = static_cast<TRadioButton*>(RadioGroup1->Controls[0]);
rb->ParentFont= false;
rb->Font->Style.Clear(); //despejamos atributos...
rb->Font->Style = rb->Font->Style>>fsBold; //si tiene negrita se la quitamos...
rb->Font->Size = 20; //y podemos seguir con tamaño, color, etc... |
Todo esto para cada uno de los items, o al menos así me ha funcionado a mí. Siempre con el permiso de _Leo . Saludos y encantado de volver a verte por aquí Angel. _________________ ¡ADELANTE CON ESTE SUPER FORO! |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 29 Jul, 2004 9:28 am Asunto: |
|
|
¡Como una seda! Sois unos hachas. Es exactamente lo que me hacía falta. El código ha quedado así:
| Código: | for (int nItem = 0; nItem < DBRadioGroup1->Items->Count; nItem ++)
{
TRadioButton *rb = static_cast<TRadioButton*>(DBRadioGroup1->Controls[nItem]);
rb->ParentFont = false;
rb->Font->Style.Clear(); //despejamos atributos...
rb->Font->Style = rb->Font->Style >> fsBold; //si tiene negrita se la quitamos...
} |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|