Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

как работать с фремом, созданным в dll   Найти похожие ветки 

 
_Z_   (2008-04-16 22:37) [0]

Делаю плагин, который создает фрейм. Вопрос - как правильно передать ссылку на созданный фрейм в основное приложение? Если передаю в плагин ссылку родительского компонента (TGroupbox), то при попытке PluginFrame.Parent:=parentGroupBox получаю ошибку EConvertError "cannot assign a font to a font". Если передаю handle групбокса, то при вызоде из функции access violation.


 
Сергей М,   (2008-04-16 22:47) [1]

Ты про bpl что-нибудь слышал ?


 
Reindeer Moss Eater ©   (2008-04-16 23:01) [2]

Если ссылка на фрейм в главном приложении нужня для того, чтобы работать с ней как с классом фрейма, то вопрос:

нафига совать фрейм в dll, если хост приложение при этом тоже должно содержать в себе модуль фрейма?


 
Reindeer Moss Eater ©   (2008-04-16 23:10) [3]

Это даже если не принимать во внимание такую мелочь как разные копии VCL там и тут.


 
han_malign ©   (2008-04-17 09:17) [4]

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,
                 ...


 
han_malign ©   (2008-04-17 09:26) [5]

ну и соотвественно
app_core.bpl
designide70.bpl
rtl70.bpl
rxctl7.bpl
vcl70.bpl
vclactnband70.bpl
vcldb70.bpl
vcljpg70.bpl
vclsmp70.bpl
vclx70.bpl
и какие там еще понадобятся(70-зависит от версии Delphi на которой компилируется) - придется таскать вместе с EXE-шником.


 
_Z_   (2008-04-17 10:47) [6]

Я правильно понимаю, что в этом случае плагин ввиде dll сделать нельзя? Только ввиде bpl?


 
_Z_   (2008-04-17 10:52) [7]

Просто идя была такая - плагин создает свой фрейм (где какие то настройки), приложение вызывает ShowPluginFrame(MainFrom), а уже сам плагин выводит на родительский компонент свой фрейм.


 
Сергей М. ©   (2008-04-17 11:06) [8]


> _Z_   (17.04.08 10:47) [6]


Нет, неправильно.

Можно и в виде dll, но она все равно должна быть как минимум собрана с ран-тайм пакетами, точно так же как и хост-приложение.

А раз так, то теряется всякий смысл в такой реализации - на фоне этого требования bpl дает кучу преимуществ и удобств, не говоря уже о простоте и изящности способов использования реализованных в ней объектов.


 
Виктор   (2008-04-17 14:49) [9]

А какой резон использовать именно фрейм? Фрейм, впринципе, то же окно (форма), только с дополнительными приблудами. Почему бы не выводить на родительский компонент именно форму с borderStyle = bsNone?


 
_Z_   (2008-04-17 17:09) [10]


> А какой резон использовать именно фрейм? Фрейм, впринципе,
>  то же окно (форма), только с дополнительными приблудами.
>  Почему бы не выводить на родительский компонент именно
> форму с borderStyle = bsNone?


А форму можно так использовать (как я хочу)?



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
15-1232104188
Артур Пирожков
2009-01-16 14:09
2009.03.29
Музыка. Много. Где скачать?


15-1232370806
vajo
2009-01-19 16:13
2009.03.29
Как убить спам из IE6?


15-1232443558
Gans
2009-01-20 12:25
2009.03.29
Проблемы с QIP может кто знает


2-1233180683
figi
2009-01-29 01:11
2009.03.29
Можно ли замедлить TMediaPlayer?


2-1233348637
Тимоха
2009-01-30 23:50
2009.03.29
класс TThread и api