gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:11:49 24 4
gpt4 key购买 nike

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

我以编程方式创建 TChart:

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

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

newChart.FreeAllSeries;
FreeAndNil(newChart);

如果我使用

NewChart.Parent := nil, 

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

最佳答案

摆脱 TChart 控件或任何控件的最直接方法是对其调用 Free:

newChart.Free;

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

该控件将自动释放它拥有的其他内容,例如您使用 FreeAllSeries 手动释放的系列。您不需要自己释放它们。

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

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

关于delphi - 以编程方式从表单中删除 TChart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11140299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com