在线急救:鼠标移动到标签上,标签变红色.移走后,标签又为黑色.象超链接样的

xuhaoran 2003-08-29 11:34:42
我想做一个控件:鼠标移动到标签上,标签变红色.移走后,标签又为黑色.象超链接样的.但我能判断鼠标Move移过来的事件,但它移走时,却没有事件发生.急急急.不知道有什么办法可以判断鼠标移走的事件.谢谢了
...全文
137 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
射天狼 2003-08-29
  • 打赏
  • 举报
回复
标签没有hWnd属性,只能写在MOUSEMOVE事件里了,然后在其它控件的MOUSEMOVE事件里把颜色改回来,多的话就自己写控件吧~
vansoft 2003-08-29
  • 打赏
  • 举报
回复
就一个lable何必那么烦
用mousemove就可以了.
道素 2003-08-29
  • 打赏
  • 举报
回复
可以改进一下,就忽略大小写,如:
Sub HighlightText(ControlName As String)

For Each objLabel In Me
If ucase(objLabel.Name) = ucase(ControlName) Then
objLabel.ForeColor = vbBlue
End If
Next objLabel

End Sub
道素 2003-08-29
  • 打赏
  • 举报
回复
看上面的例子注意参数传进去的名字和label实际名字大小写一定一样
道素 2003-08-29
  • 打赏
  • 举报
回复
一个例子:
Dim objLabel As Label

Sub HighlightText(ControlName As String)

For Each objLabel In Me
If objLabel.Name = ControlName Then
objLabel.ForeColor = vbBlue
End If
Next objLabel

End Sub

Sub HighlightBorder(ControlName As String)

For Each objLabel In Me
If objLabel.Name = ControlName Then
objLabel.BorderStyle = 1
End If
Next objLabel

End Sub

Sub HighlightBG(ByRef ControlName As String)


For Each objLabel In Me
Debug.Print objLabel.Name
If objLabel.Name = ControlName Then

objLabel.BackColor = vbYellow
End If
Next objLabel

End Sub


Sub HighlightBold(ControlName As String)

For Each objLabel In Me
If objLabel.Name = ControlName Then
objLabel.FontBold = True
End If
Next objLabel

End Sub


Sub ResetEffect()

For Each objLabel In Me

objLabel.ForeColor = vbBlack
objLabel.BorderStyle = 0
objLabel.BackColor = Me.BackColor
Next objLabel


End Sub


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
ResetEffect
End Sub

Private Sub lblBackground_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
HighlightBG ("lblBackground")
End Sub

Private Sub lblBorder_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
HighlightBorder ("lblBorder")
End Sub

Private Sub lblForeGround_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
HighlightText ("lblForeGround")
End Sub
CobraKing 2003-08-29
  • 打赏
  • 举报
回复
实在不行可以考虑一个笨办法——我以前用过:)
就是将你希望变色的标签命名为一个数组(这样代码量最少)。在它们的MouseMove事件中字体变色。在这些标签的容器(Form、PictureBox、Frame等)的MouseMove事件中将它们的颜色恢复。
lihonggen0 2003-08-29
  • 打赏
  • 举报
回复
http://www.china-askpro.com/msg5/qa58.shtml
lihonggen0 2003-08-29
  • 打赏
  • 举报
回复
http://www.china-askpro.com/msg5/qa58.shtml
griefforyou 2003-08-29
  • 打赏
  • 举报
回复
没办法............标签控件没有hwnd属性
可以自已做一个控件...
yijiansong 2003-08-29
  • 打赏
  • 举报
回复
getFocus
LOSTFOCUS
lubberland 2003-08-29
  • 打赏
  • 举报
回复
去下载一个officexpbutton.ocx控件,网上很多的,通过改控件属性可以实现上述功能。
of123 2003-08-29
  • 打赏
  • 举报
回复
mousemove是间断触发的。如果飞快移出,就可能错过。

1 不要用容器,直接在Form_MouseMove中改回颜色。
2 将距离Label较近的控件的Form_MouseMove都加上改回正常颜色的代码。
CrazyHosptial 2003-08-29
  • 打赏
  • 举报
回复
强力支持!!小弟做超连接向来如此....
放上一个label,只要指任一下label的mousemove事件就好了
以及设置改变label的颜色就好了~~
大概就像这样:
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = &HFF&
Label1.Caption = "http://www.csdn.net"
End Sub
然后你在指任一下鼠标的图案就好了~~~
xuhaoran 2003-08-29
  • 打赏
  • 举报
回复
非常感谢上面的朋友.但我在标签中的MOUSEMOVE事件中写了变色.再在容器中的MOUSEMOVE中写了把颜色变回来.这样我写了一个控件.但我发现如果我的鼠标正常的移开容器,结果当然是没有问题.但是我发现如果我飞快的把鼠标移走.它并没有激发容器的MOUSEMOVE事件.所以造成了我现在可以把效色变了.但如果我飞快的移动鼠标时.颜色变不回来.这是为什么呢???

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