Colorer un onglet d'un TabControl [Résolu]

Signaler
Messages postés
121
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018
-
Messages postés
121
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018
-
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

Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
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
Messages postés
121
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018

merci, ça marche!
sans ton aide je n'y serai pas arrivé