Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2015, 15:52   #1
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
Смущение PageControl и динамическое содержимое вкладок из DLL

Добрый день, товарищи!

Подскажите, как реализовать следующее:
Есть приложение, в котором pagecontrol. Когда например я создаю новую вкладку, мне надо, чтобы содержимое бралось из DLL библиотеки. В свою очередь в библиотеке, у меня есть форма, на ней pagecontrol а на нем уже tabsheet.

Грубо говоря, мне надо скопировать tabsheet из DLL в мою прогу, со всем содержимым.
Зачем? У меня приложение в котором может быть 20 вкладок и все с разным содержимым (в том числе от сторонних разработчиков), соответственно мне требуется сделать обновление и установку доп. модулей более гибким образом. Первое, что пришло в голову, закинуть каждый модуль в свою DLL. Таким образом разрабы сторонних приложений смогут его апдейтить самостоятельно. Если есть решение более 'красивое', с удовольствием ознакомлюсь!

Вот код приложения:


Код:
procedure initialize(tabcontrol:TrzPagecontrol); external 'data\units\test\test.dll';
...
 self.tab_count:=self.tab_count+1;
 self.tab_set[self.tab_count]:=TRzTabSheet.Create(mainform);
 self.tab_set[self.tab_count].Caption:=caption;
 self.tab_set[self.tab_count].Name:='tab_'+inttostr(self.tab_count);
 self.tab_set[self.tab_count].Parent:=mainform.RzPageControl1;
 self.tab_set[self.tab_count].PageControl:=mainform.RzPageControl1; //Тут я создаю таб своими средствами, это так...не обращайте внимания
initialize(mainform.RzPageControl1); //Вот тут пытаюсь создать там из DLL
А это код библиотеки:
Код:

  procedure initialize(tabcontrol:TrzPagecontrol);
    var
      formx:Tform_test;
    begin
  formx:=Tform_test.Create(nil);//На данной форме живет PageControl и его Tabsheet с нужным содержимым
  formx.TabSheet1.PageControl:=tabcontrol;
  formx.Free;
    end;
exports initialize;
При выполнении ошибка:Cannot assign a TFont a TFont. А еще после закрытия проги, так же вываливается ошибка доступа.

Последний раз редактировалось prizrak1390; 08.06.2015 в 16:10.
prizrak1390 вне форума Ответить с цитированием
Старый 08.06.2015, 16:20   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Разработка системы плагинов в Delphi
northener вне форума Ответить с цитированием
Старый 08.06.2015, 16:28   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
При выполнении ошибка:Cannot assign a TFont a TFont. А еще после закрытия проги, так же вываливается ошибка доступа.
http://www.programmersforum.ru/showt...hlight=DLL+BPL
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.06.2015, 16:39   #4
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

prizrak1390 вне форума Ответить с цитированием
Старый 08.06.2015, 17:32   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Используйте фреймы. А лучше вообще передавайте в dll указатель на "место под стройку" для кастомных компонент, те сами сделают SetParent и прилепят туда что угодно. Только не забудьте им говорить когда связь надо разорвать. Все.
Человек_Борща вне форума Ответить с цитированием
Старый 08.06.2015, 22:41   #6
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Человек_Борща, можете более конкретный пример привести?Если не затруднит.
prizrak1390 вне форума Ответить с цитированием
Старый 08.06.2015, 22:44   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я за bpl-плагины. delphi однако
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.06.2015, 01:53   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Используйте фреймы. А лучше вообще передавайте в dll указатель на "место под стройку" для кастомных компонент, те сами сделают SetParent и прилепят туда что угодно. Только не забудьте им говорить когда связь надо разорвать. Все.
Ты собственно об чём толкуешь? Можешь показать нормально работающий пример плагина в своей интерпретации?

Цитата:
Сообщение от Аватар Посмотреть сообщение
Я за bpl-плагины. delphi однако
Твоё право. Только ты пытаешься подсадить всех на свою иглу.
Да и не забудь о несовместимости dcu-шек разных версий Дельфи.

Последний раз редактировалось Stilet; 09.06.2015 в 08:31.
northener вне форума Ответить с цитированием
Старый 09.06.2015, 10:10   #9
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Я за bpl-плагины. delphi однако
По ряду причин требуется именно DLL
prizrak1390 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как провесить процедуру на OnShow динамически созданных вкладок PageControl'a 1fixxer Общие вопросы Delphi 9 04.06.2014 15:24
Не могу убрать обводку с вкладок PageControl bakanaev Общие вопросы Delphi 2 09.07.2013 08:51
PageControl. в процессе проектировки формы создать несколько вкладок. GN_ Помощь студентам 7 15.11.2011 20:56
Сохранение текста с вкладок PageControl OPF_Nik Общие вопросы Delphi 2 12.02.2010 12:35
TreeView и PageControl (переключение вкладок по дереву) Nevy Общие вопросы C/C++ 5 17.08.2008 19:17