Fórum Cor do caption do PageControl #224100

02/04/2004

0

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

Responder

Posts

02/04/2004

Lucas Silva

- 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.


Responder

Gostei + 0

02/04/2004

Feberaldo

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.


Responder

Gostei + 0

02/04/2004

Valdir.santos

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;


Responder

Gostei + 0

05/04/2004

Feberaldo

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


Responder

Gostei + 0

05/04/2004

Valdir.santos

Era pra funcionar.

Colocou True na propriedade OwnerDraw da PageControl?

Valdir.


Responder

Gostei + 0

05/04/2004

Feberaldo

Deu certo. Era isso que estava faltando.

Obrigada.


Responder

Gostei + 0

05/04/2004

Feberaldo

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.


Responder

Gostei + 0

05/04/2004

Marcelo Saviski

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...


Responder

Gostei + 0

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

Aceitar