设为首页
加入收藏
联系站长
首页 | 新闻 | 新书 | 专家 | 技巧 | 源码/作品 | 工具/资源 | 商城 | 风采 | 留言 | 论坛 | 网址 | 承接 | 

  没有公告

 您现在的位置: Access/Office中国 >> Office中国/Access中国图书 --《专家门诊——Access开发答疑200问》 
专家门诊——Access开发答疑200问书籍介绍


Office中国/Access中国 图书 Access图书 专家门诊——Access开发答疑200问  总述 经典赏析 目录 光盘内容 常见问题 实例更新 讨论 联系       人气:


New Page 1
   本 书 经 典 内 容 赏 析 
      如何实现左右移动项目的列表框 如何实现通用的Office Xp按钮界面效果
      如何编写传递多个参数给窗体和报表的函数 如何设计可定定义流程图的程序
      如何读取使用插入对象插入的OLE字段的内容 通用的窗体页眉与页脚
   书中其它经典内容
136 如何将数字金额转换为中文金额 66 如何实现带树形结构的组合框和列表框 68 如何实现通用的窗体页眉与页脚 205 能否修改MDE文件窗体和报表的属性 168 如何设计可定定义流程图的程序 81 报表中如何屏蔽零值 163 如何实现拖拉的treeview 166 如何原样打印Treeview中的内容 138 如何将中文字符串转换为首位拼音码 213 不使用第三方控件,如何实现繁简转换 137 如何将西文日期转换为中文日期格式 142 如何自动刷新链接表 150 如何让窗体打开得更快一些 210 如何读取使用插入对象插入的OLE字段的内容 206 Access两个未公开的方法 161 如何用代码创建自定义的工具栏 175 如何实时添加新的字体 176 如何将窗体放到系统托盘里 178 如何使用使用API设置窗体总在最前 190 如何实现窗体的位置自动跟随光标移动 200 如何防止他人导入导出数据库对象 203 如何避免数据库损坏 204 为什么要生成MDE及生成MDE的注意事项 162 如何设置listview控件的各种属性 215 如何判断数据库实例是否已打开 211 如何转换窗体中所有命令按钮控件为标签控件且保留原有事件 70 如何实现控件自动适应窗体的大小 71 如何实现在不同窗体视图有不同显示效果的窗体 212 如何自动添加指定的代码到各个窗体的事件中 217 如何自动拆分长SQL 语句字符串 218 如何调用帮助文件 219 如何限制程序使用次数和使用天数 221 如何打开另一个MDB文件并跳过启动窗体 223 如何为MDB和MDE设置两种不同的退出系统的方式 224 什么是标准的对象命名规则 225 什么是良好的代码注释规范 227 开发大型软件流程 212 如何自动添加指定的代码到各个窗体的事件中

124

如何实现通用的Office XP按钮界面效果 适用版本:97、2000、2002、2003
人气 95% 难度系数 *****
问题详述
      如何使用标签控件模拟Office XP的按钮的界面效果?由于在每个窗体都可能需要用到这个模块,能否编写成一个通用的模块,在窗体加载时只需简单调用一个函数就能实现Office XP的按钮的界面效果?
专家解答(详细代码请参见本书内容)
      要模拟Office XP按钮的界面效果,主要是处理鼠标的“ MouseDown”、“ MouseUp”、“MouseMove”、“ MouseDown”等事件,为每个事件编写自定义的函数,然后在窗体打开或加载的时候设置控件的鼠标事件为相应的自定义函数,MouseMove的自定义函数代码如下。
    首先创建一个通用函数来初始化窗体上的控件,以便所有控件在发生鼠标事件时都调用上面的通用处理过程。同时,这个函数也处理其他一些通用设置,如设置页眉页脚的背景与前景颜色、自动设置子窗体的栏位属性、设置必须输入字段的控件特殊显示效果等。代码如下。
'===============================================================================>>>>>>>>
'-函数名称: glInitXpStyle
'-功能描述: 初始化窗体的XP风格
'-输入参数: 参数1:rstrFrmName String 窗体名称
'-返回参数: 无
'-使用示例: glInitXpStyle "frmMainMenu"
'-相关调用: SetMouseMove glMouseDown glMouseUp
'-使用注意: 只适用Label TextBox CommandButton ComboBox OptionButton CheckBox
'-兼 容 性: 97,2000,XP compatible
'-参考资料:
'-作 者: 王宇虹 修改:王宇虹
'-创建日期; 2002-08-26 更新日期: 2002-08-28 ,2002-11-15
'-图 解:
'===============================================================================--<>>>>>
Public Function glInitXpStyle(rfrmForm As Form) As Boolean

On Error Resume Next
'Dim frm As Form
Dim ctr As Control
Dim ctrLabel As Control
Dim sct As Section
Dim iBtnCnt As Integer
Dim iBtnCnt2 As Integer
Dim i As Integer
Dim obj As Section
Dim blnHaveGetColor As Boolean
Dim strFrmName As String
Dim strPFrmName As String
Dim strSubFormName As String
Dim lngLastForeColor As Long
Dim blnIsEditActiveX As Boolean
Dim blnHavLabel As Boolean
Dim blnMustInput As Boolean
Dim intPos As Integer
Dim strTemp As String
Dim intTemp As Integer
Dim varName As Variant
Dim strCboColumnWidths As String
glInitXpStyle = True

Dim rs As Recordset
Dim strCpName As String
Dim strIpAddress As String
Dim strModule As String
Dim intCnt As Integer
Dim strCompanyMi As String
Dim strModuleMi As String
strCompanyMi = Nz(CodeProject.Properties("FCompany"), "")


Application.Echo False '暂时关闭屏幕刷新
strFrmName = rfrmForm.Name

strPFrmName = rfrmForm.Parent.Name
If err.Number <> 0 Then
strPFrmName = ""
End If
rfrmForm.KeyPreview = True
'For Each sct In frm.Section '历遍被初始化窗体上的所有需XP风格的控件,设置它们的各个鼠标事件
rfrmForm.Section(acDetail).OnMouseMove = "=glMouseMove('XPsection','" & strFrmName & "','" & strPFrmName & "')"
rfrmForm.Section(acDetail).BackColor = Val(CurrentProject.Properties("FFrmDetailBackColor"))
rfrmForm.Section(acHeader).OnMouseMove = "=glMouseMove('XPsection','" & strFrmName & "','" & strPFrmName & "')"
rfrmForm.Section(acHeader).BackColor = Val(CurrentProject.Properties("FFrmHeaderBackColor"))
rfrmForm.Section(acFooter).OnMouseMove = "=glMouseMove('XPsection','" & strFrmName & "','" & strPFrmName & "')"
rfrmForm.Section(acFooter).BackColor = Val(CurrentProject.Properties("FFrmFooterBackColor"))
'Next

rfrmForm.OnUnload = "=glUnloadForm('" & strFrmName & "','" & strPFrmName & "')"

For Each ctr In rfrmForm.Controls '历遍被初始化窗体上的所有需XP风格的控件,设置它们的各个鼠标事件
If TypeOf ctr Is OptionGroup Then
ctr.Controls(0).BackColor = rfrmForm.Section(ctr.Section).BackColor
End If
'-------------------------设置子窗体栏位属性---------------------
If (TypeOf ctr Is SubForm) And ctr.Section = acDetail Then
Dim strTag As String
Dim sfmCtr As Control
Dim frmSubForm As Control
'Dim strSubFormName As String
Dim strCtrCaption As String
Set frmSubForm = ctr
strSubFormName = ctr.Form.Name
Dim rst As New ADODB.Recordset
rst.Open "select * from tblPubColumnProperty where FFormName='" & strFrmName & "' order by FSeqNo", CodeProject.Connection, adOpenStatic, adLockReadOnly
If rst.RecordCount > 0 Then
If Nz(rst("FSort")) <> "" Then
frmSubForm.Form.OrderBy = Nz(rst("FSort"))
frmSubForm.Form.OrderByOn = True
End If
For i = 0 To rst.RecordCount - 1
Set sfmCtr = frmSubForm.Form.Controls(rst("FControlName"))
sfmCtr.ColumnHidden = Not rst("FIsSelect")
sfmCtr.ColumnWidth = rst("FColumnWidth")
sfmCtr.ColumnOrder = rst("FSeqNo")

