![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как работать с фремом, созданным в dll
_Z_ © (2008-04-16 22:37:00)Делаю плагин, который создает фрейм. Вопрос - как правильно передать ссылку на созданный фрейм в основное приложение? Если передаю в плагин ссылку родительского компонента (TGroupbox), то при попытке PluginFrame.Parent:=parentGroupBox получаю ошибку EConvertError "cannot assign a font to a font". Если передаю handle групбокса, то при вызоде из функции access violation.
_Z_ (2008-04-17 17:09:00) [1]
> А какой резон использовать именно фрейм? Фрейм, впринципе,
> то же окно (форма), только с дополнительными приблудами.
> Почему бы не выводить на родительский компонент именно
> форму с borderStyle = bsNone?
А форму можно так использовать (как я хочу)?
Виктор (2008-04-17 14:49:00) [2]А какой резон использовать именно фрейм? Фрейм, впринципе, то же окно (форма), только с дополнительными приблудами. Почему бы не выводить на родительский компонент именно форму с borderStyle = bsNone?
Сергей М. (2008-04-17 11:06:00) [3]
> _Z_ (17.04.08 10:47) [6]
Нет, неправильно.
Можно и в виде dll, но она все равно должна быть как минимум собрана с ран-тайм пакетами, точно так же как и хост-приложение.
А раз так, то теряется всякий смысл в такой реализации - на фоне этого требования bpl дает кучу преимуществ и удобств, не говоря уже о простоте и изящности способов использования реализованных в ней объектов.
_Z_ (2008-04-17 10:52:00) [4]Просто идя была такая - плагин создает свой фрейм (где какие то настройки), приложение вызывает ShowPluginFrame(MainFrom), а уже сам плагин выводит на родительский компонент свой фрейм.
_Z_ (2008-04-17 10:47:00) [5]Я правильно понимаю, что в этом случае плагин ввиде dll сделать нельзя? Только ввиде bpl?
han_malign (2008-04-17 09:26:00) [6]ну и соотвественно
app_core.bpl
designide70.bpl
rtl70.bpl
rxctl7.bpl
vcl70.bpl
vclactnband70.bpl
vcldb70.bpl
vcljpg70.bpl
vclsmp70.bpl
vclx70.bpl
и какие там еще понадобятся(70-зависит от версии Delphi на которой компилируется) - придется таскать вместе с EXE-шником.
han_malign (2008-04-17 09:17:00) [7]1. bpl
2. и плагин и приложение должны быть скомпилированны с использованием Runtime packages
З.Ы. BPL - это та же DLL только с экспортом всех доступных функций из модулей указанный в contains в .dpk
По сути тебе надо dpr переименовать в dpk, прописать пакеты в requires, uses в dpk заменить на contains, а library на package...
И подгружать не через LoadLibrary а LoadPackage...
З.З.Ы. Единственное неудобство - в двух plugin-ах не должно быть модулей с одинаковыми именами, иначе второй обломается. Если нужен какой то свой базовый модуль общий для разных plugin-ов - надо выносить в отдельную, общий для приложения и plugin-ов, BPL(скажем app_core.bpl)...
application.dpr(exe):
Build with runtime packages: app_core
(dcc32 application.dpr -LUapp_core)
pliginX.dpk
requires
app_core;
app_core.dpk(bpl):
requires
rtl,
vcl,
vclx,
...
Reindeer Moss Eater (2008-04-16 23:10:00) [8]Это даже если не принимать во внимание такую мелочь как разные копии VCL там и тут.
Reindeer Moss Eater (2008-04-16 23:01:00) [9]Если ссылка на фрейм в главном приложении нужня для того, чтобы работать с ней как с классом фрейма, то вопрос:
нафига совать фрейм в dll, если хост приложение при этом тоже должно содержать в себе модуль фрейма?
Сергей М, (2008-04-16 22:47:00) [10]Ты про bpl что-нибудь слышал ?