1
В моем проекте C++ Builder у меня есть TFramedVertScrollBox (pnl_art_box), который динамически получает TPanel. Я хочу очистить все существующие TPanel, прежде чем добавлять «новые».C++ builder: динамически удалять все TPanel из TFramedVertScrollBox
for(int i = 0; i < this->pnl_art_box->ComponentCount; i++)
{
// this here is where i dont find any solution ...
this->pnl_art_box->Components[i]->DestroyComponents();
}
for(int i = 0; i < i_article_amount;i++)
{
this->articlelistpanels[i] = new TPanel(this->pnl_art_box);
this->articlelistlabels[i] = new TLabel(this);
this->articlelistlabels[i]->Text = this->articlelist[i].get_name();
this->articlelistpanels[i]->Align = Fmx::Types::TAlignLayout::MostTop;
this->articlelistpanels[i]->AddObject(this->articlelistlabels[i]);
this->pnl_art_box->AddObject(this->articlelistpanels[i]);
}
В Google я нашел очень мало помощи, и ни один из них не находится на C++;
Было бы хорошо, если бы кто-нибудь мог сказать мне, когда я ошибаюсь.
С уважением Timo Трайхель
вы пробовали просто удалить все элементы articlelistpanels/этикетки и очистить их (если векторы или списки или ...)? Возможно, вам нужно сначала вызвать RemoveObject. – Aconcagua
, что также не принесло никакого эффекта, поскольку старые компоненты по-прежнему перечислены в 'this-> pnl_art_box' –
Вы пытались выполнить simpy call this this this this this this this this this this this this this this this this this? Pnl_art_box-> DestroyComponents();' или 'this-> pnl_art_box-> DeleteChildren (); '(не уверен, какой из них предпочтительнее - склоняется к последнему) вместо цикла for? Если вы делаете это неоднократно, имейте в виду, что содержимое ваших двух списков, скорее всего, станет недействительным! – Aconcagua