вопрос по DLL

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

вопрос по DLL

Сообщение bevaine2000 » 30.05.2005 (Пн) 17:23

Я запуская форму из dll, как сделать активной главную форму(родителя), не закрывая дллэшную.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.05.2005 (Пн) 17:43

Сcылка на форму-родителя есть? Тогда ParentForm.SetFocus
Изображение

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 31.05.2005 (Вт) 8:24

Что за ссылка по подробнее можно, желательно с примерчиком.
Вообщето я делаю так:
DLLObject = CreateObject(DLLName & ".Data")

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 31.05.2005 (Вт) 10:00

Если тебе из дллки нужно форму родителя сделать активной, то в дллку ссылку на форму передай. Например так:

В дллке в классе Data:

Dim pForm as Object

Public Property Set ParentForm(rhs as object)
set pForm = rhs
End Property

В программе:

Set DLLObject = CreateObject(DLLName & ".Data")
Set DLLObject.ParentForm = Form1

И где-нибудь в дллке:

pForm.SetFocus
Лучший способ понять что-то самому — объяснить это другому.

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 31.05.2005 (Вт) 12:05

а ты сам пробовал, у меня почему-то не работает, вот выкладываю пример основанный на твоем коде. Посмотри в чем загвоздка.
Вложения
No_work.zip
(2.86 Кб) Скачиваний: 18

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 31.05.2005 (Вт) 16:32

Спасибо что не оставили в беде :x

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 16:37

Код: Выделить всё
...
Form2.Show vbModal, rhs

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 31.05.2005 (Вт) 18:01

Не помогло, и не поможет потомучто setfocus это равноценно, что нажать мышкой на другом окне, а даже мышкой не выходит, так как родительское окно, здесь наверное надо менять родителя.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.05.2005 (Вт) 19:29

vbModal = ты сам поставил, если тебе не нужна модальность, то замени это на vbModeless

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 31.05.2005 (Вт) 21:41

БОООООООООЛьшое спасибо получилось, такая мелочь, а столько проблем. :D :D :D :D

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 01.06.2005 (Ср) 10:48

Да похоже сглазил. У меня тут такая проблема имеется форма мне необходимо открыть dll-форму. Пишу код в главной форме:
Код: Выделить всё
Set NewObject = CreateObject("Project1.Data")
Set NewObject.ParentForm = Form1

В dll пишу следущие:
Код: Выделить всё
Public Property Set ParentForm(rhs As Object)
Dim pForm As Object
Set pForm = rhs
Form1.Show vbModeless, pForm
End Property

Выдает 373 ошибку!
Убираю pForm все нормально. В том что переменной pForm присваемается объект Form1 я уверен, потомучто pForm.Hide работает.

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 01.06.2005 (Ср) 13:25

Ни кто не знает :?: :(

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 01.06.2005 (Ср) 13:31

у тебя форма-родитель случаем не MDI-окно?

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 01.06.2005 (Ср) 14:25

Нет, обычная форма

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 01.06.2005 (Ср) 14:42

очень странно, я твой код проверял. если поставить

Код: Выделить всё
Public Property Set ParentForm(rhs As Object)
Dim pForm As Object
Set pForm = rhs
Form1.Show vbModeless, rhs
End Property


то все работает нормально. я так и не пойму в чем у тебя проблема :!:

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 01.06.2005 (Ср) 15:02

вот сам исходник
Вложения
error373.zip
(7.74 Кб) Скачиваний: 18

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 01.06.2005 (Ср) 15:38

запускать Project1.exe, перед этим надо зарегистрировать Project1.dll (regsvr32)
Вложения
1.zip
(11.23 Кб) Скачиваний: 18

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 01.06.2005 (Ср) 15:42

Спасибо дружище, век тебя не забуду.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 163

    TopList