Cor do caption do PageControl
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
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
Curtidas 0
Respostas
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
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
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;
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
02/04/2004
Já testei assim e tb não deu certo. Não faz nada.
Vc tem mais alguma solução?
Vc tem mais alguma solução?
GOSTEI 0
Valdir.santos
02/04/2004
Era pra funcionar.
Colocou True na propriedade OwnerDraw da PageControl?
Valdir.
Colocou True na propriedade OwnerDraw da PageControl?
Valdir.
GOSTEI 0
Feberaldo
02/04/2004
Deu certo. Era isso que estava faltando.
Obrigada.
Obrigada.
GOSTEI 0
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.
É 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
02/04/2004
Não sei se entendi bem problema, mas tente com isso, talvez funciona
Trocar o:
por:
É só um palpite...
Trocar o:
pgc.Pages[TabIndex].Caption);
por:
Control.GetText;
É só um palpite...
GOSTEI 0