Cor na Aba do TabSheet ??????

Delphi

27/07/2004

Pessoal,

Boa Tarde!
É possível mudar a cor do componente TabSheet? quando mudo a cor dele tudo bem mais a aba(orelhinha) continua com a cor default, voçês sabem de alguma propriedade onde possa mudar a cor?
Já conversei com várias pessoas e nada. Será que é um bug do Delhi?
Agradeço desde já!


Mmbarros

Mmbarros

Curtidas 0

Respostas

Motta

Motta

27/07/2004

Segue o padrão windows, não muda que eu saiba, talvez indo no canvas.


GOSTEI 0
Fabio.hc

Fabio.hc

27/07/2004

Tente assim:

Coloque este evento em todas as TabSheet´s. Destaca a TabSheet selecionada.
procedure TForm1.TabSheet1Hide(Sender: TObject);
begin
   (sender as TTabSheet).Highlighted:=false;
end;

procedure TForm1.TabSheet1Show(Sender: TObject);
begin
   (sender as TTabSheet).Highlighted:=true;
end;



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

27/07/2004

pra mudar a cor da ´orelha´, altere a propriedade OwnerDraw do PageControl para True e atribua as alterações no evento OnDrawTab.


GOSTEI 0
Mmbarros

Mmbarros

27/07/2004

OK Emerso.en a aba recebe a cor porém não exibe o caption do TabSheet... De qualquer forma muito obrigado pela dica!


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

27/07/2004

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
    if Active then
    begin
        Control.Canvas.Font.Color := clWhite;
        Control.Canvas.Brush.Color := clBlue;
    end
    else
    begin
        Control.Canvas.Brush.Color := clWindowText;
        Control.Canvas.Brush.Color := clBtnFace;
    end;

    Control.Canvas.FillRect( Rect );
    Control.Canvas.TextOut( Rect.Left+5,Rect.Top+4,TTabSheet(PageControl1.Pages[TabIndex]).Caption );
end;


GOSTEI 0
Sérgio Siqueira

Sérgio Siqueira

27/07/2004

FCorTabSelecionada,
FCorTabNaoSelecionada: TColor;


FCorTabSelecionada := $00E6DEF7;
FCorTabNaoSelecionada := clWhite;

procedure TfrmPrincipal.pcPrincipalDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);

function ObterCor(Tab: Integer): TColor;
begin
if (pcPrincipal.TabIndex = TabIndex) then
Result := CorTabSelecionada
else
Result := FCorTabNaoSelecionada;
end;

begin
inherited;
Control.Canvas.Brush.Color := ObterCor(TabIndex);
Control.Canvas.FillRect(Rect);
pcPrincipal.canvas.font.color:=clBlack;
Control.Canvas.TextOut(Rect.left+2,Rect.top+2,TTabSheet(pcPrincipal.Pages[tabindex]).Caption);
pcPrincipal.Pages[TabIndex].Font.Color:=clblack;
end;

Marque a propriedade OwnerDraw no objecto inspector como true.

GOSTEI 0
POSTAR