我制作了一个测试 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,因此我将其删除以查看它是否会执行某些操作,但没有任何差异。图表正常保存和加载,加载后我无法向其中添加更多值。 正如您可能也在代码中看到的那样,我使用按钮向图表添加值,因此每个按钮都会添加不同的值。这些按钮可以工作,但是在关闭(保存图表值)并重新打开应用程序(加载图表值)后,它们会给出访问冲突错误。
我期望的是:能够继续向图表添加值,并保存它们,以便在关闭并重新打开表单后它们仍然存在。
感谢您的建议或帮助!
一旦加载/创建新图表,Form7 对象中的 Series1 引用就会过时。您可以通过图表对象而不是表单对象来刷新引用或引用系列。
procedure TForm7.FormCreate(Sender: TObject);
begin
LoadChartFromFile(TCustomChart(Chart1), 'File1');
Series1 := TBarSeries(Chart1.Series[0]);
end;
TBarSeries(Chart1.Series[0]).Add(125);
;