rst.MoveNext
Next

End If
Set rst = Nothing
Set ctr = Nothing
Set frmSubForm = Nothing
End If
If Left(ctr.Tag, 2) = "XP" Then
If Not (TypeOf ctr Is CustomControl) Then
ctr.OnMouseMove = "=glMouseMove('" & ctr.Name & "','" & strFrmName & "','" & strPFrmName & "')"
If InStr(ctr.Tag, "move") = 0 Then
ctr.OnMouseDown = "=glMouseDown('" & ctr.Name & "','" & strFrmName & "','" & strPFrmName & "')"
ctr.OnMouseUp = "=glMouseUp('" & ctr.Name & "','" & strFrmName & "','" & strPFrmName & "')"
End If
If blnHaveGetColor = False And ctr.ForeColor <> RGB(192, 192, 192) Then
lngLastForeColor = ctr.ForeColor
blnHaveGetColor = True
End If
If ctr.Tag = "XPdisable" Then
ctr.ForeColor = RGB(192, 192, 192)
ctr.OnClick = ""
Else
If ctr.ForeColor <> RGB(192, 192, 192) Then
Else
ctr.ForeColor = lngLastForeColor
ctr.OnClick = "[Event Procedure]"
ctr.Tag = "XP"
End If
End If
End If
With ctr
.Object.BackColor = rfrmForm.Section(ctr.Section).BackColor
'Dim aa As ctButton
.FontOver.Bold = False
.BorderType = None
.BorderOver = BorderRegular
.Object.backcolorover = Val(CurrentProject.Properties("FBtnMouseMoveBackColor"))
.Object.BorderColor = Val(CurrentProject.Properties("FBtnMouseMoveBorderColor"))
' .Object.DrawFocus = CurrentProject.Properties("FBtnShowFocus")
End With

End If
‘如果需要调用日期窗体
If InStr(ctr.Tag, "date") > 0 Then
ctr.OnDblClick = "=glOpenDockForm('XPdate')"
'ctr.OnEnter = "=glOpenDockForm('XPdate')"
ctr.OnExit = "=glCloseDockForm('XPdate')"

End If
‘如果是需要自动下拉的组合框
If InStr(ctr.Tag, "autocbo") > 0 And (TypeOf ctr Is ComboBox) Then
intPos = InStr(ctr.Tag, "autocbo")
strTemp = Mid(ctr.Tag, intPos + 7, 2)
intPos = Val(Left(strTemp, 1))
intTemp = Val(Right(strTemp, 1))
varName = Split(ctr.ColumnWidths, ";")
strTemp = ""
For i = 0 To UBound(varName)
If i = intPos - 1 Then
strTemp = strTemp & ";0"
Else
strTemp = strTemp & ";" & varName(i)
End If
Next
If Len(strTemp) > 0 Then strTemp = Mid(strTemp, 2)
ctr.OnExit = "=glSetComboColumnWidth('" & ctr.Name & "','" & strFrmName & "','" & strTemp & "')"
ctr.OnEnter = "=glSetComboColumnWidth('" & ctr.Name & "','" & strFrmName & "','" & ctr.ColumnWidths & "')"
ctr.ColumnWidths = strTemp
End If
'如果是需要自动弹出计算器的控件
If InStr(ctr.Tag, "calc") > 0 Then
ctr.OnEnter = "=glOpenDockForm('XPcalc')"
ctr.OnExit = "=glCloseDockForm('XPcalc')"
End If
If CurrentProject.Properties("FAutoDropDown") <> 0 Then
If CurrentProject.Properties("FAutoDropDown") = 1 Then
End If
End If
‘处理必须输入字段的特殊效果
If (TypeOf ctr Is TextBox) Or (TypeOf ctr Is ComboBox) Or (TypeOf ctr Is CheckBox) Or (TypeOf ctr Is OptionButton) Or (TypeOf ctr Is ListBox) Then 'Or blnIsEditActiveX
blnMustInput = False
If InStr(ctr.Tag, "NotNull") > 0 Then
blnMustInput = True
End If
If blnMustInput = False Then '不是必录入控件
If CurrentProject.Properties("FInputControlBackStyle") <> -1 Then
ctr.BackStyle = CurrentProject.Properties("FInputControlBackStyle")
End If
If CurrentProject.Properties("FInputControlBackColor") <> -1 Then
ctr.BackColor = CurrentProject.Properties("FInputControlBackColor")
End If
If CurrentProject.Properties("FInputControlForeColor") <> -1 Then
ctr.ForeColor = CurrentProject.Properties("FInputControlForeColor")
End If

