Как циклично выполниться посредством всех средств управления в форме, включая средства управления в подчиненной форме - Доступ 2007

Как заголовок моего вопроса предлагают, как возможно циклично выполниться посредством всех средств управления в форме, включая подчиненные формы.

Например, я использую ниже sub стандартной программы для выбирания цвета фона средств управления с тегом *

Public Sub colCtrlReq(frm As Form)
'  Sets background color for required field -> Tag = *
Dim setColour As String
setColour = RGB(255, 244, 164)
Dim ctl As Control
For Each ctl In frm.Controls
        If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then
            If InStr(1, ctl.Tag, "*") <> 0 Then
                ctl.BackColor = setColour
            End If
        End If
Next ctl
Set ctl = Nothing
End Sub

Как изменил бы это для ловли средств управления в подчиненной форме? Заранее спасибо за любую справку или указатели.

Рождество аплодисментов

10
задан noelmcg 29 July 2010 в 10:05
поделиться

2 ответа

Вы можете использовать рекурсию

Public Sub colCtrlReq(frm As Form)
''  Sets background color for required field -> Tag = *
Dim setColour As String
setColour = RGB(255, 244, 164)
Dim ctl As Control
For Each ctl In frm
        If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox _
            Or ctl.ControlType = acListBox Then
            If InStr(1, ctl.Tag, "*") <> 0 Then
                ctl.BackColor = setColour
            End If
        ElseIf ctl.ControlType = acSubform Then
            colCtrlReq frm(ctl.Name).Form

        End If
Next ctl
Set ctl = Nothing
End Sub
15
ответ дан 3 December 2019 в 21:19
поделиться

Получите доступ к коллекции элементов управления свойства Form подчиненного элемента управления.

Обратите внимание, имя подчиненной формы управления может не совпадать с именем сохраненного объекта формы.

Если ваша подчиненная форма control называется SubformControlName, начните отсюда:

For Each ctl In frm!SubformControlName.Form.Controls
    Debug.Print ctl.Name
Next

Обновление : из вашего комментария, вот что, я думаю, вы ищете.

Если вы заранее не знаете имена элементов управления подчиненной формы, вы можете определить, какие элементы управления вашей формы являются элементами управления подчиненной формы во время выполнения.

For Each ctl In frm.Controls
    If TypeName(ctl) = "SubForm" Then
        Debug.Print ctl.Name & " is a SubForm"
        For Each ctlSub in ctl.Form.Controls
            Debug.Print ctlSub.Name
        Next 
    End If
Next
2
ответ дан 3 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: