我不知道如何删除TChart
。这必须很简单,但我看不到。在下面的TListView ButtonClick
代码中,我从活动的TChart
中删除了一个系列,如果该系列恰好是最后一个,那么我想删除整个TChart
。>
TComponent *T; // find chart and delete the selected series
for (int i = 0; i < (Form1->ComponentCount); i++) {
T = Form1->Components[i];
if (T->ClassName() == "TChart") {
int test = T->Tag;
if (test == TappedChartTag) { //TappedChartTag is global
if (TChart *TC = dynamic_cast<TChart *>(T)) {
TC->RemoveSeries(AItem->Index); // this removes the series
if (TC->SeriesCount()==0) { // if this was last series, delete chart
TC->CleanupInstance();
}
}
}
}
}
我找不到完全摆脱TChart
的方法。 TC->CleanupInstance();
完全擦除了(看不见),但是TChart
仍然存在。
我正在Embarcadero Rad Studio(C ++ Builder 10.3 Update 1)中工作。
更新:我尝试使用delete TC;
代替了TC->CleanupInstance();
,该版本在Win32上有效,但在iOS上无效。
答案 0 :(得分:0)
好的,根据雷米(Remy)提供的解决方案in this question,我现在可以正常使用了。我只是用行替换了TC->CleanupInstance();
,以设置一个等于组件索引delINT = i
的整数。然后,在遍历组件的循环下面,我放了以下简单代码:
if (delINT > 0) {
Form1->Components[delINT]->DisposeOf();
}
我正在使事情变得比原本要困难得多。我无法在先前的代码中调用DisposeOf()
,因为它没有上下文。在这种情况下,它可以正常工作(在Win32,iOS和Android上)。