![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]()
Я наконец то сделал это! и вот решил поделиться со всеми заинтересованными!
Во-первых создаем основной проект MDI главная форма которая имеет CategoryPanelGroup и 1 CategoryPanel. выглядит так 1.jpg дальше делаем обработчик кнопок Код:
Код:
после чего в FormCreate создаем сами кнопки Код:
Caption кнопок планирую брать из константы библиотеки, но еще не тестил. теперь переходим к библиотеке, и собственно вот ее код Код:
с единственной процедурой Код:
2.JPG затем в библиотеке можно настраивать форму и писать в ней ее код, что бы появилась кнопка, собранную библиотеке нужно положить в папку mods к основному приложению! Спасибо за внимание! |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
Гладко стелишь фраерок... Но:
Раз ты runtime packages юзаешь - делал бы дочерние формы в bpl тоже Даже если рантайм, я рантаймлю только большие пакеты такие как rtl и vcl, остальные из runtime packages выкидываю т.е. они вкомпилируются в exe и не надо таскать кучу bplек а только rtl и vcl. Либо без runtime packages тогда нужно в dll передать Application.Handle чтоб и в приложении и в dll они были одинаковые ну и для dll обычно используют форму вызова stdcall. Код:
я бы сделал подсчет ссылок и делал бы FreeLibrary по достижению нуля
Не стесняемся, плюсуем!
![]() Последний раз редактировалось Slym; 07.09.2017 в 14:01. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]()
стоп. то есть я мог добавлять не dll, а bpl и было бы проще? runtime packages - вообще не знаю что это, но с ней все работает, на каком то форуме посоветовали. и в чем разница bpl или dll добавлять?
вообще не юзаю.. надо исправить) Последний раз редактировалось PTyTb32; 07.09.2017 в 14:03. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]() Код:
[dcc32 Error] Main.pas(62): E2034 Too many actual parameters |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]() Код:
и вообще - слоев абстракции маловато ![]()
Не стесняемся, плюсуем!
![]() Последний раз редактировалось Slym; 07.09.2017 в 18:51. |
![]() |
![]() |
![]() |
#6 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
Мог и было бы.
Но ты бы озвучил свою задачу. P.S. А по поводу тут Slym ошибся. Передавать нужно не Application.Handle, а ссылку на сам объект Application. Ну и. Если тебя действительно интересует тема "плагинов в Дельфи", то почитай для начала Создаём систему плагинов, часть 1 А потом и далее. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 29.10.2015
Сообщений: 273
|
![]() |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
Применяемо для компиляции без runtime packages:
В общем то для убирания задвоения в панеле задач достаточно Application.Handle, для более тесной интеграции можно и Application передать... НО! Тогда необходимо следить чтоб имена классов окон были строго уникальны! если в приложении TForm1 и в dll тоже - то ошибка. И перед смертью dll подменять Application на родное значение. Для runtime packages: Application зашит в vcl.bpl и уже общий для exe и dll и танцы с бубном не нужны PS1: а ссылочка http://www.gunsmoker.ru/2008/12/1.html правильная... почитай, но я там не совсем согласен (сложновато) и не до конца (с моей точки зрения) раскрыта выгрузка плагинов. PS2: и с резюмирую основную проблему это - корректная выгрузка плагина а именно недопущение выгрузки плагина до закрытия окон плагина, выгрузка плагина раньше закрытия приложения и своевременная подмена Application в плагине. PS3: интерфейсы конечно хорошо, но я за COM... PS4: спустя n часов оказывается нужно еще и Screen отдавать в приложение ![]() т.к. MDIChildren пользует Screen для энумерации окон
Не стесняемся, плюсуем!
![]() Последний раз редактировалось Slym; 08.09.2017 в 11:15. |
![]() |
![]() |
![]() |
#9 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
Нет, конечно. Только вы об чем собственно?
Я лишь о том костыле, который позволяет избавится от того, что Дельфи считает разными два по сути идентичных класса. Только из-за того, что они имеют разные адреса. Последний раз редактировалось northener; 10.09.2017 в 01:54. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические формы | Orchestroman | Общие вопросы Delphi | 4 | 16.03.2012 23:53 |
Подключение библиотек | mishalive | Общие вопросы Delphi | 5 | 23.08.2011 09:50 |
Передача переменных в форму, динамические формы | nasprin | Microsoft Office Excel | 2 | 10.06.2011 14:34 |
Подключение библиотек | MovsesIV | Общие вопросы C/C++ | 1 | 27.12.2010 21:25 |
Описание библиотек в Си | papochka | Общие вопросы C/C++ | 1 | 28.10.2009 10:51 |