WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院数据库Access 为Access2007创建一个应用程序级的自定义Ribbon 阅读

为Access2007创建一个应用程序级的自定义Ribbon

 2009-10-28 15:16:57 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫嶅銈嗗姉閸樠囧煡婢跺á鐔兼煥鐎n兘鍋撴繝姘拺鐟滅増甯掓禍浼存煕閹惧鈽夐柍缁樻煥椤繈鎳滅喊妯诲闂備礁鎲$粙鎴︺偑閺夋垟鏋旈柡鍐e亾缂佺粯绋撴禒锕傚磼濮橆剦鐎抽梻浣哥-缁垶骞戦崶顒傚祦閻庯綆浜栭弨浠嬫煙闁箑澧い鏂垮€规穱濠囨倷椤忓嫧鍋撻弽褜娼栧┑鐘宠壘閸屻劎鎲歌箛娑樼疅闁圭虎鍠楅弲鎼佹煥閻曞倹瀚�
核心提示:(二) 在运行时装载定制如果想在运行时装载静态的定制,则将这些定制存储在USysRibbons表中,为Access2007创建一个应用程序级的自定义Ribbon(2),并且在需要时设置窗体或报表的RibbonName属性,但是,此外,该标记为每个按钮设置Tag属性,如果需要创建动态的定制,则调用Application.

(二) 在运行时装载定制

如果想在运行时装载静态的定制,则将这些定制存储在USysRibbons表中,并且在需要时设置窗体或报表的RibbonName属性。但是,如果需要创建动态的定制,则调用Application.LoadCustomUI方法。下面的示例创建一个Ribbon定制,显示应用程序中每个窗体的按钮,处理每个按钮的onAction回调来装载请求的窗体。

创建动态的Ribbon定制

1、将前面内容中所使用的数据库装载到Access 2007中。如果数据库中只有一个窗体,则创建一个新窗体并在每个窗体中添加一至两个控件。

2、在“创建”选项卡中的“其他”组中,单击“宏”按钮的下拉列表,然后单击“模块”。

3、在VBE中的菜单“视图”中,单击“属性窗口”。

4、在“属性”窗口中,将名称(Name)属性框中模块的名称改为RibbonLoader。

5、在代码窗口中,输入下面的代码。虽然该方法不会返回值,但必须是一个函数,否则不能够从Access宏中调用。

Function CreateFormButtons()

Dim xml As String

xml = _

“<customUI xmlns=”"http://schemas.microsoft.com/” & _

“office/2006/01/customui”">” & vbCrLf & _

“ <ribbon startFromScratch=”"false”">” & vbCrLf & _

“  <tabs>” & vbCrLf & _

“   <tab id=”"DemoTab”" label=”"LoadCustomUI Demo”">” & _

vbCrLf & _

“    <group id=”"loadFormsGroup”" label=”"Load Forms”">” & _

vbCrLf & _

“{0}” & vbCrLf & _

“    </group>” & vbCrLf & _

“   </tab>” & vbCrLf & _

“  </tabs>” & vbCrLf & _

“ </ribbon>” & vbCrLf & _

“</customUI>”

Dim template As String

template = “<button id=”"load{0}Button”" ” & _

“label=”"Load {0}”" onAction=”"HandleOnAction”" ” & _

“tag=”"{0}”"/>” & vbCrLf

Dim formContent As String

Dim frm As AccessObject

For Each frm In CurrentProject.AllForms

formContent = formContent & _

Replace(template, “{0}”, frm.Name)

Next frm

xml = Replace(xml, “{0}”, formContent)

Debug.Print xml

On Error Resume Next

‘ 如果从AutoExec宏中调用这段代码,

‘ 如果在USysRibbons表中有一个使用相同名称的定制

‘ 则会失败

Application.LoadCustomUI “FormNames”, xml

End Function

当运行该段代码时,如果应用程序中包含有名为Form1和Form2的两个窗体,则会创建像下面的XML的标记。

<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>

<ribbon startFromScratch=”false”>

<tabs>

<tab id=”DemoTab” label=”LoadCustomUI Demo”>

<group id=”loadFormsGroup” label=”Load Forms”>

<button id=”loadForm2Button” label=”Load Form2″ onAction=”HandleOnAction” tag=”Form2″/>

<button id=”loadForm1Button” label=”Load Form1″ onAction=”HandleOnAction” tag=”Form1″/>

</group>

</tab>

</tabs>

</ribbon>

</customUI>

这段标记创建了一个新的LoadCustomUI Demo选项卡,包含有一个“Load Forms”组。在该组内,Ribbon为应用程序中的每个窗体(Form1和Form2)显示一个按钮,并指定每个按钮在单击时应该调用的HandleOnAction回调过程。此外,该标记为每个按钮设置Tag属性,以便于代码应该打开的包含的Access窗体的名称。

Tags:Access 创建 一个

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接