在 LoadChartFromFile 后向 TChart 添加值会出现访问冲突错误

问题描述 投票:0回答:1

我制作了一个测试 vcl 应用程序用于测试目的,因为我试图保存 tchart 系列(这样当我关闭应用程序并再次打开它时,我添加的值将保留在那里,而不是重置为空。)

LoadChartFromFile 和 SaveChartToFile 成功了,但随着一个问题的解决,另一个问题出现了(像往常一样!)

发生 LoadChartFromFile 后,我在关闭并重新打开应用程序之前添加的所有值仍然存在,但现在我无法向其中添加更多值。每次我尝试这样做时,它都会给出访问冲突错误。

这基本上是这种形式的所有代码。这里真的没什么东西。

unit Unit7;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VclTee.TeeGDIPlus, VCLTee.TeEngine,
  VCLTee.Series, Vcl.ExtCtrls, VCLTee.TeeProcs, VCLTee.Chart, VCLTee.TeeStore, VCLTee.TeeEdiSeri,
  Vcl.StdCtrls;

type
  TForm7 = class(TForm)
    Chart1: TChart;
    Series1: TBarSeries;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.Button1Click(Sender: TObject);
begin
  With Series1 do
  begin
    Add (40);

  end;
end;

procedure TForm7.Button2Click(Sender: TObject);
begin
  With Series1 do
  begin
    Add (90);

  end;
end;

procedure TForm7.Button3Click(Sender: TObject);
begin
With Series1 do
  begin
    Add (10);

  end;
end;

procedure TForm7.Button4Click(Sender: TObject);
begin
With Series1 do
  begin
    Add (50);

  end;
end;

procedure TForm7.Button5Click(Sender: TObject);
begin
With Series1 do
  begin
    Add (140);

  end;
end;

procedure TForm7.FormCreate(Sender: TObject);
begin
LoadChartFromFile(TCustomChart(Chart1), 'File1');
end;

procedure TForm7.FormDestroy(Sender: TObject);
begin
SaveChartToFile(Chart1,'File1',True);
end;

end.

我在此表单上创建了一个 IniFile,因此我将其删除以查看它是否会执行某些操作,但没有任何差异。图表正常保存和加载,加载后我无法向其中添加更多值。 正如您可能也在代码中看到的那样,我使用按钮向图表添加值,因此每个按钮都会添加不同的值。这些按钮可以工作,但是在关闭(保存图表值)并重新打开应用程序(加载图表值)后,它们会给出访问冲突错误。

我期望的是:能够继续向图表添加值,并保存它们,以便在关闭并重新打开表单后它们仍然存在。

感谢您的建议或帮助!

delphi teechart
1个回答
0
投票

一旦加载/创建新图表,Form7 对象中的 Series1 引用就会过时。您可以通过图表对象而不是表单对象来刷新引用或引用系列。

procedure TForm7.FormCreate(Sender: TObject);
begin
  LoadChartFromFile(TCustomChart(Chart1), 'File1');
  Series1 := TBarSeries(Chart1.Series[0]); 
end;

TBarSeries(Chart1.Series[0]).Add(125);

© www.soinside.com 2019 - 2024. All rights reserved.