Ver Mensaje Individual
  #4  
Antiguo 04-12-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 22
Caro Va por buen camino
Cita:
Empezado por Bauhaus1975 Ver Mensaje
¿Existe alguna manera sin usar un componente externo?
Hola, pintando a mano si se puede, debes colocar la propiedad OwnerDraw a True y utilizar el evento OnDrawTab.

Código Delphi [-]
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
 Re : TRect;
 Titulo : String;
begin
 Re := Rect;
 Titulo := PageControl1.Pages[TabIndex].Caption;
 
 //Para las letras
 if Active then
  begin
   Control.Canvas.Font.Style := [fsBold];
   Control.Canvas.Font.Color := clRed;
  end
 else
  Control.Canvas.Font.Color := clBlack;
 
 //Paar el fondo
 Control.Canvas.Brush.Color := clYellow;
 
 Control.Canvas.FillRect(Re);
 
 //esta línea es para que el TabSheet tome el color de fondo del Tab
 PageControl1.Pages[TabIndex].Brush.Color:=Control.Canvas.Brush.Color;
 
 DrawText(
    Control.Canvas.Handle, PChar(Titulo), Length(Titulo), Re,
    DT_CENTER or DT_VCENTER or DT_SINGLELINE);
end;

Ahora para que se vea mas bonito, pones el PageControl dentro de un panel con Align=alClient y le das un color mas bajo al panel (en nuestro ejemplo un amarillo mas bajito), así tomara ese color el pagecontrol y cuando se ingrese a un tabsheet se maracara todo del color amarillo.

El unico problema que veo es que la primera vez no funciona, tienes que entrar a un TabSheet para que despues tenga ese efecto.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita