2016-05-09 7 views
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 Трайхель

+0

вы пробовали просто удалить все элементы articlelistpanels/этикетки и очистить их (если векторы или списки или ...)? Возможно, вам нужно сначала вызвать RemoveObject. – Aconcagua

+0

, что также не принесло никакого эффекта, поскольку старые компоненты по-прежнему перечислены в 'this-> pnl_art_box' –

+0

Вы пытались выполнить 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

ответ

0

я, наконец, нашел его сам. Правильная команда была:

for(int i = 1; i < this->pnl_art_box->ComponentCount; i++) 
{ 
    this->pnl_art_box->Components[i]->DisposeOf(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^