Accueil > > > UNE BARRE DE PROGRESSION EN RELIEF (STYLE PRODJ)
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/
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
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
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|