Progressbar défilante

Résolu
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 - 20 juin 2010 à 13:13
 Utilisateur anonyme - 22 juin 2010 à 15:16
bonjour à tous :)
En ce dimanche j'ai une petite question.

Ne pouvant mesurer la progression d'un scan, je voudrais mettre une barre de progression dont son contenu défile en continu sans marquer l'état de progression.
Un comme la fonction barreprogression.pulse() en Python.


J'avais vu une source là-dessus mais c'était très lourd pour si peu de chose.
Merci de votre aide.

40 réponses

cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
21 juin 2010 à 12:42
Salut,
Cirec à dit "tout simplement"
donc :
uses ... 
MarqueeProgressBar;
...
var
  Form1 : TForm1;
  Bar   : TMarqueeProgressBar;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
    Bar:=TMarqueeProgressBar.Create(Self);
    Bar.Parent:=Self;
    Bar.Active:=True;
    Bar.AnimationSpeed:=10;// Exemple: 1 => rapide 100 => lent
end;

@+yanb
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
21 juin 2010 à 12:46
bon
1°) quelle OS utilises-tu ?
2°) il faut absolument déposer un TXPMan sur la fiche pour que ça fonctionne


[hr]@+Cirec
[hr]
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
21 juin 2010 à 14:26
Merci yanb, je test ça ce soir.
@ cirec > WinXP et le TXPMan était bien présent.
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
21 juin 2010 à 15:24
Salut Jacknumber,
si tu as Windows XP ou supérieur, il te faut utiliser les API Windows en surchargeant la propriété CreateParams de ton ProgressBar. Il faut lui ajouter le flag PBM_SETMARQUEE ou un truc du genre. Ensuite tu envoies des messages à ta progressbar avec SendMessage pour changer la vitesse de défilement, pour l'activer et l'arrêter, ... Je te conseille de faire un composant surchargé de TProgressBar sinon tu n'y arriveras pas.

Regarde ce lien : http://msdn.microsoft.com/en-us/library/bb760842%28VS.85%29.aspx

Cordialement, Bacterius !

