Текущий архив: 2004.02.25;
Скачать: CL | DM;
ВнизФормы в dlls Найти похожие ветки
← →
Builder (2004-02-09 23:13) [0]Проблема следующая: есть A.exe, который отвечает за настройку
некоторых параметров программ a1, a2, a3. Поскольку программы a1,
a2, a3 могут часто менятся (из ТЗ), а продукт нужно будет
поддержавить, то предлагаеться такая схема: A.exe имеет интерфейс из
нескольких панелей и когда переключается соответствующая панель, она
передается как параметр в функцию соответствующей библиотеке (a1.dll, a2.dll,
a3.dll) и там все библиотека заполняет эту панель - создает на ней
форму, лабелы, кнопочки etc. И отвечает за реакцию на эти кнопочки.
Обновлять же только библиотеки - это просто.
Среда: Delphi 7.
И вот тут проблемы: вызов формы из библиотеки приводит к появлению
нового итема в TaskBar. Это лечится через:
FormInDll := TFormInDll.Create(nil);
FormInDll.Parent := LayoutPanel;
FormInDll.ParentWindow := LayoutPanel.Handle;
Но тогда возникают маленькие неприятности типа:
* при alt+tab приложение видимо нормально, но на него clickом в
taskbare переключиться нельзя :(,
* при некотором типа создания окна перестает работать tab -
переключение можду контролами.
* и др.
Вообщем, перепробованные схемы уборки багов приводят к новым
"особенностям" поведения программы и это не устраивает :(
Вопросы: 1. Как правильно реализовать схему с dll?
2. Можно ли где-то посмотреть на пример подобной _работающей_
системы на Делфи в исходниках?
3. Что можно посоветовать, по поводу решения всей задачи - потому
что сейчас рабочая версия отказаться от dll и делать все в одном
exe, что есть плохо в заданых условиях :(
← →
Юрий Зотов (2004-02-10 05:03) [1]Думаю, получится гораздо проще и надежнее, если вместо DLL использовать BPL, а вместо форм в них - фреймы.
← →
just me (2004-02-10 12:58) [2]или собрать все с runtime packages
← →
Builder (2004-02-10 14:17) [3]Все было бы хорошо, но.
Проблема в том, как динамически подключать библиотеки - если все компилить с runtime packages, то тогда нужно с собой таскать и все bpl, что ОЧЕНЬ не катит :(
Нужно как-то уметь подключить динамически ТОЛЬКО 1-2 нужных bpl.
КАК и может ли это вообще Делфи, так как там при подключении в cfg файле выставляеться -LU параметр и перечисляються те, что нужно включить?
← →
stone (2004-02-10 14:25) [4]
> И вот тут проблемы: вызов формы из библиотеки приводит
> к появлению
> нового итема в TaskBar. Это лечится через:
procedure ShowForm(AHandle:THandle); stdcall;
begin
Application.Handle := AHandle;
...
end;
← →
Юрий Зотов (2004-02-10 14:30) [5]> Нужно как-то уметь подключить динамически ТОЛЬКО 1-2 нужных
> bpl. КАК и может ли это вообще Делфи,
Точно так же, как и при динамической подгрузке DLL, только вместо LoadLibrary используйте LoadPackage (cм. в справке тему "package support routines"). И точно так же работает GetProcAddress.
← →
just me (2004-02-10 16:43) [6]>нужно с собой таскать и все bpl, что ОЧЕНЬ не катит
как раз все не нужно, можно собрать только с самыми необходимыми, чтобы обеспечить работу механизмов RTTI для форм
← →
Builder (2004-02-10 17:37) [7]2just me
>как раз все не нужно, можно собрать только с самыми необходимыми, чтобы обеспечить работу механизмов RTTI для форм
Так вот и вопрос - как скомпилить exe со всеми нужными bpl (vcl70.bpl например) врутри, что бы не тягать их, а мои новые нужные плагины - лодить вместе. Пока не получеться - или тягаем vcl70.bpl и нормально работает LoadPackage или нормальный екзешник.
Как совместить??? :(
З.Ы.
LoadPackage во втором случае не возвращает ошибку, но как из bpl получить нужный мне component?
Страницы: 1 вся ветка
Текущий архив: 2004.02.25;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.035 c