Как из любой точки кода найти форму, которая
содержит нужный элемент управления
К каждому элементу управления на форме можно
без труда обратиться, однако, если Вы используете
вложенные 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
|