|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
1、实现原理:
a、主窗体的按钮和标签是重叠的,因此单击标签时其实已经单击到按钮了,但由于按钮设置为透明,因此在用户看来只是单击标签而已。
b、单击按钮后则打开菜单子窗体,并且通过子窗体的偏移、设置列表框数据源和高度等相关属性达到只显示菜单的效果。
2、部分注释:- '公共函数,主窗体的按钮单击事件:
- '设置公共函数的好处是为了便于调用。
- Private Function commandButtonClick(intIndex As Integer)
- 'intIndex主要用于设置子窗体列表框的数据源。
- '打开子窗体
- DoCmd.OpenForm "frmSubMenu"
- With Form_frmSubMenu
- '移动子窗体到适当位置,当分辨率不一样的时候,可能会出现偏差。
- .Move Me.WindowLeft + 230 + (intIndex - 1) * 870, Me.WindowTop + 760
- '设置子窗体列表框的数据源,共计3列,但在子窗体中设置了第二、三列宽度为0,故而只显示第一列。
- .List1.RowSource = "SELECT Name, type, Target FROM myMenu WHERE ParentID=" & intIndex '& ";"
- '根据列表框的记录条数来设置标签高度。
- .Label1.Height = .List1.ListCount * 232 '0.41 * 567
- 将标签高度传递给列表框高度
- .List1.Height = .Label1.Height
- '设置子窗体的主体高度
- .InsideHeight = .Label1.Height + 20
- End With
- End Function
- '子窗体列表框单击事件:
- Private Sub List1_Click()
- '将第二、三列变量赋值给变量。
- cType = List1.Column(1)
- cTarget = List1.Column(2)
- Select Case cType
- '如果第三列显示为Frm,弹出窗体名称。
- Case "Frm"
- MsgBox "打开窗体:" & cTarget
- '如果第三列显示为Rpt,弹出报表名称。
- Case "Rpt"
- MsgBox "打开报表:" & cTarget
- '其它参数时没写代码。自己根据实际来写啦。
- Case "Exe"
-
- Case "Obj"
-
- Case "Lnk"
-
- Case "Mdl"
-
- End Select
- Command3_Click
- '主窗体获取焦点。
- Form_frmMain.SetFocus
- End Sub
- '子窗体按钮单击事件
- Private Sub Command3_Click()
- '关闭子窗体。
- DoCmd.Close acForm, "frmSubMenu"
- End Sub
复制代码 |
|