Поскольку вы не можете иметь вертикальную вкладку управления в Access, я создаю поддельный.
Я написал этот кусок кода, чтобы выделить (изменить носовой белый цвет) текущую страницу:Access 2016 VBA - Создайте собственную коллекцию элементов управления, вручную указав имя элемента управления
Private Sub updateBtnColor()
Dim currentPageIndexSZero As Long
Dim ctl As Control
currentPageIndexSZero = Me.tab1
For Each ctl In Me.Controls
If ctl.Tag = "page" & CStr(currentPageIndexSZero) Then
ctl.ForeColor = white
ElseIf InStr(1, ctl.Tag, "page", vbBinaryCompare) Then
ctl.ForeColor = black
End If
Next ctl
End Sub
Каждой кнопку попавшей страницы она со ссылкой на в качестве тега, в виде:
page0
page1
...
pageN
Таким образом, цикл в основном проверяет текущую страницу, находит кнопку с соответствующим тегом (при условии, что я назвал их правильно) и выделяет его текст.
Теперь это может быть медленным, так как у меня тяжелая форма или плохая практика, поэтому я подумал о создании пользовательской коллекции, а не обхода всей коллекции элементов управления.
Я хотел создать такую структуру, так что я могу цикл через него, что-то вроде:
Enum myButtons
button1 = Forms!myForm!button1
button2 = Forms!myForm!button2
button3 = Forms!myForm!button3
button4 = Forms!myForm!button4
End Enum
И потом:
Public Sub updateBtnColor()
Dim curPageZ as Long
Dim button as Control
For Each button in myButtons
With button
If Right$(CStr(.Name, 1)) = curPageZ
.ForeColor = 16777215 ' White
Else ' No need for an additional ElseIf since I already know these are only the wanted buttons
.ForeColor = 0 ' Black
End If
End With
Next button
End Sub
Что является наиболее элегантным/быстрым/лучшим/правильным способом создания такого или, если моя идея не так хороша, создать такую логику?
Спасибо!
Вы имеете в виду, как это http://www.fmsinc.com /microsoftaccess/controls/components/tabs/index.html – tahwos