如何删除TChart(FMX,C ++)

时间:2019-08-14 01:12:44

标签: firemonkey c++builder teechart

我不知道如何删除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上无效。

1 个答案:

答案 0 :(得分:0)

好的,根据雷米(Remy)提供的解决方案in this question,我现在可以正常使用了。我只是用行替换了TC->CleanupInstance();,以设置一个等于组件索引delINT = i的整数。然后,在遍历组件的循环下面,我放了以下简单代码:

if (delINT > 0) {
  Form1->Components[delINT]->DisposeOf();
}

我正在使事情变得比原本要困难得多。我无法在先前的代码中调用DisposeOf(),因为它没有上下文。在这种情况下,它可以正常工作(在Win32,iOS和Android上)。