Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Aspecto Visual de Botones en un TPageControl

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Aspecto Visual de Botones en un TPageControl Responder citando

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
~~~~~~~~
Wink _Willa
~~~~~~~~
www.avancegame.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
~~~~~~~~
Wink _Willa
~~~~~~~~
www.avancegame.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.