Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.05.2016, 11:56
js roman1 js roman1 вне форума
Прохожий
 
Регистрация: 08.04.2016
Сообщения: 25
Версия Delphi: XE8
Репутация: 10
По умолчанию Имеется статический объект, необходимо создавать его динамические копии

Доброго времени суток. У меня имеется статический объект, и необходимо создавать динамические копии данного объекта. Объект сам панель, на этой панели расположены элементы у которых имеются события. Вот, как можно создать динамическую копию этой панели при это не теряя всех свойств элементов которые находятся на данной панели?
Код:
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  
Старый 15.05.2016, 12:06
js roman1 js roman1 вне форума
Прохожий
 
Регистрация: 08.04.2016
Сообщения: 25
Версия Delphi: XE8
Репутация: 10
По умолчанию

Выходит ошибка. Ошибка в том что, динамическая копия присваивает себе имя статического. Как это можно исправить?
Ответить с цитированием
  #3  
Старый 15.05.2016, 12:12
js roman1 js roman1 вне форума
Прохожий
 
Регистрация: 08.04.2016
Сообщения: 25
Версия Delphi: XE8
Репутация: 10
По умолчанию

+При создании динамической копии, копируется только панель, а хотелось бы еще все объекты которые находятся на данной панели
Ответить с цитированием
  #4  
Старый 15.05.2016, 20:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Воспользуйся фреймами (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  
Старый 16.05.2016, 16:32
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

И не забыть
MyFrame.Parent:=
Ответить с цитированием
  #6  
Старый 17.05.2016, 06:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вася, а внимательно код прочитать? Вторая строчка после begin...

Последний раз редактировалось lmikle, 18.05.2016 в 07:07.
Ответить с цитированием
  #7  
Старый 17.05.2016, 10:42
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию Извинение

Виноват исправлюсь
Ответить с цитированием
  #8  
Старый 17.05.2016, 14:41
js roman1 js roman1 вне форума
Прохожий
 
Регистрация: 08.04.2016
Сообщения: 25
Версия Delphi: XE8
Репутация: 10
По умолчанию

Всё отлично)

Последний раз редактировалось js roman1, 17.05.2016 в 15:05.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter