Как достать форму из DLL

Создание, использование компонентов ActiveX
malysh_i
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 22.03.2004 (Пн) 19:05

Как достать форму из DLL

Сообщение malysh_i » 22.03.2004 (Пн) 20:23

Добрый день,
Я столкнулся со следующей проблемой: мне надо написать автономную от основного приложения форму, которая динамически будет создаваться в основном приложении. Я хотел сделать это создав форму в отдельном приложении, скомпилированном в ActiveX DLL. Теперь встал передо мной встал вопрос: как получить эту форму из DLL в основном приложении (хотя бы для тестов). Буду признателен за совет как это грамотно сделать.
Игорь

Tran Thang
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 03.03.2004 (Ср) 19:46

Сообщение Tran Thang » 31.03.2004 (Ср) 12:05

Попробуй скомп. ActiveX в виде контрола а не в виде формы.
Для приоединения в основную програму, нужно создать новую форму(отличную от основной) и вставить ActiveX контрол в эту форму.

Удачи !

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 01.04.2004 (Чт) 15:03

В моделе класса (например clsDll) компонента ActivX DLL создай процедуру типа MyFormLoad и в этой процедуре вызывай свою форму,
а в своем приложении установи ссылку на класс clsDll и вызывай у класса MyFormLoad. Соотвественно надо добавить форму в проект ActiveX Dll.

EliasNeo
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 28.07.2004 (Ср) 2:57
Откуда: Украина

Сообщение EliasNeo » 28.07.2004 (Ср) 3:17

Прочёл я о твоей проблеме. На самом деле твоя проблема - не проблема. Все намного просто. Ты создаёш ActiveX Dll. Там ты можешь засунуть сколько хочешь форм. Пример: у нас есть некая форма frmFileDialog и так

Private frmFileD As frmFileDialog 'Или это просто может быть Form

'После этого ты создаёщь некую функцию которая запускает
'форму и при этом она фозвращает значение формы.

Public Function frmLoad(frmSource as Form) as Form
Set frmLoad = New frmSource
End Function

Private Sub Main()
Set frmFileD = frmLoad(frmFileDialog)
frmFileD.Show
End Sub

На самом деле существует очень много вариантов как можно вывести форму. Ты са попробуй поэксперементировать.

EliasNeo
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 28.07.2004 (Ср) 2:57
Откуда: Украина

Сообщение EliasNeo » 27.09.2004 (Пн) 0:19

Шабанов Павел писал(а):По правде говоря не так все просто.
Private объекты, к которым судя по всему относится форма, нельзя возвращать или передавать в public методы модуля класса. Потому, EliasNeo, этот код даже не скомпилируется.

У меня есть другой вопрос: а можно ли открывать MDIChild из ActiveX DLL, если MDIForm была создана в EXE, который загрузил эту DLL?
:roll:

Ну почемуже? Я сам так использую. И уменя все работет. Причём корректно работает. Использую данный способ при создании ActiveX DLL с формами для работы с нисколькими приложениями. Такой случай как регистрация программы. Тоесть есть ряд программ которые используют одну и туже библиотеку регистрации. И формы все вызываються из ActiveX DLL объекта.
Нет истории печальнее на свете, чем история о... ЗАКЛИНИВШЕМ RESET'е ! :-( :-)


Вернуться в Компоненты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList