Cor do caption do PageControl

Delphi

02/04/2004

Pessoal,

Gostaria de mudar a fonte do caption de um PageControl só da aba que estiver ativa.
Alguém sabe como me ajudar?

Obrigada.

Fernanda


Feberaldo

Feberaldo

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

02/04/2004

- Coloque um PageControll num form - Adicione 6 TabSheet (New Page) - Agora basta implementar o codigo abaixo procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); begin case TabIndex of 0: Control.Canvas.Font.Color:=clgreen; 1: Control.Canvas.Font.Color:=clred; 2: Control.Canvas.Font.Color:=clblue; 3: Control.Canvas.Font.Color:=clYellow; 4: Control.Canvas.Font.Color:=clMaroon; 5: Control.Canvas.Font.Color:=clWhite; end; Control.Canvas.TextOut(Rect.left+5,Rect.top+3,PageControl1.Pages[tabindex].Caption); PageControl1.Pages[TabIndex].Font.Color:=Control.Canvas.Font.Color; end; procedure TForm1.FormCreate(Sender: TObject); begin PageControl1.OwnerDraw:=true; end;


Tirado das 800 dicas delphi..


A lógica tá toda ai, é só você fazer algumas modificações.


GOSTEI 0
Feberaldo

Feberaldo

02/04/2004

Eu já tinha visto essa dica aqui e já testei. Ele muda a fonte de cada aba de uma vez. Fica uma de cada cor. Eu não queria exatamente isso. Por exemplo: quando o usuário clicar em uma aba, esse caption ficaria em negrito e o resto normal.


GOSTEI 0
Valdir.santos

Valdir.santos

02/04/2004

procedure TfrmPrincipal.pgcDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
with Control.Canvas.Font do begin
if Active then
Style:=[fsBold]
else
Style:=[];
end;
Control.Canvas.TextOut(Rect.Left+20,Rect.Top+3,pgc.Pages[TabIndex].Caption);
end;


GOSTEI 0
Feberaldo

Feberaldo

02/04/2004

Já testei assim e tb não deu certo. Não faz nada.
Vc tem mais alguma solução?


GOSTEI 0
Valdir.santos

Valdir.santos

02/04/2004

Era pra funcionar.

Colocou True na propriedade OwnerDraw da PageControl?

Valdir.


GOSTEI 0
Feberaldo

Feberaldo

02/04/2004

Deu certo. Era isso que estava faltando.

Obrigada.


GOSTEI 0
Feberaldo

Feberaldo

02/04/2004

Desculpe te incomodar novamente, mas surgiu outro problema.
É que tenho abas que tem o TabVisible = false e só aparecem quando clico em um botão de outra aba.
Resumindo, as abas estão corretas (ou seja, os TabSheets está aparecendo perfeitamente) mas os caption das abas estão aparecendo na sequência que foram cadastrados (aparecendo os que deveriam ficar ocultos). Não sei se você entendeu. Mas você tem alguma idéia do que fazer.
Com certeza é na linha

Control.Canvas.TextOut(Rect.Left+5,Rect.Top+2,Pgc_emp.Pages[TabIndex].Caption);

Pois ele pega todos os TabIndex.
Eu queria que ele pulasse alguns no início da aplicação, e só aparecessem quando necessário.

Obrigada.


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

02/04/2004

Não sei se entendi bem problema, mas tente com isso, talvez funciona

Trocar o:
pgc.Pages[TabIndex].Caption); 

por:
Control.GetText;


É só um palpite...


GOSTEI 0
POSTAR