Консультация № 72445
24.01.2007, 16:42
0.00 руб.
0 3 3
Здравствуйте!
Как можно узнать на какой форме находится UserControl, при его инициализации. Т.е. нужно получить объект форма. (hwnd не нужен).

Обсуждение

Неизвестный
24.01.2007, 17:14
общий
это ответ
Здравствуйте, DragonTusk!

У контрола есть свойство container - это содержащий его обьект... А вот форма это или нет - тут нужно будет смотреть... примерно так:

Dim x
Set x = UserControl.Container
if TypeName(x)="Form" then
msgbox x.Caption
else
set x=x.Container
endif
Неизвестный
24.01.2007, 19:25
общий
это ответ
Здравствуйте, DragonTusk!
Msg Box Me.Caption
Ключевое слово Me позволяет обратиться к свойствам и методам самой формы
Неизвестный
25.01.2007, 14:25
общий
это ответ
Здравствуйте, DragonTusk!
Блин интересно узнать мнение других экспертов, но как поступаю я...
в UserConrol создаётся локальная переменная mvarParent as object, в Class_Terminate добавляю строку set mvarParent = nothing. Далее добавляю пару для работы со свойством

PUBLIC PROPERTY GET PARENT () AS OBJECT
set PARENT = mvarParent
end property

PUBLIC PROPERTY SET PARENT (mVar as object) AS OBJECT

‘свойство Parent должно быть Read only
if mvarParent is nothing then
set mvarParent = mvar
‘ здесь обработка в зависимости от переменной mvarParent

else

end if
end property

далее поступаешь так

public sub Form_Load()
dim myClass as new clsMyClass

set myClass.Parent = me
...
‘какойто код
...
set myClass = nothing
end sub

взял из книги Visual Basic 6.0
Наиболее полное руководство для проф работы в среде Visual Basic 6.0
Microsoft Press <БХВ-Питербург> 2004 год

Форма ответа