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 :

Ajouter Séries TChart [Langage/Algorithme]


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 107
    Points : 46
    Points
    46
    Par défaut Ajouter Séries TChart
    Bonjour,

    est-il possible d'ajouter n série à un TChart, n étant variable.

    Merci

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    C'est tout à fait possible, il suffit de créer dynamiquement tes TSeries.

    Un exemple ici pour ajouter 1 TSeries. Il suffit de l'effectuer N fois selon le nombre souhaité.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 107
    Points : 46
    Points
    46
    Par défaut
    Merci, j'avais trouvé ce code mais quel nom mettre pour chacune des séries (elle ne peuvent pas avoir le même nom) ?

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Tu peux utiliser un TObjectList pour stocker tes Series:
    *.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TObjectList *seriesList;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      seriesList = new TObjectList() ;
    Création de N TSeries:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
      int N = 10 ;
      for( int i =0; i< N; i++ )
      {
        TFastLineSeries *Serie;
        Serie = new TFastLineSeries(this);
        Serie->ParentChart = Chart1;
        seriesList->Add( Serie ) ;
      }
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    En faite utiliser un TObjectList ne sert à rien, puisque le composant TChart stocke dejà les TSeries et permet d'y acceder:

    Ajouter N TSeries:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      int N = 10 ;
      for( int i =0; i< N; i++ )
      {
        TFastLineSeries *Serie;
        Serie = new TFastLineSeries(this);
        Serie->ParentChart = Chart1;
      }
    Ensuite pour accéder au Nième TSeries:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     int N = 3 ;
     TChartSeries *serie = Chart1->SeriesList->Series[N] ;
    //[...]
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 107
    Points : 46
    Points
    46
    Par défaut
    Ca me parait bien.
    Je vais tester ca et je vous dirais si ca marche.

    Merci

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 107
    Points : 46
    Points
    46
    Par défaut
    Une petite question : comment supprime-t-on les séries ?

  8. #8
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Les Series ayant comme Owner le TChart, ceux-ci sont automatiquement détruit à la destruction du TChart.
    Tu n'a donc pas à les détruire par toi même à la fermeture de l'application.

    Si tu souhaite supprimer un Series en particulier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int N = 3 ;
    delete Chart1->SeriesList->Series[N] ;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 107
    Points : 46
    Points
    46
    Par défaut
    Merci mais la suppression ne fonctionne que pour la 1ère série.
    Pour les autres, un message d'erreur apparait du genre "indice hors limite".

  10. #10
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    La première Series est à l'indice 0, et pas à l'indice 1.
    Avant de supprimer, vérifie que la Serie existe grâce à la propriété Count, ce qui évitera une exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int N = 3 ; //destruction de la 4ème Serie
    if(Chart1->SeriesList->Count > N ) 
    {
       delete Chart1->SeriesList->Series[N] ; 
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 107
    Points : 46
    Points
    46
    Par défaut
    En fait comme je veux supprimer toutes les séries et que je commence par celle d'indice 0, celle qui avait l'indice 1 passe en 0, et ainsi de suite. D'où l'erreur d'indice.

    Il faut donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int N=3;
    for(int i=0;i<N-1;i++)
        delete Graph1Form->Chart1->SeriesList->Series[0];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int N=3;
    for(int i=N-1;i>=0;i--)
        delete Graph1Form->Chart1->SeriesList->Series[i];
    Merci

  12. #12
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Ca ne change pas grand chose, mais pour supprimer toutes les Series d'un TChart, j'utiliserais un while plutot qu'un for:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while( Chart1->SeriesList->Count )
    {
      delete Graph1Form->Chart1->SeriesList->Series[0];
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

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

Discussions similaires

  1. Ajouter des axes à un TChart
    Par noahsaga dans le forum C++Builder
    Réponses: 5
    Dernier message: 13/04/2011, 18h22
  2. Changer l'ordre des séries d'un TChart
    Par j.p.mignot dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2010, 13h52
  3. Ajouter X séries sur un graphique avec abscisses différentes
    Par Pyrhum dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2008, 15h48
  4. [TChart] Scrolling horizontal des séries
    Par j.p.mignot dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/02/2008, 10h33
  5. [TChart] Comment empiler plusieurs séries ?
    Par coucoucmoi dans le forum Composants VCL
    Réponses: 11
    Dernier message: 26/07/2005, 10h44

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