Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

как работать с фремом, созданным в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.066 c
3-1217426639
kirillrepin
2008-07-30 18:03
2009.03.29
как в ДБГриде наименование в две строки?


2-1233221405
apic
2009-01-29 12:30
2009.03.29
64 bit


2-1233305201
mobwar
2009-01-30 11:46
2009.03.29
Замена двух, трёх символов на один


2-1234172245
TTLr
2009-02-09 12:37
2009.03.29
Подскажите как склеить 2 таблицы


2-1233167316
Dik
2009-01-28 21:28
2009.03.29
Консоль





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский