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

Вниз

Формы в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
7-80333
webpauk
2003-11-28 18:23
2004.02.25
Загрузка с Windows


3-79577
VoimiX
2004-01-29 11:31
2004.02.25
удаление записи в MIDAS клиенте


4-80349
LOMic
2003-12-18 10:32
2004.02.25
Здравствуйте. Как получить HWND для SpeedButton ?


3-79571
mvg_first
2004-01-19 16:40
2004.02.25
Insert, Update, Delete своими руками


1-80021
8ung
2004-02-11 21:13
2004.02.25
Отсортировать TStringGrid.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский