Ms access 在功能区选项卡上没有可见按钮时隐藏该选项卡

Ms access 在功能区选项卡上没有可见按钮时隐藏该选项卡,ms-access,ribbon,Ms Access,Ribbon,我正在开发一个多用户应用程序,以access作为前端,使用自定义功能区检索功能。我是一名中级VBA开发人员,但对XML功能区几乎没有经验 场景:我有一个表,将用户与表单关联以定义权限,当我的用户登录时,我运行该表并使用当前用户的权限编写一个数组。“我的功能区”的所有按钮都具有GetVisible=“GetVisibleCallback”,因此,当功能区失效时,回调将检查数组以隐藏/取消隐藏按钮,代码如下: Public Sub GetVisibleCallback(control As IRib

我正在开发一个多用户应用程序,以access作为前端,使用自定义功能区检索功能。我是一名中级VBA开发人员,但对XML功能区几乎没有经验

场景:我有一个表,将用户与表单关联以定义权限,当我的用户登录时,我运行该表并使用当前用户的权限编写一个数组。“我的功能区”的所有按钮都具有GetVisible=“GetVisibleCallback”,因此,当功能区失效时,回调将检查数组以隐藏/取消隐藏按钮,代码如下:

Public Sub GetVisibleCallback(control As IRibbonControl, ByRef visible As Variant)
If IsEmpty(arrayPermissoes) Then
    visible = False
Else
    If UBound(Filter(arrayPermissoes, control.Tag)) > -1 Then
        visible = True
    Else
        visible = False
    End If
End If
End Sub
这是完美的工作方式,但问题是:我在自定义功能区上有多个选项卡,一些用户对已确定选项卡上的任何表单都没有权限,例如:“注册选项卡”,当功能区失效时,用户可以看到该选项卡,但其中没有按钮。我想实现的是:如果在一个确定的选项卡上没有可见的按钮,那么也让它不可见,我如何实现这一点


对不起,英语不好!我正在努力

选项卡
控件提供
getVisible
回调。因此,您可以检查是否允许用户查看它。您也可以考虑调用<代码>无效> <代码>方法>代码> IRBBIUI < /代码>接口,该接口允许对色带用户界面的所有控件的缓存值无效。

可以使用回调过程自定义功能区UI。对于实现的每个回调,都会缓存响应。例如,如果解决方案编写器为按钮执行
getImage
回调过程,则调用该函数一次,加载图像,然后如果需要更新图像,则使用缓存的图像,而不是调用该过程。此过程保持不变,直到代码通过使用
Invalidate
方法发出缓存值无效的信号,此时再次调用回调过程并缓存返回响应

 <customUI … OnLoad="MyAddinInitialize" …>
在以下系列文章中阅读有关Fluent UI(也称为Ribbon UI)的更多信息:

  Dim MyRibbon As IRibbonUI 

  Sub MyAddInInitialize(Ribbon As IRibbonUI) 
    Set MyRibbon = Ribbon 
  End Sub 

  Sub myFunction() 
    MyRibbon.Invalidate() ' Invalidates the caches of all of this add-in's controls 
  End Sub