Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

12下一頁(yè)
返回列表 發(fā)新帖
查看: 8704|回復(fù): 16
打印 上一主題 下一主題

控制加載自定義功能區(qū)

[復(fù)制鏈接]

點(diǎn)擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2017-9-25 10:17:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式



下載:
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)


理解uSysRibbons用戶自定義功能區(qū)數(shù)據(jù)表 中,uSysRibbons 是存儲(chǔ)的數(shù)據(jù)庫(kù)打開時(shí) 自動(dòng) 加載的功能區(qū)定義,即,自定義的功能區(qū)在數(shù)據(jù)庫(kù)一打開的時(shí)候就加載,且在數(shù)據(jù)庫(kù)打開后,自定義功能區(qū)也不重新加載,就這么一次加載機(jī)會(huì),沒(méi)有控制的機(jī)會(huì)。這就很不爽了!那么如何控制想要加載的功能區(qū)呢?

Access 2007 以上版本提供了 Application.LoadCustomUI 加載代表自定義功能區(qū)的 XML 的方法。

那么我們要怎么做呢?

1、首先,就是要不讓其自動(dòng)加載,辦法是不讓數(shù)據(jù)庫(kù)中存在 uSysRibbons 表。將 uSysRibbons 改名,本例中改為 uSysRibbonsAdmin
操作步驟:
Alt+F11 鍵,進(jìn)入 VBA 編輯器,按 Ctrl+G 打開立即窗口,執(zhí)行如下命令:
  1. DoCmd.Rename "uSysRibbonsAdmin", acTable, "uSysRibbons"
復(fù)制代碼
另外再多復(fù)制一份為 uSysRibbonsUser
  1. DoCmd.CopyObject , "uSysRibbonsUser", acTable, "uSysRibbonsAdmin"
復(fù)制代碼
說(shuō)明uSysRibbonsAdmin 針對(duì) Admin 登錄用戶,uSysRibbonsUser 針對(duì) User 登錄用戶。兩個(gè)不同用戶分別使用息的自定義功能區(qū)。


打開 uSysRibbonsAdmin 表。
  1. DoCmd.OpenTable "uSysRibbonsAdmin"
復(fù)制代碼
RibbonName 字段為 “main” 行中的 RibbonXML 字段中的 “<ribbon startFromScratch="true">” 改為 “<ribbon startFromScratch="false">”,以示兩個(gè)不同用戶加載的自定義功能區(qū)的區(qū)別。

2、編寫一段加載指定數(shù)據(jù)表中的存儲(chǔ)自定義功能區(qū)的代碼。
在 VBA 項(xiàng)目中,插入一個(gè)模塊,將其命名為“modRibbon”,在該模塊中插入“LoadRibbonsFromTable”函數(shù)。
  1. Public Function LoadRibbonsFromTable(ribbonTableName As String)
  2.     Dim i As Integer
  3.     Dim db As DAO.Database
  4.     Set db = Application.CurrentDb
  5.       
  6.     For i = 0 To (db.TableDefs.Count - 1)
  7.         If db.TableDefs(i).Name = ribbonTableName Then ' 匹配指定的數(shù)據(jù)表
  8.           Dim rs As DAO.Recordset
  9.           Set rs = CurrentDb.OpenRecordset(db.TableDefs(i).Name)
  10.           rs.MoveFirst
  11.    
  12.           Do While Not rs.EOF
  13.                 Application.LoadCustomUI rs("RibbonName").Value, rs("RibbonXml").Value
  14.                 rs.MoveNext
  15.           Loop
  16.    
  17.           rs.Close
  18.           Set rs = Nothing
  19.        End If
  20.     Next i
  21.    
  22.     db.Close
  23.     Set db = Nothing
  24. End Function
復(fù)制代碼

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖1 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

2#
 樓主| 發(fā)表于 2017-9-25 10:21:40 | 只看該作者
3、新建自動(dòng)運(yùn)行宏 Autoexec,使其在打開數(shù)據(jù)庫(kù)時(shí)自動(dòng)執(zhí)行,以對(duì)話框方式打開 frmWelcome 窗體。



4、修改 frmWelcome 代碼,使其根據(jù)登錄用戶加載不同的自定義功能區(qū):
  1. Private Sub cmdClose_Click()
  2.     DoCmd.Close acForm, Me.Name, acSaveNo
  3.     DoCmd.ShowToolbar "Ribbon", acToolbarYes

  4.     DoCmd.Quit
  5. End Sub

  6. Private Sub cmdLogin_Click()
  7.     If cboUser = "Admin" Then
  8.         LoadRibbonsFromTable "uSysRibbonsAdmin"
  9.         DoCmd.Close acForm, Me.Name, acSaveNo
  10.         DoCmd.ShowToolbar "Ribbon", acToolbarYes
  11.     ElseIf cboUser = "User" Then
  12.         LoadRibbonsFromTable "uSysRibbonsUser"
  13.         DoCmd.Close acForm, Me.Name, acSaveNo
  14.         DoCmd.ShowToolbar "Ribbon", acToolbarYes
  15.     End If
  16. End Sub

  17. Private Sub Form_Load()
  18.     DoCmd.ShowToolbar "Ribbon", acToolbarNo
  19.     txtPwd = "-- 輸入登錄密碼 --"
  20. End Sub
復(fù)制代碼

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

點(diǎn)擊這里給我發(fā)消息

3#
發(fā)表于 2017-9-25 10:38:15 | 只看該作者
最近朱總佳作不斷!

點(diǎn)擊這里給我發(fā)消息

4#
 樓主| 發(fā)表于 2017-9-25 11:08:25 | 只看該作者
簡(jiǎn)單自定義功能區(qū),從生成XML->自動(dòng)加載->程序控制,相對(duì)比較完整,至此,一個(gè)小系列已完成。

至于如何做得更好,敬請(qǐng)各位自由發(fā)揮。
5#
發(fā)表于 2017-9-25 21:47:21 | 只看該作者

謝謝分享,收藏了
6#
發(fā)表于 2017-9-26 06:28:27 | 只看該作者
小白一個(gè),學(xué)習(xí)學(xué)習(xí)
7#
發(fā)表于 2017-9-29 11:29:03 | 只看該作者
111111111111111
8#
發(fā)表于 2017-10-28 11:38:52 | 只看該作者
拜讀朱總佳作
9#
發(fā)表于 2017-12-26 13:10:33 | 只看該作者
謝謝老師分享
10#
發(fā)表于 2018-1-7 23:42:28 | 只看該作者
控制加載自定義功能區(qū),這個(gè)好
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 04:36 , Processed in 0.132953 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表