有没有办法对 Access 2010 导航表单上的导航按钮进行动态重新排序?
我想根据用户类型隐藏某些按钮;但是,如果无法修改订单,则简单地隐藏它们会在按钮之间留下空隙。
我尝试过类似以下的方法,但没有运气。
Me.NavigationButton1.TabIndex = 1
Me.NavigationButton2.TabIndex = 0
Me.Requery
Me.Refresh
先感谢您。
有没有办法对 Access 2010 导航表单上的导航按钮进行动态重新排序?
我想根据用户类型隐藏某些按钮;但是,如果无法修改订单,则简单地隐藏它们会在按钮之间留下空隙。
我尝试过类似以下的方法,但没有运气。
Me.NavigationButton1.TabIndex = 1
Me.NavigationButton2.TabIndex = 0
Me.Requery
Me.Refresh
先感谢您。
NavigationButtons 的工作方式有点不同。它们在一个NavigationControl
容器中进行管理,如果隐藏了底层按钮,该容器不会自动调整大小。
但是,你可以试试这个,它对我有用:
' Always remember the normal size of the button '
Static bt1Witdh as Long
if bt1Width = 0 then bt1Width = Me.NavigationButton1.Width
' Now hide the button '
Me.NavigationButton1.Width = 0
Me.NavigationButton1.Visible = False
' Unhide the button '
Me.NavigationButton1.Visible = true
Me.NavigationButton1.Width = bt1Width
Tag
您可以通过使用控件的属性作为临时存储来跟踪它们的正常宽度,从而使其更加通用和有点“hacky” :
Public Sub HideNavigationButton(bt As NavigationButton)
' Store the width if we haven't already done so '
If bt.Tag = vbNullString Then bt.Tag = CStr(bt.Width)
bt.Width = 0
bt.Visible = False
End Sub
Public Sub ShowNavigationButton(bt As NavigationButton)
If bt.Visible Or bt.Width > 0 Then Exit Sub
bt.Visible = True
bt.Width = CInt(bt.Tag)
End Sub
要使用它:
' Hide '
HideNavigationButton Me.NavigationButton1
' Show '
ShowNavigationButton Me.NavigationButton1