1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| type
TRuPanel = class(TPanel)
Private
FStartColor:Tcolor;
FEndColor:Tcolor ;
fCaption1:String;
fCaption2:String;
Protected
Procedure Paint;override;
Published
property StartColor : Tcolor read fStartColor write fStartColor ;
property EndColor : Tcolor read FEndColor write FEndColor ;
property Caption1 : String read fCaption1 write fCaption1;
property Caption2 : String read fCaption2 write fCaption2;
end;
....
procedure TRuPanel.Paint;
Procedure Degrader;
Var
aBand : TRect; { Bande rectangulaire de couleur courante }
i : Integer; { Compteur pour parcourir la hauteur de la fiche }
FStartRGB : Array[0..2] of Byte; { RGB de la couleur de départ }
FCurrentRGB : Array[0..2] of Byte; { RGB de la couleur courante }
FDeltaRGB : Array[0..2] of Integer; { RGB à ajouter à la couleur de départ pour atteindre la couleur de fin }
nbtranches: integer;
Canevas:TControlCanvas;
Rect:TRect;
Begin
//
// Calcul du Degrader que tout le monde connaite
//
Font.Name := self.Font.Name;
Font.Size := self.Font.Size;
Brush.Style := bsClear;
if Self.Caption1 = '' then DrawText(Canevas.Handle, PChar(Self.Caption) , -1, Rect, DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE)
else
Begin
DrawText(Canevas.Handle, PChar(Self.Caption1) , -1, Rect, DT_CENTER or DT_NOPREFIX or DT_SINGLELINE);
Rect.Top := Rect.Top + Self.Font.Size + 6;
Pen.Color := clBlack;
MoveTo(Rect.Left+2,Rect.Top);
LineTo(Rect.Right-2,Rect.top);
Rect.Top := Rect.Top + 2;
DrawText(Canevas.Handle, PChar(Self.Caption2) , -1, Rect, DT_NOPREFIX or DT_WORDBREAK);
end;
End;
Canevas.Free; // Libérer le canevas après usage !
End;
begin
inherited Paint;
Degrader;
end; |
Partager