IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

TChart et barre de pourcentage horizontale


Sujet :

C++Builder

  1. #1
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut TChart et barre de pourcentage horizontale
    Bonjour à tous

    Je cherche à créer grâce à un TChart une barre horizontale représentant différent pourcentage. (le total fesant 100% ou plus suivant le cas). Je sais c'est bizard une somme de pourcentage supérieur à 100% mais c'est logique pour moi car le dépassement de 100% correspond à une erreur de la part de l'utilisateur.

    Je m'explique, je dois afficher une vidéo, cacher la fin, et c'est à l'utilisateur d'appuyer sur la barre espace quand il pense que la vidéo est terminée.
    Mais lorsqu'il clique trop tard, je voudrais pouvoir également représenter le pourcentage de dépasse, d'où une somme des pourcentage supérieure à 100%

    J'aimerais pouvoir avoir une barre unique avec les différents pourcentages mis bout à bout et le pourcentage affiché, est-ce possible.

    Je galère actuellement j'y arrive pas.

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    Je ne suis pas trop sûr de savoir ce que tu veux...
    Quand tu double-cliques sur le TChart, tu vas dans l'onglet Series, puis l'onglet Format, il y a un RadioGroup MultipleBar où tu peux choisir l'option Stacked, du coup toute les séries sont sur une même ligne (une par Bar représentée d'une même série).
    Du coup, tu peux faire une BarSerie pour ton film, une pour le temps de réaction de l'utilisateur ...
    C'est ca que tu cherches?

  3. #3
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Pour clarifier les choses, J'ai 2 ou 3 pourcentages à représenter selon le Cas

    Cas numéro 1, l'utilisateur d’éclanche la fin avant que la vidéo soit terminée

    Ce qui donne

    Première partie de la barre représente le pourcentage ou la vidéo reste visible
    Deuxième partie de la barre représente le pourcentage entre le temps ou je cache la vidéo et le temps de clic de l'utilisateur
    Troisième partie représente le pourcentage du temps restant entre le clic de l'utilisateur et la fin réelle de la vidéo.


    Cas numéro 2, l'utilisateur clic en même temps que la fin réelle de la vidéo
    1ère partie, pourcentage de visibilité de la vidéo
    2ème partie, pourcentage entre le cache et la fin de la vidéo

    Cas numéro 3, l'utilisateur clic après la fin réelle de la vidéo
    1ère partie pourcentage de visibilité de la vidéo
    2ème partie, pourcentage entre le cache et la fin de la vidéo
    3ème partie, pourcentage entre la fin de la vidéo et le clic de l'utilisateur

    C'est dans ce cas, que la somme des pourcentages dépasse 100% vu que 100% représente la durée de la vidéo

    J'espère avoir éclaircit les choses

  4. #4
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Avec la méthode que je t'ai donné tu peux représenter tes 3 temps dans 3 séries différentes mais sur une même ligne.
    Voilà un petit exemple de représentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        //rempli les 3 BarSeries
        Series1->FillSampleValues(10);
        Series2->FillSampleValues(10);
        Series3->FillSampleValues(10);
        //regroupe les séries
        Series1->MultiBar = mbStacked;
    Ca te convient?

  5. #5
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Désolé, je viens seulement de voir ton Message.

    Entre temps j'ai tester différentes chosex et je suis parvenu à ce que je voulais.

    J'ai utiliser 3 séries THorizBarSeries avec le multibar à mbStacked comme dans ton exemple et cela fonctionne

    Par contre maintenant j'ai un autre soucis, je voudrais faire apparaitre au centre de chaque barre le pourcentage qu'elle représente et là je coince.

    J'ai essayer de déplacer les labels mais cela ne fait pas ce que je veux$

    Aurais-tu une idée

    Merci en tout cas

  6. #6
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Une solution serait de mettre un TLabel, ou un autre composant, mais pour simplifier, il faut que tu n'autorises pas de déplacement.
    Sinon, tu peux écrire dans le Canvas du TChart.

    Tu cherches quoi comme présentation?
    Je vais fouiller un peu de mon côter.

  7. #7
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    l'ennui tu TLabel, c'est qui faut savoir très précisément les dimensions et la position de chaque barre pour centré le Label sur celle-ci.

  8. #8
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Tu peux déplacer le Label indiquant la valeur de la "Barre" si ça te va. Le petit hic c'est qu'il persiste un trait blanc liant l'étiquette à la tête de la barre.
    Voici un petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Series1->FillSampleValues(5);
        Series2->FillSampleValues(5);
        Series3->FillSampleValues(5);
        Series1->MultiBar = mbStacked;
        Series1->Marks->ArrowLength = -100;
        Series2->Marks->ArrowLength = -100;
        Series3->Marks->ArrowLength = -100;
    Qu'en penses tu?

  9. #9
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    J'avais déjà essayé ceci mais justement, le texte n'est pas au milieu, c'est cela qui m'embète.

    De plus tu peux le cacher le trait en faisant ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Serie->Marks->Arrow->Visible = false;
    Et en plus il y a un souci, quand ma série est trop petite, cela se marque sur la série d'à coté.

  10. #10
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Voilà un petit bout de code qui fait office de Label maison:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        for(int n=0;n<Chart1->SeriesCount();n++)
        {
            for(int i=0;i<Series1->Count();i++)
            {
                int Offset=0;
                for(int k=n-1;k>=0;k--)
                    Offset += Chart1->Series[k]->XValues->Value[i];
                Offset = Chart1->BottomAxis->CalcPosValue(Offset);
     
                TLabel *Label = new TLabel(this);
                Label->Parent = Chart1;
                AnsiString txt = FloatToStrF(Chart1->Series[n]->XValues->Value[i],ffFixed,6,2);
                int X = Chart1->BottomAxis->CalcPosValue(Chart1->Series[n]->XValues->Value[i]/2.0) + Offset - 1.5*Canvas->TextWidth(txt);
                int Y = Chart1->LeftAxis->CalcPosValue(Chart1->Series[n]->YValues->Value[i]) - Canvas->TextHeight(txt)/2.0;
                Label->Top = Y;
                Label->Left = X;
                Label->Caption = txt;
                Application->ProcessMessages();
            }
        }
    }
    Comme ca tu poses l'étiquette ou tu veux. Genre tu peux faire le test si l'écriture est trop grande, pour l'écrire en dessous.

    C'est mieux pour toi?

  11. #11
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je teste ca et je te dit

    Merci

  12. #12
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Et bien c'est nikel tout fonctionne, c'est exactement ce que je voulais.

    J'ai fait quelques modifs dans ton code pour l'adapter à mon programme et c'est tout bon

    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. barre de navigation horizontale qui remonte
    Par escobar dans le forum IHM
    Réponses: 1
    Dernier message: 21/02/2007, 17h33
  2. [Form] Barre de défilement horizontale dans un select
    Par lenoil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 09/02/2007, 18h17
  3. Barre de défilement horizontale génante iframe
    Par bractar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 25/08/2006, 16h42
  4. Oter la barre de défilement horizontale d'un TDBGrid
    Par adelavarenne dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/06/2004, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo