[分享]天天控件学习帖
控件在应用程序中使用频率非常高,它非常有魅力,哪怕只是一个小小的属性或是事件都能创造出自己的东西。(我以EXCEL为载体)
下面就以一个例子为说明吧。
控件的突显及隐现
1、首先在EXCEL的VBE中插入一个用户窗体。在上面添加一个标签控件和命令按钮
控件\属性 Name Caption backcolor visible
UserForm FrmSorH 按钮突显隐藏范例
Label lblExd "" red
commandbutton cmdShow 显示 False
2、特点
启用窗体时,不显示命令按钮,当鼠标移到命令按钮的位置时,命令按钮显现,当鼠标移到标签控件时,控件会突出显示。
3、程序代码清单
Option Explicit
Private Sub CmdShow_Click()
MsgBox "这是一个按钮突显隐藏的范例。" & vbCrLf & vbCrLf & _
"仅仅是利用了MouseMove事件!", vbOKOnly + vbInformation, "Hello"
End Sub
Private Sub LblExd_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
LblExd.SpecialEffect = fmSpecialEffectRaised
FrmSorH.Caption = "突显标签控件"
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
Dim strFrmCaption As String
LblExd.SpecialEffect = fmSpecialEffectFlat
LblExd.Caption = "FMouseX: " & X & " FMouseY: " & Y & vbCrLf & _
"LblW: " & LblExd.Width & " LblH: " & LblExd.Height & vbCrLf & _
"LblL: " & LblExd.Left & " LblT: " & LblExd.Top & vbCrLf & _
"FormW: " & FrmSorH.Width & " FormH: " & FrmSorH.Height & vbCrLf & _
"CmdW: " & CmdShow.Width & " CmdH: " & CmdShow.Height & vbCrLf & _
"CmdL: " & CmdShow.Left & " CmdT: " & CmdShow.Top
If (X >= CmdShow.Left) And (X <= CmdShow.Left + CmdShow.Width) And _
(Y >= CmdShow.Top) And (Y <= CmdShow.Top + CmdShow.Height) Then
'利用X,Y坐标来判断鼠标当前的位置是否位于命令按钮内
FrmSorH.Caption = "命令按钮显现"
CmdShow.Visible = True
Else
CmdShow.Visible = False
If X < CmdShow.Left Then
strFrmCaption = "MouseX还差Cmd左边" & CmdShow.Left - X
Else
If X > CmdShow.Left + CmdShow.Width Then
strFrmCaption = "MouseX超过Cmd宽度" & _
X - CmdShow.Left - CmdShow.Width
Else
strFrmCaption = "MouseX在Cmd宽度范围内"
End If
End If
If Y < CmdShow.Top Then
strFrmCaption = strFrmCaption & " MouseY还差Cmd顶部" & CmdShow.Top - Y
Else
If Y > CmdShow.Top + CmdShow.Height Then
strFrmCaption = strFrmCaption & " MouseY超过Cmd高度" & _
Y - CmdShow.Top - CmdShow.Height
Else
strFrmCaption = strFrmCaption & " MouseY在Cmd高度范围内"
End If
End If
FrmSorH.Caption = strFrmCaption
End If
End Sub
具体附件可在:http://yigepure.blog.excelhome.net/user1/yigepure/archives/2006/391.html
下载它的附件例子。