此处代码太长,详见书中内容
..........
...........
............
..............


If CurrentProject.Properties("FInputLabelFontUnderline") <> 0 Then
ctrLabel.FontUnderline = CurrentProject.Properties("FInputLabelFontUnderline")
End If
If CurrentProject.Properties("FInputLabelSpecialEffect") <> -1 Then
ctrLabel.SpecialEffect = CurrentProject.Properties("FInputLabelSpecialEffect")
End If
End If
End If

Else '是必录入控件
If CurrentProject.Properties("FMustInputControlDispMode") <> 0 Then
blnHavLabel = False
If ctr.Controls.Count > 0 Then
If TypeOf ctr.Controls(0) Is Label Then
Set ctrLabel = ctr.Controls(0)
blnHavLabel = True
End If
End If

Select Case CurrentProject.Properties("FMustInputControlDispMode")
Case 1
If blnHavLabel = True Then
If Left(ctrLabel.Caption, 1) = "*" Then ctrLabel.Caption = Mid(ctrLabel.Caption, 2)
ctrLabel.Caption = "*" & Nz(ctrLabel.Caption)
End If
Case 2
If blnHavLabel = True Then
If CurrentProject.Properties("FMustInputLabelBackStyle") <> -1 Then
ctrLabel.BackStyle = CurrentProject.Properties("FMustInputLabelBackStyle")
End If

If CurrentProject.Properties("FMustInputLabelBackColor") <> -1 Then
ctrLabel.BackColor = CurrentProject.Properties("FMustInputLabelBackColor")
End If

此处代码太长,详见书中内容
..........
...........
............
..............


If CurrentProject.Properties("FMustInputLabelFontUnderline") <> 0 Then
ctrLabel.FontUnderline = CurrentProject.Properties("FMustInputLabelFontUnderline")
End If

End If

Case 3
If blnHavLabel = True Then
If CurrentProject.Properties("FMustInputLabelBackStyle") <> -1 Then
ctrLabel.BackStyle = CurrentProject.Properties("FMustInputLabelBackStyle")
End If

此处代码太长,详见书中内容
..........
...........
............
..............


Case 4
If CurrentProject.Properties("FMustInputControlBackStyle") <> -1 Then
ctr.BackStyle = CurrentProject.Properties("FMustInputControlBackStyle")
End If

此处代码太长,详见书中内容
..........
...........
............
..............


If CurrentProject.Properties("FMustInputControlFontUnderline") <> 0 Then
ctr.FontUnderline = CurrentProject.Properties("FMustInputControlFontUnderline")
End If

