Cita:
Empezado por Bauhaus1975
¿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;
if Active then
begin
Control.Canvas.Font.Style := [fsBold];
Control.Canvas.Font.Color := clRed;
end
else
Control.Canvas.Font.Color := clBlack;
Control.Canvas.Brush.Color := clYellow;
Control.Canvas.FillRect(Re);
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