procedure SaveChartDataToTextFile(Chart: TChart; FileName: TFileName = 'Chart.txt'); var F: TextFile; i, j: integer; begin AssignFile(F, FileName); try Rewrite(F); //Nombre de séries WriteLn(F, IntToStr(Chart.SeriesList.Count)); //Pour chaque série for i := 0 to Chart.SeriesList.Count - 1 do begin //Nom de la série WriteLn(F, Chart.Series[i].Title); //Type de la série WriteLn(F, Chart.Series[i].ClassName); //Nombre de valeurs de la série WriteLn(F, IntToStr(Chart.Series[i].Count)); for j := 0 to Chart.Series[i].Count - 1 do begin //Valeur de l'abcisse WriteLn(F, Chart.Series[i].XLabel[j]); //Valeur de l'ordonnée correspondante WriteLn(F, FloatToStr(Chart.Series[i].YValues[j])); end; end; finally CloseFile(F); end; end;
procedure TChartDemoMainForm.btnSaveSeriesDataClick(Sender: TObject); begin SaveChartDataToTextFile(Chart1); end;
procedure LoadChartDataFromTextFile(Chart: TChart; FileName: TFileName = 'Chart.txt'); var F: TextFile; //variables de boucle i, j: integer; //nombre de séries SerieCountStr: string; SerieCount: integer; //Titre de la série à créer SerieTitle: string; //Type de la série à créer SerieType: string; //Nombre de valeurs de la série SerieNbValues: string; //Etiquette des abcisses SerieXLabel: string; //Valeur des ordonnées SerieYValue: string; //Série de type générique ChartSeries: TChartSeries; //Référence de classe sur un type de graphique ChartClass: TPersistentClass; begin if not FileExists(FileName) then exit; AssignFile(F, FileName); try Reset(F); { Supprimer les séries éventuellement existantes du graphique } Chart.SeriesList.Clear; { est-ce un bug ? le composant ne se redessine pas en supprimant les séries } Chart.Invalidate; //Lire le nombre de séries ReadLn(F, SerieCountStr); SerieCount := StrToInt(SerieCountStr); for i := 0 to SerieCount - 1 do begin //Nom de la série ReadLn(F, SerieTitle); ReadLn(F, SerieType); //Déterminer la classe du type de série à créer ChartClass := GetClass(SerieType); //Création de la nouvelle série ChartSeries := TChartSeriesClass(ChartClass).Create(Chart); //INDISPENSABLE ! ChartSeries.ParentChart := Chart; //Affectation du titre à la série ChartSeries.Title := SerieTitle; //Nombre de valeurs de la série ReadLn(F, SerieNbValues); for j := 0 to StrToInt(SerieNbValues) - 1 do begin //Lecture des valeurs ReadLn(F, SerieXLabel); ReadLn(F, SerieYValue); //Ajout des valeurs à la série ChartSeries.Add(StrToFloat(SerieYValue), SerieXLabel); end; end; finally CloseFile(F); end; end;
procedure TChartDemoMainForm.btnLoadSeriesClick(Sender: TObject); begin LoadChartDataFromTextFile(Chart1); end;
4 1:blé TLineSeries 4 2001 41 2002 91 2003 52 2004 56 2:avoine TLineSeries 4 2001 59 2002 49 2003 62 2004 65 3:blé TLineSeries 4 2001 68 2002 44 2003 90 2004 43 4:orge TLineSeries 4 2001 95 2002 62 2003 86 2004 59
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question