End Select
End If
End If
End If
Next
err = 0
strSubFormName = rfrmForm.frmPubFrmHeader.Form.Name
If err.Number = 0 Then
rfrmForm.frmPubFrmHeader.Form.lblTitle1.Caption = rfrmForm.Caption '设置页眉标题为主窗体的标题(在共用子窗体里的标签)
'设置页眉标题的前景颜色(在共用子窗体里的标签)
rfrmForm.frmPubFrmHeader.Form.lblTitle1.ForeColor = Val(CurrentProject.Properties("FFrmHeaderTitleForeColor"))
rfrmForm.frmPubFrmHeader.Form.lblTitle2.Caption = rfrmForm.Caption '设置页眉标题阴影为主窗体的标题(在共用子窗体里的标签)
'设置页眉标题的阴影颜色(在共用子窗体里的标签)
rfrmForm.frmPubFrmHeader.Form.lblTitle2.ForeColor = Val(CurrentProject.Properties("FFrmHeaderTitleBackColor"))
'设置页眉背景颜色(实际上是共用子窗体里的主体背景)
rfrmForm.frmPubFrmHeader.Form.Section(acDetail).BackColor = Val(CurrentProject.Properties("FFrmHeaderBackColor"))
'设置页脚提示文字为主窗体的标记属性值
rfrmForm.frmPubFrmFooter.Form.lblTips.Caption = rfrmForm.Tag
'设置页脚背景颜色(实际上是共用子窗体里的主体背景)
rfrmForm.frmPubFrmFooter.Form.Section(acDetail).BackColor = Val(CurrentProject.Properties("FFrmFooterBackColor"))
'设置主窗体页眉页脚的高度为各自嵌入的子窗体控件的高度
rfrmForm.Section(acHeader).Height = rfrmForm.frmPubFrmHeader.Height
rfrmForm.Section(acFooter).Height = rfrmForm.frmPubFrmFooter.Height
End If

Application.Echo True '打开屏幕刷新,以显示发生变化的窗体画面
DoCmd.Hourglass False
End Function

'===============================================================================
'-函数名称: glMouseMove
'-功能描述: 设置XP风格的通用鼠标移动事件
'-输入参数说明: 参数1:rstrCtrName String 控件名称
' 参数2:rstrFrmName String 窗体名称
'-返回参数说明: 无
'-使用语法示例: glMouseMove "cmdSave","frmMainMenu"
'-参考:
'-使用注意: 只适用Label TextBox CommandButton ComboBox OptionButton CheckBox
'-兼容性: 97,2000,XP compatible
'-作者: 王宇虹,改进:王宇虹
'-更新日期: 2002-08-26 ,2003-09-15
'===============================================================================
Public Function glMouseMove(rstrCtrName As String, rstrFrmName As String, rstrPFrmName As String)
'On Error Resume Next
Static ctrLast As Control
Static lngLastBorderColor As Long
Static lngLastForeColor As Long
Static intLastSpecialEffect As Integer
Dim strCtrNameLast As String '变量 用来保存最近一次移动过的控件名称
Dim ctr As Control '临时变量 用来定义当前控件和最近一次移动过的控件
Dim frm As Form '临时变量 用来定义当前的窗体
On Error Resume Next
If rstrPFrmName = "" Then
Set frm = Forms(rstrFrmName)
Else
Set frm = Forms(rstrPFrmName).Controls(rstrFrmName).Form
If err <> 0 Then
Set frm = Forms(rstrPFrmName).Controls("sfmSubForm").Form
End If
End If

If rstrCtrName = "XPsection" Then
'设置最后一次的控件的背景透明及字体变细
With ctrLast
' .BorderColor = 9868950
.BorderColor = lngLastBorderColor
If (TypeOf ctrLast Is Label) And (Val(CurrentProject.Properties("FBtnUseSpecialEffect")) <> 0) Then
.SpecialEffect = intLastSpecialEffect
End If
'Val (CurrentProject.Properties("FBtnMouseMoveBorderColor"))
If Left(.Tag, 5) <> "XPbar" Then
.BackStyle = 0
Else
.BackColor = 12632256
End If
'鼠标移出时是否要改变原来控件字体颜色为黑色
'.ForeColor = vbBlack
.FontBold = 0
' .FontSize = 9
If Left(.Tag, 6) = "XPmenu" Then '如果是菜单和工具栏,鼠标离开后不显示边框
.BorderStyle = 0
End If
End With
Set ctrLast = Nothing
Exit Function
End If
Set ctr = frm.Controls(rstrCtrName)
If ctr.Tag = "XPdisable" Then
ctr.ForeColor = RGB(192, 192, 192)
ctr.OnClick = ""
ctr.BorderStyle = 0
ctr.BackStyle = 0
Exit Function
End If
If (TypeOf ctr Is OptionButton) Or (TypeOf ctr Is CheckBox) Then
If ctr.Controls.Count > 0 Then
rstrCtrName = ctr.Controls(0).Name
Set ctr = ctr.Controls(0)
End If
End If
strCtrNameLast = Nz(ctrLast.Name)
If Nz(strCtrNameLast) <> "" Then
' Set ctrLast = frm.Controls(strCtrNameLast)
End If
If Left(ctr.Tag, 2) = "XP" Then '只对标记为XP的按钮起作用
If rstrCtrName <> Nz(strCtrNameLast) Then '如果鼠标还在同一个按钮上, 则跳过程序
If (ctrLast Is Nothing) Then
If ctrLast.FontBold = 1 And Left(ctrLast.Tag, 6) <> "XPhide" Then '设置最后一次的控件的背景透明及字体变细
With ctrLast
'.BorderColor = 9868950
.BorderColor = lngLastBorderColor
If (TypeOf ctrLast Is Label) And (Val(CurrentProject.Properties("FBtnUseSpecialEffect")) <> 0) Then
.SpecialEffect = intLastSpecialEffect
End If
If Left(.Tag, 5) <> "XPbar" Then
.BackStyle = 0
Else
.BackColor = 12632256
End If
'鼠标移出时是否要改变原来控件字体颜色为黑色
'.ForeColor = vbBlack
.FontBold = 0
If Left(.Tag, 6) = "XPmenu" Then '如果是菜单和工具栏,鼠标离开后不显示边框
.BorderStyle = 0
End If
End With
End If
End If
If ctr.FontBold <> 1 And Left(ctr.Tag, 6) <> "XPhide" Then '设置鼠标当前所在的控件的背景颜色及字体变粗

With ctr
If ctr.ForeColor = RGB(192, 192, 192) Then
ctr.ForeColor = lngLastForeColor
ctr.OnClick = "[Event Procedure]"
End If

此处代码太长,详见书中内容
..........
...........
............
..............


If Left(.Tag, 5) <> "XPbar" Then
.BackStyle = 1
End If
.BackColor = Val(CurrentProject.Properties("FBtnMouseMoveBackColor"))
.BorderColor = Val(CurrentProject.Properties("FBtnMouseMoveBorderColor"))
If (TypeOf ctr Is Label) And (Val(CurrentProject.Properties("FBtnUseSpecialEffect")) <> 0) Then
.SpecialEffect = Val(CurrentProject.Properties("FBtnMouseMoveSpecialEffect"))
End If
'鼠标移上时是否要改变字体颜色为黑色
'.ForeColor = vbBlack
.FontBold = 1
If Left(.Tag, 6) = "XPmenu" Then '如果是菜单和工具栏,鼠标在其上显示边框
.BorderStyle = 1
End If
End With
End If
Set ctrLast = ctr
End If
End If
End Function
再创建MouseDown自定义函数,处理各控件鼠标按下的事件,如果不需要鼠标按下事件的效果,也可省略这个函数,代码如下。
'===============================================================================
'-函数名称: glMouseDown
'-功能描述: 设置XP风格的通用鼠标按下事件
'-输入参数说明: 参数1:rstrCtrName String 控件名称
' 参数2:rstrFrmName String 窗体名称
'-返回参数说明: 无
'-使用语法示例: SetMouseMoveDown "cmdSave","frmMainMenu"
'-参考:
'-使用注意: 只适用Label TextBox CommandButton ComboBox OptionButton CheckBox
'-兼容性: 97,2000,XP compatible
'-作者: 王宇虹,改进:王宇虹
'-更新日期: 2002-08-26 ,2002-11-15
'===============================================================================
Public Function glMouseDown(rstrCtrName As String, rstrFrmName As String, rstrPFrmName As String)
On Error Resume Next
Dim ctr As Control
If rstrPFrmName = "" Then
Set ctr = Forms(rstrFrmName).Controls(rstrCtrName)
Else
Set ctr = Forms(rstrPFrmName).Controls(rstrFrmName).Form.Controls(rstrCtrName)
End If
If ctr.Tag = "XPdisable" Then Exit Function
If TypeOf Forms(rstrFrmName).ActiveControl Is TextBox Then
If Forms(rstrFrmName).RecordSource <> "" Then
If Forms(rstrFrmName).Dirty = True Then
Forms(rstrFrmName).ActiveControl.Text = Forms(rstrFrmName).ActiveControl.Text
End If
Else
Forms(rstrFrmName).ActiveControl.Text = Forms(rstrFrmName).ActiveControl.Text
End If
End If

If (TypeOf ctr Is OptionButton) Or (TypeOf ctr Is CheckBox) Then
If ctr.Controls.Count > 0 Then
rstrCtrName = ctr.Controls(0).Name
Set ctr = ctr.Controls(0)
End If
End If
With ctr
If TypeOf ctr Is Label Then
.BackColor = Val(CurrentProject.Properties("FBtnMouseDownBackColor"))
If (Val(CurrentProject.Properties("FBtnUseSpecialEffect")) <> 0) Then
.SpecialEffect = Val(CurrentProject.Properties("FBtnMouseDownSpecialEffect"))
End If
' .BackColor = 8208461
' .ForeColor = vbWhite
End If
End With
End Function
Public Function glUnloadForm(rstrFrmName As String, rstrPFrmName As String)
Dim rs As Recordset
Dim strCpName As String
Dim strIpAddress As String
End Function

Public Function SetClick()
SendKeys "{TAB}"
End Function
再创建MouseUp自定义函数,处理各控件鼠标弹起的事件,代码如下。
'===============================================================================
'-函数名称: glMouseUp
'-功能描述: 设置XP风格的通用鼠标按下事件
'-输入参数说明: 参数1:rstrCtrName String 控件名称
' 参数2:rstrFrmName String 窗体名称
'-返回参数说明: 无
'-使用语法示例: SetMouseMoveUp "cmdSave","frmMainMenu"
'-参考:
'-使用注意: 只适用Label TextBox CommandButton ComboBox OptionButton CheckBox
'-兼容性: 97,2000,XP compatible
'-作者: 王宇虹,改进:王宇虹
'-更新日期: 2002-08-26
'===============================================================================
Public Function glMouseUp(rstrCtrName As String, rstrFrmName As String, rstrPFrmName As String)
Dim ctr As Control
On Error Resume Next
If rstrPFrmName = "" Then
Set ctr = Forms(rstrFrmName).Controls(rstrCtrName)
Else
Set ctr = Forms(rstrPFrmName).Controls(rstrFrmName).Form.Controls(rstrCtrName)
End If

If TypeOf ctr Is ctButton Then
ctr.ReDraw
End If
Exit Function

If ctr.Tag = "XPdisable" Then Exit Function

If (TypeOf ctr Is OptionButton) Or (TypeOf ctr Is CheckBox) Then
If ctr.Controls.Count > 0 Then
rstrCtrName = ctr.Controls(0).Name
Set ctr = ctr.Controls(0)
End If
End If

With ctr
If (TypeOf ctr Is Label) Then
.BackColor = Val(CurrentProject.Properties("FBtnMouseMoveBackColor"))
.BorderColor = Val(CurrentProject.Properties("FBtnMouseMoveBorderColor"))
If (Val(CurrentProject.Properties("FBtnUseSpecialEffect")) <> 0) Then
.SpecialEffect = Val(CurrentProject.Properties("FBtnMouseMoveSpecialEffect"))
End If

End If

End With

End Function

   

发表评论】【告诉好友】【打印此文】【关闭窗口
  网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
处理 URL 时服务器出错。请与系统管理员联系。