Группировка элементов управления вместе в форме доступа - PullRequest
4 голосов
/ 02 ноября 2009

У меня есть форма Access2003, где я хотел сгруппировать несколько элементов управления и программно изменить видимость, используя код VBA.

Возможно ли это? Я знаю, что могу сгруппировать элементы через Формат -> Группировать, но если я это сделаю, как мне отнести всю группу в моем коде?

Спасибо

Ответы [ 3 ]

13 голосов
/ 02 ноября 2009

Вы можете поместить все элементы управления в элемент управления группового блока, а затем изменить видимость самого группового блока.

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

Установите для свойства тега всех элементов управления, которые вы хотите сгруппировать, что-то вроде groupABC или что угодно.

Затем где-нибудь в вашем коде используйте это, чтобы пройтись по элементам управления формы и проверить это.

Dim ctrl As Control
For Each ctrl In Me.Controls
    If ctrl.Tag = "groupABC" Then
        ctrl.Visible = False
    End If
Next
4 голосов
/ 03 ноября 2009

Чтобы уточнить мой комментарий по использованию пользовательских коллекций, вы должны сделать что-то подобное в модуле вашей формы:

  Private mcolGroupABC As New Collection

  Private Sub IntializeCollections()
    Dim ctl As Control

    If mcolGroupABC.Count = 0 Then
       For Each ctl in Me.Controls
         If ctl.Tag = "GroupABC" Then
            mcolGroupABC.Add ctl, ctl.Name
         End If
       Next ctl
       Set ctl = Nothing
    End If
  End Sub

  Private Sub Form_Load()
    Call InitializeCollections
  End Sub

  Private Sub ShowControls(mcol As Collection, bolShow As Boolean)
    Dim ctl As Control

    For Each ctl In mcol
      ctl.Visible = bolShow
    Next ctl
    Set ctl = Nothing
  End Sub

Чтобы скрыть элементы управления, вы должны сделать следующее:

  Call ShowControls(mcolGroupABC, False)

И показать им:

  Call ShowControls(mcolGroupABC, True)

Это довольно просто, нет?

Это код, который я использую в своих приложениях все время, и я использовал его с тех пор, как впервые применил его, около 10 лет назад, и заметил, что его показывать / скрывать явно заметно элементов управления с пользовательской коллекцией, чем при обходе всей коллекции Controls.

Единственное предостережение в том, что если один из элементов управления имеет фокус, он выдаст ошибку, если вы попытаетесь скрыть его. Это достаточно легко решить, поскольку, если вы скрываете группу элементов управления, у вас наверняка есть подходящее место для установки фокуса, прежде чем вы это сделаете.

1 голос
/ 02 ноября 2009

Мне нравится свойство тега, предложенное Джоэлем Говро. Другие возможности включают элемент управления вкладкой и / или подчиненные формы.

...