Bonjour,
est-il possible d'ajouter n série à un TChart, n étant variable.
Merci
Bonjour,
est-il possible d'ajouter n série à un TChart, n étant variable.
Merci
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é.
Merci, j'avais trouvé ce code mais quel nom mettre pour chacune des séries (elle ne peuvent pas avoir le même nom) ?
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 delete seriesList ;
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 ) ; } }
En faite utiliser un TObjectList ne sert à rien, puisque le composant TChart stocke dejà les TSeries et permet d'y acceder:
Ajouter N TSeries:
Ensuite pour accéder au Nième 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; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int N = 3 ; TChartSeries *serie = Chart1->SeriesList->Series[N] ; //[...]
Ca me parait bien.
Je vais tester ca et je vous dirais si ca marche.
Merci
Une petite question : comment supprime-t-on les séries ?
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] ;
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".
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] ; }
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 :
ou
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];
Merci
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];
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]; }
Partager