我不知道如何删除TChart
. 这必须很简单,但我没有看到它。 在下面的 TListViewButtonClick
代码中,我从活动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。
好的,根据 Remy 在这个问题中提供的解决方案,我现在可以工作了。 我只是用一行替换了TC->CleanupInstance();
,以设置一个等于组件索引的整数,delINT = i
. 然后在循环访问组件的循环下方,我放置了以下简单代码:
if (delINT > 0) {
Form1->Components[delINT]->DisposeOf();
}
我让事情变得比应该的要困难得多。我无法在早期的代码中调用DisposeOf()
,因为它脱离了上下文。 在这种情况下,它工作正常(在Win32,iOS和Android上(。