Pintar PageControl
Colegas..
Será que tem jeito num pagecontrol, cada TabeSheet ficar em uma cor diferente?
Uso delphi 2010..
Grato:
Jose Luiz
Jose Medeiros
Curtidas 0
Respostas
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
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 dobegin
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;
GOSTEI 0
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 dobegin
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;
GOSTEI 0
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 dobegin
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;
GOSTEI 0