Размещение существующих элементов управления VCL на компоненте TPanel

Как мы все знаем, TPanel является контейнером для других визуальных компонентов (TLabel, TEdit так далее). Однако, кажется, что мы можем поместить только новые компоненты (из палитры компонентов) в существующий TPanel, и структура VCL автоматически сделает TPanel их родителем).

Интересно, есть ли способ разместить существующие визуальные компоненты (те, которые уже есть в нашей форме VCL) на TPanel. я пробовал

  • Размещение компонентов на существующем TPanel (это не работает, потому что инфраструктура не сделает TPanel их родителем)

  • Редактирование dfm-файла формы вручную (компоненты TPanel теперь невидимы - ошибка?)

  • Явная установка свойства Parent компонента в коде (Label1 виден даже когда Panel1 высота установлена ​​на 0)

    Label1->Parent = Panel1;
    

Ничто из вышеперечисленного не сработало, но это кажется настолько простой вещью, что это должен быть способ сделать это.

Спасибо

1 ответ

Основываясь на моем опыте с VCL (я использую Delphi, но я думаю, что то же самое относится и к C++), я знаю 3 способа изменить Parent уже существующего контроля во время разработки:

  • Перетащите Control в желаемый Parent из окна структуры. введите описание изображения здесь

  • Выберите Control, обрежьте его Ctrl + X, выберите нужный Parent и вставьте Ctrl + V. Таким образом, Control будет вставлен как дочерний контроль желаемого Parent,

  • Вручную отредактируйте файл DFM. Делая так, вы должны обратить внимание на Left а также Top свойства, потому что Control может быть размещен за пределами нового Parent и это может показаться невидимым. В этом случае я предлагаю установить элемент управления Left а также Top в 0 чтобы быть уверенным Control будет виден внутри его нового Parent,

Другие вопросы по тегам