Pintar PageControl

Delphi

28/05/2010

Colegas..   Será que tem jeito num pagecontrol, cada TabeSheet ficar em uma cor diferente?   Uso delphi 2010..       Grato: Jose Luiz
Jose Medeiros

Jose Medeiros

Curtidas 0

Respostas

Marco Salles

Marco Salles

28/05/2010

Bem mais simples do que qq codigo que se possa usar no evento DrawTab e cetar a propriedade OwnerDraw Para True ( aonde de fato acontecemas coisas colorir e etc... ) é simplesmente usar Panel prenchendo toda a superficie de cada TTabSheet e escoler a cor a  gosto
GOSTEI 0
Marco Salles

Marco Salles

28/05/2010

Bem mais simples do que qq codigo que se possa usar no evento DrawTab e cetar a propriedade OwnerDraw Para True ( aonde de fato acontecem as coisas colorir e etc... ) é simplesmente usar Panel prenchendo toda a superficie de cada TTabSheet e escolher a cor a  gosto
Mas se quiseres ainda optar por codificação segue   [COCE]   with control do
    begin
      case TabIndex of
        0: Canvas.Font.Color:=clGreen;
        1: Canvas.Font.Color:=clred;
      end;       // pinta a paleta
      case TabIndex of
        0:Canvas.brush.Color:=clSkyBlue;
        1: Canvas.brush.Color:=clYellow;
      end;
  end;   with TPagecontrol(control) do
    begin
      Canvas.Rectangle(Rect);
      control.Canvas.TextOut(Rect.left+5,Rect.top+3,PageControl1.Pages[tabindex].Caption);
      Pages[TabIndex].Font.Color:=Control.Canvas.Font.Color;
      // pinta a parte interna (tabsheet)
      Pages[TabIndex].brush.Color := Control.Canvas.brush.Color;
    end; [/CODE]   No formShow defina  
procedure TForm1.FormShow(Sender: TObject);
begin
  with Self.PageControl1 do
    begin
       ActivePageIndex:=0;
       Pages[0].brush.Color :=clSkyBlue;
    end;
end;
  Lembrando que : OwnerDraw Para True   Alem disso tem que desabilitar os Themas ....   Project Options > Application >> Enabled RumTime Themes
 
GOSTEI 0
Marco Salles

Marco Salles

28/05/2010

Bem mais simples do que qq codigo que se possa usar no evento DrawTab e cetar a propriedade OwnerDraw Para True ( aonde de fato acontecem as coisas colorir e etc... ) é simplesmente usar Panel prenchendo toda a superficie de cada TTabSheet e escolher a cor a  gosto
    Mas se quiseres ainda optar por codificação segue   [COCE]   with control do
    begin
      case TabIndex of
        0: Canvas.Font.Color:=clGreen;
        1: Canvas.Font.Color:=clred;
      end;       // pinta a paleta
      case TabIndex of
        0:Canvas.brush.Color:=clSkyBlue;
        1: Canvas.brush.Color:=clYellow;
      end;
  end;   with TPagecontrol(control) do
    begin
      Canvas.Rectangle(Rect);
      control.Canvas.TextOut(Rect.left+5,Rect.top+3,PageControl1.Pages[tabindex].Caption);
      Pages[TabIndex].Font.Color:=Control.Canvas.Font.Color;
      // pinta a parte interna (tabsheet)
      Pages[TabIndex].brush.Color := Control.Canvas.brush.Color;
    end; [/CODE]   No formShow defina  
procedure TForm1.FormShow(Sender: TObject);
begin
  with Self.PageControl1 do
    begin
       ActivePageIndex:=0;
       Pages[0].brush.Color :=clSkyBlue;
    end;
end;
  Lembrando que : OwnerDraw Para True   Alem disso tem que desabilitar os Themas ....   Project Options > Application >> Enabled RumTime Themes
GOSTEI 0
Marco Salles

Marco Salles

28/05/2010

Bem mais simples do que qq codigo que se possa usar no evento DrawTab e cetar a propriedade OwnerDraw Para True ( aonde de fato acontecem as coisas colorir e etc... ) é simplesmente usar Panel prenchendo toda a superficie de cada TTabSheet e escolher a cor a  gosto
    Mas se quiseres ainda optar por codificação segue   [COCE]   with control do
    begin
      case TabIndex of
        0: Canvas.Font.Color:=clGreen;
        1: Canvas.Font.Color:=clred;
      end;       // pinta a paleta
      case TabIndex of
        0:Canvas.brush.Color:=clSkyBlue;
        1: Canvas.brush.Color:=clYellow;
      end;
  end;   with TPagecontrol(control) do
    begin
      Canvas.Rectangle(Rect);
      control.Canvas.TextOut(Rect.left+5,Rect.top+3,PageControl1.Pages[tabindex].Caption);
      Pages[TabIndex].Font.Color:=Control.Canvas.Font.Color;
      // pinta a parte interna (tabsheet)
      Pages[TabIndex].brush.Color := Control.Canvas.brush.Color;
    end; [/CODE]   No formShow defina  
procedure TForm1.FormShow(Sender: TObject);
begin
  with Self.PageControl1 do
    begin
       ActivePageIndex:=0;
       Pages[0].brush.Color :=clSkyBlue;
    end;
end;
  Lembrando que : OwnerDraw Para True   Alem disso tem que desabilitar os Themas ....   Project Options > Application >> Enabled RumTime Themes
GOSTEI 0
POSTAR