|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Имеется статический объект, необходимо создавать его динамические копии
Доброго времени суток. У меня имеется статический объект, и необходимо создавать динамические копии данного объекта. Объект сам панель, на этой панели расположены элементы у которых имеются события. Вот, как можно создать динамическую копию этой панели при это не теряя всех свойств элементов которые находятся на данной панели?
Код:
var MainPanel: TMemoryStream; procedure TBrowserForm.FormCreate(Sender: TObject); begin MainPanel:= TMemoryStream.Create; MainPanel.Position:=0; MainPanel.WriteComponent(MainPagePanel); end; procedure TBrowserForm.t1Click(Sender: TObject); var tabs: TTabSheet; Panel: TsPanel; begin tabs:=TTabSheet.Create(Self); tabs.PageControl:=MainPageControl; tabs.Caption:='New Tab Page'; tabs.Show; Panel:= TsPanel.Create(Self); Panel.Parent:= PageControl1.ActivePage; MainPanel.Position:=0; MainPanel.ReadComponent(Panel); end; |
#2
|
|||
|
|||
Выходит ошибка. Ошибка в том что, динамическая копия присваивает себе имя статического. Как это можно исправить?
|
#3
|
|||
|
|||
+При создании динамической копии, копируется только панель, а хотелось бы еще все объекты которые находятся на данной панели
|
#4
|
|||
|
|||
Воспользуйся фреймами (TFrame).
Делаешь фрейм со всеми компонентами, событиями и т.д. Далее один размещаешь статически (если оно еще нужно), а остальные создаешь по мере надобности. Общай алгоритм такой. 1. Меню File->New->Frame. Получаешь новый модуль с "формой". Только это будет не форма, а фрейм. 2. "Набрасываешь" компоненты, пишешь обработчики событий. 3. В главной программе подключаешь его к нужной форме и пишешь код для создания экземпляра, что то типа: Код:
uses MyFrameUnit; procedure TForm1.Button1Click(Sender : TObject); var MyFrame : TMyFrame; begin MyFrame := TMyFrame.Create(Self); MyFrame.Parent := Self; MyFrame.Align := alTop; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
js roman1 (17.05.2016)
|
#5
|
|||
|
|||
И не забыть
MyFrame.Parent:= |
#6
|
|||
|
|||
Вася, а внимательно код прочитать? Вторая строчка после begin...
Последний раз редактировалось lmikle, 18.05.2016 в 07:07. |
#7
|
|||
|
|||
Извинение
Виноват исправлюсь
|
#8
|
|||
|
|||
Всё отлично)
Последний раз редактировалось js roman1, 17.05.2016 в 15:05. |