Mudar a cor de uma tabsheet delphi

19/05/2022

0

Estou precisando alterar a cor das tabsheets de um pagecontrol no delphi7 porem de todas as dicas na inter nenhuma deu resultado, alguem teria alguma ideia do que pode ser feito

o codigo a baixo foi testado e não deu certo

case TabIndex of //quantidade de pages(abas) que terá seu pagecontrol.

0: Control.Canvas.brush.Color:=clgreen;

1: Control.Canvas.brush.Color:=clred;

2: Control.Canvas.brush.Color:=clblue;

3: Control.Canvas.brush.Color:=clYellow;

4: Control.Canvas.Font.Color:=clMaroon;

5: Control.Canvas.Font.Color:=clWhite;

end;

Control.Canvas.FillRect( Rect );

PageControl1.canvas.font.color:=clblue; //cor da aba do tabsheet

Control.Canvas.TextOut(Rect.left+2,Rect.top+2,TTabSheet(PageControl1.Pages[tabindex]).Caption);

PageControl1.Pages[TabIndex].Font.Color:=clblack;
Victor Hugo

Victor Hugo

Responder

Posts

20/05/2022

Natanael Ferreira

Fiz um teste com este seu código e alterou as cores do Tabsheet mas somente as abas da Tab.

Para que seu código funcione altere a propriedade OwnerDraw do PageControl para True e coloque este seu código no evento OnDrawTab do PageControl.

Testa aí.
Responder

20/05/2022

Victor Hugo

Fiz um teste com este seu código e alterou as cores do Tabsheet mas somente as abas da Tab.

Para que seu código funcione altere a propriedade OwnerDraw do PageControl para True e coloque este seu código no evento OnDrawTab do PageControl.

Testa aí.
A propriedade OwnerDraw está ativa, deveria estar tudo certo porém simplesmente não acontece nada, andei pesquisanod um pouco mais e encontrei em um outro forum alguem descrevendo o mesmo erro e que disse que era a versão do delphi(no caso eu uso o delphi 7) ou a versão do windows, por isso recorri ao forum aqui para tentar encontrar outra solução
Responder

20/05/2022

Victor Hugo

Fiz um teste com este seu código e alterou as cores do Tabsheet mas somente as abas da Tab.

Para que seu código funcione altere a propriedade OwnerDraw do PageControl para True e coloque este seu código no evento OnDrawTab do PageControl.

Testa aí.
A propriedade OwnerDraw está ativa, deveria estar tudo certo porém simplesmente não acontece nada, andei pesquisanod um pouco mais e encontrei em um outro forum alguem descrevendo o mesmo erro e que disse que era a versão do delphi(no caso eu uso o delphi 7) ou a versão do windows, por isso recorri ao forum aqui para tentar encontrar outra solução
Nesse outro forum a pessoa tinha postado um link da forma que ela conseguiu solucionar, mas por ser uma resposta antiga o link está quebrado, então só me deu mais esperança de que haja uma outra solução
Responder

08/01/2024

João Costa

Sei que já se passou muito tempo, mas consegui fazer com que esses TabSheet fique com a cor desejada, simplesmente, colocando um Panel e alinhando alClient para em seguida colocar os componentes sobre este Panel. Fica até bem legal, já que pode fazer isso, com cores diferentes em todas as abas.
Responder

08/01/2024

Arthur Heinrich

Para mim, deu certo aqui, com a propriedade PageControl1.OwnerDraw:=True e evento OnDrawTab para pintar:

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    procedure PageControl1DrawTab(Control: TCustomTabControl;
      TabIndex: Integer; const Rect: TRect; Active: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  Control.Canvas.Brush.Color:=clBlue;
  Control.Canvas.Brush.Style:=bsSolid;
  Control.Canvas.Font.Color:=clWhite;
  Control.Canvas.FillRect(Rect);
  Control.Canvas.TextOut(Rect.Left+2,Rect.Top+2,(Control as TPageControl).ActivePage.Caption);
end;

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar