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é.
Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...
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 ) ; } }
Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...
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] ; //[...]
Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...
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] ;
Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...
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] ; }
Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...
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]; }
Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager