Как из любой точки кода найти форму, которая содержит нужный элемент управленияК каждому элементу управления на форме можно без труда обратиться, однако, если Вы используете вложенные 5-ти уровневые процедуры, то код может стать громозким и трудно читаемы. Такая проблема решается через свойство Container, которое можно использовать для получения формы. Однако элемент управления может хранится в другом элементе управления. В данном случае прийдётся идти по цепочке контейнеров, до тех пор, пока не достигните формы. Public Function GetForm(ctr As Control) As Object
Set GetForm = ctr.Container
Do Until TypeOf GetForm Is Form
Set GetForm = GetForm.Container
Loop
End Function
Теперь, когда функция вернула объект, Вы должны привести его обратно к форме, для лучшей производительности. Далее показан пример нахождения формы, на которой расположен массив вложенных picturebox-ов: Private Sub picNested_Click(Index As Integer)
Dim frm As Form
Set frm = GetForm(picNested(Index))
MsgBox frm.Name, vbOKOnly, "Name of form"
End Sub
|