| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > работа с DLL через exe |
| Автор: z-END 1.3.2004, 15:58 | ||||||
| Необходимо в .exe вставить формы содержащтеся в .dll причем не как отдельные окна, а в контрол (TPanel, TPageControl и т.п.) Имеется такая структура: main.exe subXX.dll (библиотеки содержащие TForm's) main.exe
subXX.dll
Вроде-бы все хорошо работает... но несовсем В DLLForm's не работают элементы, например: в DLLForm имеется RichEdit, при нажатии кнопки DLLForm.Button:
но загруженный текст не отображается в RichEdit, до тех пор пока не выполнить DLLForm.RecreateWND; а это уж очень некрасиво, т.к. перерисовывается все родительское окно из exe файла. Есть ли другие варианты решения этой проблеммы? |
| Автор: <Spawn> 1.3.2004, 16:33 | ||
Попробуй инициализировать Application DLL - а. Т.е. создаешь проецдурку такого типа:
и пихаешь в Длл, используя ее перед юзанием втоей ДЛЛ. |
| Автор: z-END 1.3.2004, 22:59 | ||
| Да.. все гениальное просто тока теперь надо добавить в subXX.dll
и все заработает |
| Автор: Unregistered 2.3.2004, 03:03 |
| Может тогда корректней вот так?: var OldApp:TApplication; procedure InitApplication(App: TAppliaction); begin OldApp:=Application; Application:=App; end; procedure UnInitApplication; begin Application:=OldApp; end; В смысле возвратить dll-ке ее старый application, и уже потом выгружать? |
| Автор: <Spawn> 2.3.2004, 05:38 |
| Unregistered дак все работает уже. |
| Автор: z-END 2.3.2004, 14:42 |
| Вообщето-да Hy a если че-то и неработает, то FreeLibararyAndExitThread и все И еслу уж быть точным, то в дллельке Application не инициализируется, ну покрайней мере я так думаю Если я неправ.... см ниже |
| Автор: z-END 2.3.2004, 20:08 |
| Ну вот опять приколы Все хорошо работало, пока на форму на поместил TOpenDialog, при выполнении .Execute создаются Threads которые при закрытии программы невыгружаются... и программа остается висеть в памяти... Чего делать? как бороться? непонятно |