DB Baxter Для конструктора требуется переменная / объект компонента, а не строка с текстом имени. Например, TPanel * panelPage = новый TPanel (tabPage); Будет ли это работать для вас? Нужно ли сделать родительский tabPage родительской панели?
Помогая DB Baxter, я думаю, что для правильного и полного ответа для создания динамического TPanel
внутри динамического TTabSheet
потребуется переменная / объект компонента, а затем для отображения TPanel
мы должны использовать команду whatever->show();
, полный код может быть таким:
static int tabNumber = 0;
if (tabNumber >= 1) {
++tabNumber;
} else {
tabNumber = 1;
PageControl3->Visible = true;
}
// create new tab sheet inside PageControl3
TTabSheet *tabSheet = new TTabSheet(PageControl3);
tabSheet->PageControl = PageControl3;
tabSheet->Caption = UnicodeString("Untitled") + IntToStr(tabNumber);
tabSheet->Name = UnicodeString("ts") + tabSheet->Caption;
// create new panel inside the current tab sheet
TPanel *panelBox = new TPanel(tabSheet);
panelBox->Parent = tabSheet;
panelBox->Align = alClient;
panelBox->Name = UnicodeString("panelPage") + IntToStr(tabNumber);
panelBox->BevelOuter = bvNone;
panelBox->ShowCaption = true;
panelBox->Caption = UnicodeString("panel") + tabSheet->Caption;
panelBox->Show();
Я надеюсь, что этот код может помочь любому сгенерировать лист динамической вкладки с панелью, кстати, если вы хотите добавить к нему какой-нибудь фрейм, используйте следующий код:
// adding the registration frame to the panel
TregFrame *newRegistration = new TregFrame(panelBox);
newRegistration->Parent = panelBox;
newRegistration->Align = alClient;
Примечание: не забудьте включить ваш фрейм в ваш рабочий файл, например #include "registrationFrame.h"
.