关于Chart控件属性的问题,在可执行程序中可以访问,但是在DLL中访问却出现内存错误。
1:在自己的工程中为窗口添加Chart控件,然后加入如下代码,然后编译执行一点问题没有,Chart控件可以正确创建,坐标等设置也没有问题。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//增加CHart控件
TChart *MyChart = new TChart(Form1);
MyChart->Parent = this;
MyChart->Left = 0;
MyChart->Top = 0;
//增加曲线
TLineSeries *MySeries = new TLineSeries(MyChart);
MyChart->AddSeries(MySeries);
//设置曲线下底坐标
MyChart->Axes->Bottom->Automatic = false;
......
//设置左边坐标
MyChart->Axes->Left->Automatic = false;
......
//其他设置
MyChart->View3D = false;
MySeries->ShowInLegend = false;
}
2:自己编写一个DLL,在DLL中有一个窗口TForm1,TForm1构造函数中同样使用上面一段代码,然后自己在做一个应用程序调用这个DLL,并且由这个应用程序来创建DLL中的TForm1窗口,出现内存错误。(如果注释掉上面的设置坐标的代码,窗口可以正确创建)
跟踪调试发现是这句代码有问题:MyChart->Axes->Bottom->Automatic = false;
再查看Chart的Axes属性,是这样定义的:__property TChartAxes* Axes = {read=FAxes};(只有只读属性)
有个疑问,既然是只读,为什么直接在.exe中可以对Axes 进行操作,但是在DLL中却不行呢,很奇怪,望大侠解答。