Colorer un onglet d'un TabControl

Résolu
cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018 - 23 juil. 2009 à 07:14
cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018 - 23 juil. 2009 à 12:25
Bonjour,

j'essaie de colorer un onglet d'un tabControl.
Ce code ne fait rien:
Var Onglet: TRect;
begin
Onglet:= TabControl1.TabRect(0);
TabControl1.Canvas.Brush.Color:=clSkyBlue;
TabControl1.Canvas.FillRect(Onglet);
end;
Y a-t-il un moyen de le faire?

merci

2 réponses

cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
23 juil. 2009 à 12:05
Bonjour,

testé sous Delphi 2006, dans ton tabControl, il faut mettre la propriété OwnerDraw à true, puis dans les évènement il faut utiliser OnDrawTable

procedure TForm1.TabControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
var a, b: Integer;
begin
  if Active then begin
  Control.Canvas.Brush.Color := clWhite;
  Control.Canvas.Font.Color := clBlack;
 end else begin
  Control.Canvas.Brush.Color := clBlack;
  Control.Canvas.Font.Color := clWhite;
 end;

 Control.Canvas.Pen.Style := psClear;
 Control.Canvas.Rectangle(Rect);
   a := Control.Canvas.TextHeight((Control as TTabControl).Tabs.Strings[TabIndex]);
  b := Rect.Left;
  Control.Canvas.TextOut(b, Rect.Top + (Rect.Bottom - Rect.Top - a) div 2, (Control as TTabControl).Tabs.Strings[TabIndex]);
end;


aprés faut jouer un peu avec la position du texte (modifier b)
et en utilisant TabIndex, on peut mettre la couleur que l'on souhaite sur tous les onglets

bonne journée
3
cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018
23 juil. 2009 à 12:25
merci, ça marche!
sans ton aide je n'y serai pas arrivé
0
Rejoignez-nous