Как клонировать TChart в FMX - PullRequest
0 голосов
/ 25 июня 2019

Как мне клонировать TChart во время выполнения?Я нашел эту ссылку , но это Delphi, и я не могу перевести на C ++ Builder.

Вот то, что я пытался, но я получаю ошибку во время выполнения Class TChart not found:

TChart *tmp = new TChart(Chart1->Clone(this));
tmp->Parent = this->Panel2;

Кроме того, как я могу клонировать, чтобы я мог легко ссылаться на новые клоны в коде -например, Chart(2), Chart(3) и т. д.

РЕДАКТИРОВАТЬ 1 : я могу клонировать кнопку со следующим кодом, но я все еще получаю Class TChart not found, когда пытаюсь сTChart.

TButton *tmp;
tmp = new TButton(Button1->Clone(this));
tmp->Parent=ToolBar1;  // put it on ToolBar1
tmp->Text = "Cloned Button";

EDIT 2 : следующий код создает клон диаграммы и решает проблему Class TChart not found, но не делает ее истинным клоном.Изображение ниже показывает Chart1 и полученный клон (на Win32).Моя цель состояла в том, чтобы создать шаблонную диаграмму (Chart1), а затем просто клонировать ее, поскольку мне нужны были новые диаграммы ... без необходимости устанавливать наборы свойств, чтобы она выглядела как Chart1.

void __fastcall TForm1::Button2Click(TObject *Sender)
{
RegisterClass(__classid(TChart));   
TChart* tmp =  (TChart*)(Chart1->Clone(Chart1));  // clone Chart1
tmp->Parent = Panel2;  // put the new clone on Panel2
tmp->Position->Y = 300;  
tmp->BottomAxis->Minimum = -8;
tmp->BottomAxis->Maximum = 8;
tmp->LeftAxis->Minimum = 0;
tmp->LeftAxis->Maximum = 10;
}

Chart1 and its clone

1 Ответ

1 голос
/ 27 июня 2019

Компонент TChart можно клонировать с помощью функции CloneChart.

.
TChart* tmp = new TChart(this);
CloneChart(tmp, Chart1, this, false);
tmp->Parent = this->Panel2;

Вы можете сохранять указатели на созданные TChart объекты в векторе.

...