以编程方式从表单中删除TChart



我正在寻找正确的方法来删除TChart并释放所有内存。我正在使用Delphi2007和标准TeeChart 7

我以编程方式创建TChart:

var parentform: TForm;
begin
newchart:= TChart.Create(parentform);
newchart.Parent:= parentform;
... 

然后,我只想从表单中删除图表(而不是关闭表单本身(,但我只得到图表变为空白并停留在表单上:

newChart.FreeAllSeries;
FreeAndNil(newChart);

如果我使用

NewChart.Parent := nil, 

我看不到图表了,但我认为TChart对象仍然存在(直到parentform被销毁(。有具体的方法吗?感谢

摆脱TChart控件或几乎任何控件的最直接方法是在其上调用Free

newChart.Free;

如果您愿意,可以改为呼叫FreeAndNil。这与调用Free的效果相同,但也将变量的值设置为nil。如果稍后测试变量的值以检测是否仍有权访问控件,那么这将非常有用。如果你再也不引用这个变量,那么FreeAndNil不会给你带来太多好处。

控件将自动释放它所拥有的其他东西,例如使用FreeAllSeries手动释放的系列。你不需要自己解放他们。

仅清除控件的Parent属性并不能释放控件。您可以通过重新分配Parent属性并观察控件重新出现在屏幕上来证明这一点。如果控制权不复存在,这种情况就不会发生。

如果控件在释放后仍在屏幕上可见,则表示存在其他问题。也许父控件没有正确地重新绘制自己。您可以尝试在父控件上调用Refresh。您还可以看到多个控件。毕竟,问题的代码创建了两个图表控件,所以其中一个控件可能仍然可见,并且您将其误认为是您销毁的控件。

相关内容

  • 没有找到相关文章

最新更新