Форум: "Основная";
Текущий архив: 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.004 c