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

Вниз

Подмена Application динамической библиотеки   Найти похожие ветки 

 
МистерТ   (2008-07-11 09:50) [0]

Здравствуйте!
Есть ситуация, приложение и библиотека (.dll), оба созданы в делфи и оба содержат формы. Использоваться будут только в рамках друг друга, перевод на другие языки не требуется.
Как известно экземпляры Application у них разные, в результате окно создаваемое в библиотеке не наследует иконку приложения и вообще, отображается отдельно на панели задач, а хотелось бы и иконку и "стандартное" для форм поведение, т.е. что бы на панели отображалась только главная форма (WinAPI привлекать не хотелось бы, только стандартными средствами VCL).
Для этого при инициализации приложения передаю в библиотеку указатель на Application приложения, а вот дальше такая петрушка:
Вариант 1:
LibForm := TLibForm.Create(MainApp);
MainApp - Application приложения.
Ситуация не меняется. Окно без нужной иконки и появляется на панели задач.
Вариант 2:
// при инициализации
LibApp := Application; //
Application := MainApp; //
...
LibForm := TLibForm.Create(Application); //
LibForm.ShowModal;
FreeAndNil(LibForm);
Application := LibApp;

Окно с нужной иконкой, на панели задач не появляется, но приложение падает при выгрузке библиотеки.
Вариант 3:
// при инициализации
pLibApp := @Application; //
Application := pMainApp^; //
...
LibForm := TLibForm.Create(Application); //
LibForm.ShowModal;
FreeAndNil(LibForm);
Application := pLibApp^;

Окно с нужной иконкой, на панели задач не появляется, не падает, но при выгрузке библиотеки главная форма изчезает, процесс "висит" в диспетчере задач.

Господа, как правильно создать форму из библиотеки (.dll) "привязанной" к Application приложения ?

Заранее благодарю всех за ответы.

З.Ы. .bpl не предлагать.


 
МистерТ   (2008-07-11 09:52) [1]

Что вариант 3 - дурость, знаю.
Но блин запутался в конец уже...


 
Сергей М. ©   (2008-07-11 10:12) [2]


> запутался в конец уже


А проблема-то надуман - просто возьми да собери оба проекта с опцией использования рантайм-пакетов, тогда и никаких прыжков с бубном вокруг общности  Application, Screen и прочих глоб.переменных уровня VCL yt gjnht,etncz)


 
Плохиш ©   (2008-07-11 10:17) [3]


> МистерТ   (11.07.08 09:50)  

http://www.ehow.com/how_2109379_use-forms-dll.html


 
МистерТ   (2008-07-11 10:58) [4]

> Плохиш ©   (11.07.08 10:17) [3]
С хендлом делал, в результате иконка все равно дефолтовая. Поэтому и пытался "подменить" объекты Application.


 
tesseract ©   (2008-07-11 15:04) [5]


> Как известно экземпляры Application у них разные,


У них всё разное, Delphi отлично поддерживает COM - почему бы его не использовать, а не городить ерунды?


 
sniknik ©   (2008-07-11 16:21) [6]

> Использоваться будут только в рамках друг друга
убери dll, она не нужна, никаких выгод только проблемы.



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

Форум: "Основная";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1247574008
worldmen
2009-07-14 16:20
2009.09.20
Активация другой программы программно (вывести на первый план).


15-1248226307
TUser
2009-07-22 05:31
2009.09.20
Искусство новейших течений в Третьяковской галерее.


3-1227136044
Petr V. Abramov
2008-11-20 02:07
2009.09.20
forall и bulk collect into


15-1248210928
J
2009-07-22 01:15
2009.09.20
Помогите прочесть архив.


15-1247674784
бульдозер
2009-07-15 20:19
2009.09.20
WIFI





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