Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Дублирование компонента со всеми его дочерними элементами

1.8K
05 октября 2009 года
Blackvic
43 / / 03.12.2002
Давно не общался с Builder'ом, сейчас возникла необходимость кое что реализовать в нем. Однако, уже не помню как можно сделать следующее:

Суть:
Есть несколько различного содержания панелей, требуется динамически создать несколько дубликатов этих панелей и вывести их в виде ленты.

Пример:
Есть пустой контейнер ScrollBox, в него по мере заполнения данными проги, добавляется сверху вниз с прокруткой TPanel содержащие, или TEditBox, или TMemo, и т.п.

Но так как в моей задаче компонентов на TPanel много, то динамически создавать их очень напряжно, кроме того, таких панелей около 10 видов.

Вопрос:
Можно ли, как нибудь продублировать (клонировать) уже существующие экземпляры или посоветуйте, какой компонет обладает похожими свойствами.
14
05 октября 2009 года
Phodopus
3.3K / / 19.06.2008
Можно прогуляться по дереву компонентов. Можно использовать фрейм (от версии билдера). Можно вообще написать процедуры создающие необходимый набор.
1.8K
05 октября 2009 года
Blackvic
43 / / 03.12.2002
Цитата: Phodopus
Можно прогуляться по дереву компонентов. Можно использовать фрейм (от версии билдера). Можно вообще написать процедуры создающие необходимый набор.



1. Ну неужели бы стал обращаться к форуму, чтобы ждать ответа, не перебрав палитру компонентов? Может я и пропустил конечно, поэтому и попросил помочь, а может кто знает сторонние универсальные для данной задачи компоненты.

2. А вот про фреймы забыл. Спасибо, это как бы не компонент и поэтому отмел его изначально.

3. Процедуры не практично, так как панели будут меняться и подгонять, видоизменять их программно слишком накладно по времени.

В целом один вариант решения найден. Еще раз спасибо.

14
05 октября 2009 года
Phodopus
3.3K / / 19.06.2008
Я имел в виду дерево компонентов а не палитру. Так и написал. Массив ->Components[]
1.8K
05 октября 2009 года
Blackvic
43 / / 03.12.2002
Извиняюсь, не так понял, однако, это разновидность динамического воссоздания панели. Такой вариант в принципе рассматривался, но после copy-past в режиме проектирования формы, он выглядит намного утомительнее:)

Хотелось, что нибудь наподобе конструктора копий:

panel1 = new TPanel(maket);

где: maket - исходный экземпляр, уже оформленный на стадии проектирования;
6
05 октября 2009 года
George
4.1K / / 05.01.2007
можно так сделать =))) только maket - это должна быть функция, возвращающая указатель на созданную панель. только немного по другому будет выглядеть:
panel1 = TPanel(Maket(sourcePanel))
где SourcePanel - указатель на исходную панель, которую копируешь. В функции maket делай необходимые действия для копирования. Можно замутиться с метаданными %-)
1.8K
05 октября 2009 года
Blackvic
43 / / 03.12.2002
ну фантазировать, что можно сделать, бесконечное занятие... а вот из реальных и быстро исполнимых, пока только фрэймы, которые в принципе удовлетворили мои запросы, так что если нет путных советов по компонентам, советы в извращении с кодом мона не давать:)
6
05 октября 2009 года
George
4.1K / / 05.01.2007
да не, никакого извращения - все вполне осуществимо. просто определись с наиболее удобным для себя методом и делай. никаких проблем. =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог