|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
UNE BARRE DE PROGRESSION EN RELIEF (STYLE PRODJ)
Information sur la source
Description
Il existe dans le logiciel musical ProDJ un composant qui m'a inspiré cette imitation juste à titre d'exercice, et puis finalement il débarque sur DelphiFr. Précisons que ProDJ ne pourra pas être tenu responsable de la plus ou moins bonne qualité de ce composant... Il est cependant tout à fait fonctionnel. REMARQUE IMPORTANTE !!!! Il n'est pas nécessaire d'installer d'abord le composant pour le tester. En effet, la démo est en version QuickTest qui permet de voir globalement le fonctionnement du composant. Si celui-ci vous intéresse, il suffira d'activer certaines lignes de code dans le composant et de l'installer dans des paquets. Si vous ne savez pas comment faire, alors consultez le tutorial 86 à gauche dans la rubrique Outils&Liens. Le composant est basé sur le modèle de la TGauge. De plus, deux propriétés permettent de le coloriser: GlobalColor et ShadowColor. Sachez également que la couleur du texte est égale à la couleur inversée de GlobalColor. Voilà...
Source
- unit MdrnG;
- interface
- {$R MdrGauge.dcr}
- uses Windows, SysUtils, Classes, Graphics, Controls;
- type
- TModernGauge = class(TCustomControl)
- private
- FMin : integer;
- FMax : integer;
- FPos : integer;
- FColor : TColor;
- FShadow : TColor;
- FOnProgress : TNotifyEvent;
- procedure SetMin(Value : integer);
- procedure SetMax(Value : integer);
- procedure SetPosition(Value : integer);
- procedure SetGlobalColor(Value : TColor);
- procedure SetShadowColor(Value : TColor);
- protected
- procedure Paint; override;
- public
- constructor Create(AOwner: TComponent); override;
- procedure IncrementProgress;
- function GetPercentDone: integer;
- published
- property Align;
- property Cursor;
- property Hint;
- property ParentShowHint;
- property ShowHint;
- property Visible;
- property Min: integer read FMin write SetMin;
- property Max: integer read FMax write SetMax;
- property Position: integer read FPos write SetPosition;
- property GlobalColor: TColor read FColor write SetGlobalColor;
- property ShadowColor: TColor read FShadow write SetShadowColor;
- property OnClick;
- property OnDblClick;
- property OnMouseDown;
- property OnMouseMove;
- property OnMouseUp;
- property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
- end;
- procedure Register;
- implementation
-
- function SolveForY(X, Z: Integer): integer;
- begin
- if Z=0 then Result:=0
- else Result:=trunc((X*100)/Z);
- end;
- function ReverseColor(thecolor: Integer): integer;
- begin
- ReverseColor:=rgb(255-getrvalue(thecolor),255-getgvalue(thecolor),255-getbvalue(thecolor));
- end;
-
- constructor TModernGauge.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- ControlStyle:=ControlStyle + [csOpaque, csCaptureMouse, csClickEvents, csDoubleClicks];
- DoubleBuffered:=true;
- Width:=100;
- Height:=100;
- FMin:=0;
- FMax:=100;
- FPos:=25;
- FColor:=rgb(160,192,240);
- FShadow:=rgb(64,96,144);
- Canvas.Font.Name:='Arial';
- Canvas.Font.Size:=9;
- Canvas.Font.Color:=ReverseColor(FColor);
- Canvas.Font.Style:=[fsBold];
- end;
-
- procedure TModernGauge.Paint;
- var s : string ;
- begin
- with Canvas do begin
- CopyMode:=cmSrcCopy;
- //arrière plan
- Brush.Style:=bsSolid;
- Brush.Color:=clBlack;
- Brush.Style:=bsSolid;
- Brush.Color:=clBlack;
- Rectangle(0,0,Width,Height);
- //progression
- Pen.Color:=FShadow;
- Brush.Color:=FColor;
- Rectangle(2,2,(Width-2) * GetPercentDone div 100,Height-2);
- //rebord blanc
- Pen.Color:=clWhite;
- if (Width-2) * GetPercentDone div 100 >=2 then
- begin
- MoveTo(2,2);
- LineTo((Width-2) * GetPercentDone div 100,2);
- MoveTo(2,2);
- LineTo(2,Height-2);
- end;
- //contour relief blanc
- MoveTo(0,Height-1);
- LineTo(Width,Height-1);
- MoveTo(Width-1,0);
- LineTo(Width-1,Height);
- //gris foncé
- Pen.Color:=clGray;
- MoveTo(0,0);
- LineTo(Width-2,0);
- MoveTo(0,0);
- LineTo(0,Height-2);
- //écrit le "__%"
- Brush.Style:=bsClear;
- Pen.Color:=FColor;
- s:=IntToStr(GetPercentDone)+'%';
- TextOut( (Width div 2)-(TextWidth(s) div 2),
- (Height div 2)-(TextHeight(s) div 2),
- s
- );
- end;
- end;
-
- function TModernGauge.GetPercentDone: integer;
- begin
- Result:=SolveForY(FPos - FMin, FMax - FMin);
- end;
-
- procedure TModernGauge.IncrementProgress;
- begin
- Position:=FPos+1;
- end;
-
- procedure TModernGauge.SetMin(Value : integer);
- begin
- if Value<>FMin then
- begin
- if Value>FMax then
- Value:=FMax;
- FMin:=Value;
- if FPos<Value then
- FPos:=Value;
- Refresh;
- end;
- end;
-
- procedure TModernGauge.SetMax(Value : integer);
- begin
- if Value<>FMax then
- begin
- if Value<FMin then
- Value:=FMin;
- FMax:=Value;
- if FPos>Value then
- FPos:=Value;
- Refresh;
- end;
- end;
-
- procedure TModernGauge.SetPosition(Value : integer);
- var TempPercent: integer;
- begin
- TempPercent:=GetPercentDone;
- if Value<FMin then
- Value:=FMin
- else
- if Value>FMax then
- Value:=FMax;
- if FPos<>Value then
- begin
- FPos:=Value;
- if TempPercent<>GetPercentDone then
- Refresh;
- end;
- end;
-
- procedure TModernGauge.SetGlobalColor(Value : TColor);
- begin
- if Value<>FColor then
- begin
- FColor:=Value;
- Canvas.Font.Color:=ReverseColor(Value);
- Refresh;
- end;
- end;
-
- procedure TModernGauge.SetShadowColor(Value : TColor);
- begin
- if Value<>FShadow then
- begin
- FShadow:=Value;
- Refresh;
- end;
- end;
-
- procedure Register;
- begin
- RegisterComponents('Supplément', [TModernGauge]);
- end;
- end.
unit MdrnG;
interface
{$R MdrGauge.dcr}
uses Windows, SysUtils, Classes, Graphics, Controls;
type
TModernGauge = class(TCustomControl)
private
FMin : integer;
FMax : integer;
FPos : integer;
FColor : TColor;
FShadow : TColor;
FOnProgress : TNotifyEvent;
procedure SetMin(Value : integer);
procedure SetMax(Value : integer);
procedure SetPosition(Value : integer);
procedure SetGlobalColor(Value : TColor);
procedure SetShadowColor(Value : TColor);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
procedure IncrementProgress;
function GetPercentDone: integer;
published
property Align;
property Cursor;
property Hint;
property ParentShowHint;
property ShowHint;
property Visible;
property Min: integer read FMin write SetMin;
property Max: integer read FMax write SetMax;
property Position: integer read FPos write SetPosition;
property GlobalColor: TColor read FColor write SetGlobalColor;
property ShadowColor: TColor read FShadow write SetShadowColor;
property OnClick;
property OnDblClick;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
end;
procedure Register;
implementation
function SolveForY(X, Z: Integer): integer;
begin
if Z=0 then Result:=0
else Result:=trunc((X*100)/Z);
end;
function ReverseColor(thecolor: Integer): integer;
begin
ReverseColor:=rgb(255-getrvalue(thecolor),255-getgvalue(thecolor),255-getbvalue(thecolor));
end;
constructor TModernGauge.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle:=ControlStyle + [csOpaque, csCaptureMouse, csClickEvents, csDoubleClicks];
DoubleBuffered:=true;
Width:=100;
Height:=100;
FMin:=0;
FMax:=100;
FPos:=25;
FColor:=rgb(160,192,240);
FShadow:=rgb(64,96,144);
Canvas.Font.Name:='Arial';
Canvas.Font.Size:=9;
Canvas.Font.Color:=ReverseColor(FColor);
Canvas.Font.Style:=[fsBold];
end;
procedure TModernGauge.Paint;
var s : string ;
begin
with Canvas do begin
CopyMode:=cmSrcCopy;
//arrière plan
Brush.Style:=bsSolid;
Brush.Color:=clBlack;
Brush.Style:=bsSolid;
Brush.Color:=clBlack;
Rectangle(0,0,Width,Height);
//progression
Pen.Color:=FShadow;
Brush.Color:=FColor;
Rectangle(2,2,(Width-2) * GetPercentDone div 100,Height-2);
//rebord blanc
Pen.Color:=clWhite;
if (Width-2) * GetPercentDone div 100 >=2 then
begin
MoveTo(2,2);
LineTo((Width-2) * GetPercentDone div 100,2);
MoveTo(2,2);
LineTo(2,Height-2);
end;
//contour relief blanc
MoveTo(0,Height-1);
LineTo(Width,Height-1);
MoveTo(Width-1,0);
LineTo(Width-1,Height);
//gris foncé
Pen.Color:=clGray;
MoveTo(0,0);
LineTo(Width-2,0);
MoveTo(0,0);
LineTo(0,Height-2);
//écrit le "__%"
Brush.Style:=bsClear;
Pen.Color:=FColor;
s:=IntToStr(GetPercentDone)+'%';
TextOut( (Width div 2)-(TextWidth(s) div 2),
(Height div 2)-(TextHeight(s) div 2),
s
);
end;
end;
function TModernGauge.GetPercentDone: integer;
begin
Result:=SolveForY(FPos - FMin, FMax - FMin);
end;
procedure TModernGauge.IncrementProgress;
begin
Position:=FPos+1;
end;
procedure TModernGauge.SetMin(Value : integer);
begin
if Value<>FMin then
begin
if Value>FMax then
Value:=FMax;
FMin:=Value;
if FPos<Value then
FPos:=Value;
Refresh;
end;
end;
procedure TModernGauge.SetMax(Value : integer);
begin
if Value<>FMax then
begin
if Value<FMin then
Value:=FMin;
FMax:=Value;
if FPos>Value then
FPos:=Value;
Refresh;
end;
end;
procedure TModernGauge.SetPosition(Value : integer);
var TempPercent: integer;
begin
TempPercent:=GetPercentDone;
if Value<FMin then
Value:=FMin
else
if Value>FMax then
Value:=FMax;
if FPos<>Value then
begin
FPos:=Value;
if TempPercent<>GetPercentDone then
Refresh;
end;
end;
procedure TModernGauge.SetGlobalColor(Value : TColor);
begin
if Value<>FColor then
begin
FColor:=Value;
Canvas.Font.Color:=ReverseColor(Value);
Refresh;
end;
end;
procedure TModernGauge.SetShadowColor(Value : TColor);
begin
if Value<>FShadow then
begin
FShadow:=Value;
Refresh;
end;
end;
procedure Register;
begin
RegisterComponents('Supplément', [TModernGauge]);
end;
end.
Conclusion
Vous pouvez toujours aller voir http://altert.family.free.fr/
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 03 juillet 2005 20:17:29 :
- - Epuration du Zip
- 18 décembre 2005 18:52:03 :
- - Mise à jour des mots clé
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Insérer une barre de progression lors d'un chargement d'un base .... [ par burnx22 ]
Je suis au Cégep en Informatique et je dois savoir absolument comment faire pour faire fonctionner une barre de progression (progress bar) lorsque j'i
Barre de progression réelle [ par mighty_warrior ]
Bonjour,Ca fait pas mal de temps maintenant que je bidouille un p'tit programme disposant d'une interface en 3D. Le truc c'est que le programme met un
SplashScreen + barre de progression [ par cantador ]
Bonjour à tous, Dans une appli, je crée un SplashScreen au démarrage(5 x 10 cm)avec une barre de progression qui s'incrémente au fur et à mesure des
afficher icone dans une fiche (Tform) comme ceux de la barre d'outils [ par mighty_warrior ]
Bonjours,Je sollicite votre aide car j'ai besoin de savoir comment faire pour afficher les icones des programmes dans une fiche delphi comme on les vo
comment detecter qu'une entree se fait pas lecteur code barre [ par kiou9 ]
salut a tousj'ai encore une question du tonnerre de Zeusj'ai un programme de gestion client-produit-activitéje voudrai pouvoir detecter le fait que j'
program invisible dans la barre de tache [ par Ali_usto ]
salut tout le monde voila je voudrais savoir comment faire pour rendre un programme invisible dans la barre de tache , j'ai trouvé un exemple sur le s
Dimension de l'écran avec barre à outils [ par yvessimon ]
Bonjour,La taille total de l'écran est accéssible avec " screen ".Hors la barre d'outils windows peut être horizontale ou verticale et de largeur vari
Minimiser des forms non principales. [ par Fat ]
Je ne sais pas si c'est normal, mais dans une appli en VB par exemple, quand vous creez plusieurs forms, quand vous les minimiser, elles se retrouvent
Comment faire fonctionner le compposant "Gauge" ? [ par Zangdar ]
cf : voir titre.Est-ce que ca fonctionne comme avec une progressBar ?nan, je pense pas, je pense que ca s'utilise autrement, nan ?www.zangdar.fr.st
icone dans delphi 3 [ par JEANMD ]
Salut,j'ai fait un petit programme dans lequel j'aimerai y placer des bouton dans une barre d'outil ,tout marche très bien seul chose qui m'ennuie ,le
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|