Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.022 c
7-80311
alligator
2003-12-05 17:14
2004.02.25
BIOS и CMOS


3-79559
Крутыш
2004-01-29 17:39
2004.02.25
Поставщик для DBF


9-79528
m2003
2003-08-11 12:33
2004.02.25
Сообщение EOutOfResources


14-80250
Cosinus
2004-02-04 15:10
2004.02.25
Регулярные выражения и с чем их едят...


8-80032
Shadow of Image
2003-10-21 20:30
2004.02.25
Исследование методов соединения точек контура изобр.