[*]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
21 juin 2010 à 15:26
Il me semble que j'avais déposé une source qui contenait l'unité MarqueeBar.pas, qui surchargeait le TProgressBar en ajoutant des propriétés. Si tu retrouves ce fichier, il te faut le mettre EN DERNIER dans la clause uses de ta fiche, et tu as alors des propriétés nouvelles sur le TProgressBar (Active ou Marquee, je sais plus, et si tu as une version récente de l'unité il y aura ptet Speed).



Cordialement, Bacterius !
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
21 juin 2010 à 15:38
... Et vous trouvez que le ProgressBar est fait pour cet usage, vous ?

A ce train, on pourrait p'têt aussi en faire une horloge comtoise
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
21 juin 2010 à 15:51
Ben oui moi je trouve ça normal ??
C'est juste une barre défilante indéfinie, qui montre qu'une tâche est en cours, mais qu'on n'a pas d'indication sur son état. Ca me semble une utilisation tout à fait rationnelle ...

Cordialement, Bacterius !
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
21 juin 2010 à 16:21
Au niveau du concept et de l'utilisateur final, tu as raison, Bacterius.

Mais au niveau pragmatique, pour le développeur en design-time, ça ne le fait pas, je trouve. C'est "lourd" à tout point de vue pour un résultat qui, somme toute, peut être obtenu bien plus simplement.

Pour moi, c'est un peu comme si, sur une voiture, on surchargeait un compteur de vitesse pour indiquer que le moteur est démarré.
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
21 juin 2010 à 23:21
@ yanb > ton code ne marche pas.
MarqueeProgressBar n'est même pas reconnu dans uses.
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
21 juin 2010 à 23:44
[quote=Caribensila]C'est "lourd" à tout point de vue pour un résultat qui, somme toute, peut être obtenu bien plus simplement. /quoteil y a rien de lourd dans ce code !!!
c'est prévu par MS depuis XPSP2
on ne fait qu'utiliser l'existant et avec beaucoup de facilité

d'ailleurs dans ta dernière version de Delphi c'est inclus tu peux directement utiliser l'option "Marquee" depuis l'inspecteur d'objets.

[quote=JackNUMBER]MarqueeProgressBar n'est même pas reconnu dans uses./quotebon faudrait voir à fournir un petit effort quand même ...

le lien que je t'ai donné mène sur le code d'une unité "MarqueeProgressBar"
à toi de recopier ce code et de l'enregistrer sous "MarqueeProgressBar.pas" et seulement après avoir fait cela ... tu peux tester le code yanb !!!


[hr]@+Cirec
[hr]
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 juin 2010 à 01:14
C'est pas le code qui est lourd, mon cher Cirec.
C'est sans doute moi qui veux imposer mon point de vue!

Mais enfin, devoir ajouter plusieurs unités au projet afin de créer un p'tit bitoniau qui tourne en rond pour indiquer qu'une action est en cours... c'est pas non plus ce que j'appelle de la légèreté.


Et 'faut quand même pas oublier que l'utilisateur final se fout de la version de Delphi utilisée pour faire son logiciel.
Et que, tant que ça ne se sent pas, il se contrefout du talent du programmeur.
0
Utilisateur anonyme
22 juin 2010 à 02:52
Mais enfin, devoir ajouter plusieurs unités au projet afin de créer un p'tit bitoniau qui tourne en rond pour indiquer qu'une action est en cours... c'est pas non plus ce que j'appelle de la légèreté.



Oh bas faire joujou avec ton bitoniau, franchement je te connais tu as l'habitude


Oki je sors
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 juin 2010 à 04:28
Tiens ?!
T'es pas en Afrique du Sud, Francky ?

Y'a un congrès de bouffons là-bas... et y t'auraient oublié ?!
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 juin 2010 à 11:49
Déjà il n'y a qu'une unité à ajouter au projet ... et c'est tout !!!

par contre ton code demande un TLabel mais surtout un TTimer ... pour simuler une action longue c'est pas top d'amputer le temps processeur avec un timer à 200 ms qui qui va bouffer une bonne partie des cycles sans compter l'affichage (Application.ProcessMessages <-- très très lourd) dans ton exemple tu n'en as pas besoin ... c'est normal ton code ne fait rien d'autre ... je veux dire par la qu'il n'est pas occupé par une tâche gourmande !!

Alors que là c'est prévu par MS ça ne bouffe rien et ton application garde toute la "puissance" pour effectuer la longue tâche.

Et quand je faisais référence à ta dernière version de Delphi c'était pour toi et non pour l'utilisateur final ... juste pour que tu jettes un oeil au travers de l'inspecteur d'objets sur quasi tous les composants standards ... ils ont tous de nouvelles propriétés mais pas crées par les Dev de Delphi ces nouveautés ont étés apportés par Windows ... ils nous permettent juste de les utiliser facilement.

En comparaison c'est comme utiliser le thème XP avec une version antérieur à D7 .. on a tous copié le manifest une fois pour toute par la suite il suffisait juste d'ajouter cette ressource où composant (pour ceux qui l'ont fait) au projet et ça fonctionnait

[hr]@+Cirec
[hr]
0
Utilisateur anonyme
22 juin 2010 à 12:05
Y'a un congrès de bouffons là-bas... et y t'auraient oublié ?!
Non mais j'avais qu'un seul ticket donc je l'ai refilé à une ex copine : je savais que cela lui ferait plaisir de concourir
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 juin 2010 à 13:20
Ok. Je reconnais que Cirec a raison ( une fois de plus ;)
Et Bacterius aussi, par voie de conséquence.
Je retire donc tout ce que j'ai dit (sauf pour Francky).
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
22 juin 2010 à 13:30
Toutefois il semblerait que mes trois posts consécutifs aient été ignorés par JackNumber ...

Cordialement, Bacterius !
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
22 juin 2010 à 14:00
@ Bacterius > non non, t'inquiète pas ^^
j'ai pas eu le temps de me repencher sur vos propositions.
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
22 juin 2010 à 15:13
C'est pas un bitoniau qui faut. C'est un Karcher.
0
Utilisateur anonyme
22 juin 2010 à 15:16
On appelle Nic et Carla ?

Et en profite pas pour sortir ton bitoniau

Oki je sours
0
Rejoignez-nous