 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Willa Capt


Registrado: 28 Ago 2002Mensajes: 169Ubicación: Madrid ( España )
|
Publicado: Mar 31 Oct, 2006 12:08 pm Asunto: Aspecto Visual de Botones en un TPageControl |
|
|
Buenas,
Bueno, me duda es si se puede acceder desde un componente PageControl a los botones que te crea en la parte derecha.
Es decir, vas añadiendo pestañas hasta que visualmente no
caben más, y entonces te visualiza unos botones, para desplazarse
a la derecha y a la izquierda.
Me gustaria controlar el aspecto visual de esos botones que crea, para poder por ejem. cambiar el fondo, el width, heigth, etc, es decir, tener un control total, para diseñar un aspecto de boton propio, con las mismas acciones.
He estado probando con ...
| Código: |
TWinControl *Container=PageControl1;
String sName="";
String sCap="";
for (int i = 0; i < Container->ControlCount; i++)
{
//String sNmae=
TControl *pt=(dynamic_cast <TControl*>(Container->Controls[i]));
sName=pt->ClassName();
sName=sName+"_";
if(dynamic_cast <TTabSheet*>(Container->Controls[i]))
{
TTabSheet& ref_obj= dynamic_cast<TTabSheet&>(*Container->Controls[i]);
String sCap=ref_obj.Caption;
}
}
|
pero no llego a saber que clase de control son los objetos botones q crea. _________________ Saludos
~~~~~~~~
_Willa
~~~~~~~~
www.avancegame.com |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 31 Oct, 2006 2:37 pm Asunto: |
|
|
Esos botones los crea Windows y no la VCL (el "TPageControl" encapsula al control de Windows "SysTabControl32").
Los botones son el control "msctls_updown32" del API (el TUpDown que encapsula la VCL).
Una forma de obtener su "Handle":
| Código: | HWND handle = FindWindowEx(PageControl1->Handle, 0, "msctls_updown32", 0);
// Como ejemplo de manipulación del control lo deshabilitamos
EnableWindow(handle, false); |
|
|
| Volver arriba |
|
 |
_Willa Capt


Registrado: 28 Ago 2002Mensajes: 169Ubicación: Madrid ( España )
|
Publicado: Jue 02 Nov, 2006 11:03 am Asunto: |
|
|
Gracias _Leo,
Efectivamente es un objeto similar a TUpDown.
//TUpDown *pt = dynamic_cast<TControl*>(handle);
pero esta conversión me fallo.
| Código: |
HWND m_hWnd = FindWindowEx(PageControl1->Handle, 0, "msctls_updown32", 0);
DWORD dwStyle = ::GetWindowLong(m_hWnd,GWL_STYLE);
if (dwStyle & WS_VISIBLE) //switch off WS_VISIBLE
::SetWindowLong(m_hWnd, GWL_STYLE, (dwStyle & ~ WS_VISIBLE));
|
Através de las Apis, imagino q se podrá cambiar aspectos como
tamaño, fondos, de esos botones.
[/code] _________________ Saludos
~~~~~~~~
_Willa
~~~~~~~~
www.avancegame.com |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 02 Nov, 2006 2:11 pm Asunto: |
|
|
Si, puedes cambiar el tamaño, etc... el fondo de los botones y todo eso no, ya que este control es bastante simple y no prevee mucha más funcionalidad que la que se ve, aunque capturando el evento WM_PAINT puedes pintarlos completamente a tu gusto.
El código anterior lo podrías cambiar por:
ShowWindow(m_hWnd, SW_HIDE);
ya que con el código que has puesto aunque funciona no se verá el efecto hasta que no se repinte el control, puedes comprobarlo aplicando tu código y minimizando y restaurándola ventana por ejemplo. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|