Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-01-2010
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Unhappy OwnerDraw en TPageControl

Hola a tod@s, de nuevo con los problemas

Estoy diseñando una aplicación que tiene un TPageControl2 dentro de una pestaña de otro TPageControl1.
Algunas de las pestañas del TPageControl2 deben mostrarse u ocultarse dependiendo del estado de unos botones TCheckBox que actualizo desde una Base de datos.
Las pestañas y los botones los nombro, (para mi comodidad), con el nombre de la clase y otro en mayúsculas separados por el guión bajo (_), por ejemplo si hay un botón llamado CheckBox_PEPE hay una pestaña llamada TabSheet_PEPE.
Para dar "realce" a las pestañas, utilizo el evento OnDrawTab (las pone con el texto en rojo y negrita).

Bien, depués de todo este "rollo", el problema es que muestra las pestañas que quiere (o no se hacerlo, que será lo más probable)
Si desactivo la propiedad OwnerDraw, todo funciona correctamente.

El código de los botones para ocultar las pestañas es el siguiente:
Código:
procedure TForm_Configuracion.CheckBox_ACTIVAR_PESTANAS_OnClick(Sender: TObject);
var
  TabSheet : TTabSheet;
  Alias    : string;
begin
{ calcular el alias del botón utilizado }
  Alias := TCheckBox(Sender).Name;
  while( Pos('_', Alias)>0 ) do
         Delete( Alias, 1, Pos('_', Alias) );
{ buscar la pestaña correspondiente al botón }
  TabSheet := FindComponent('TabSheet_'+Alias) as TTabSheet;
  if( TabSheet<>nil ) then begin
    { pestaña encontrada, ocultarla o mostrarla }
      TabSheet.TabVisible := TCheckBox(Sender).Checked;
  end;
end;
El código para dar forma a las pestañas es el siguiente (sacado de aquí mismo):
Código:
procedure TForm_Configuracion.PageControl2_OnDrawTab(
  Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect;
  Active: Boolean);
var
  TabSheet : TTabSheet;
  TabAlias : string;
  Margen   : integer;
begin
{ al dibujar las pestañas }
  TabSheet := PageControl2.Pages[TabIndex];
  //if not TabSheet.TabVisible then exit; { no vale, deja las pestañas en blanco }
  TabAlias := TabSheet.Caption;
  with PageControl2.Canvas do begin
       if Active then begin
        { texto en negrita }
          Font.Color := clRed;
          Font.Style := [fsBold];
       end else begin
        { texto normal }
          Font.Color := clBlack;
          Font.Style := [];
       end;
       FillRect(Rect);
       Margen := (Rect.Right-Rect.Left- TextWidth(TabAlias)) div 2;
       TextOut( Rect.Left+Margen, Rect.Top+4, TabAlias );
  end;
end;
Gracias adelantadas por la ayuda
salvica
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TTabcontrol con OwnerDraw y texto largo lag_0 OOP 2 21-03-2008 18:57:48
TPageControl Neiro SQL 4 06-10-2006 22:25:57
Fondo en TPageControl fabianmk OOP 4 02-10-2006 13:23:46
Deshabilitar una solapa de TPageControl reina Varios 5 23-08-2005 01:16:39
TpageControl agora18 Varios 6 17-10-2003 01:04:43


La franja horaria es GMT +2. Ahora son las 21:35:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi