|
|
|||||||||
|
|||||||||
|
|||||||||
| |
||
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Hi,
I'm stuck at the following challenge: in my (first) MS Excell application, I want to show info messages when the mouse moves over the commandbuttons. What I got sofar is the "mouse-over event" , but I can't find a way to view a message for a short time, when the mouse position is over the specific button! Can anyone help? Thanks, Paul |
|
#2
|
|||
|
|||
|
Paul -
I found this on another site. I didn't really read through it. Hope it helps. - John It can be emulated with control toolbox buttons using a few frigs. Here is an example for a button named CmdTooltipTest To do this, put the following code in a standard code module (making it available to the whole workbook). '------------- bas module ------------------------ Option Explicit Declare Function GetSystemMetrics Lib "user32" ( _ ByVal nIndex As Long) As Long Declare Function GetSysColor Lib "user32" ( _ ByVal nIndex As Long) As Long Public Function CreateToolTipLabel(objHostOLE As Object, _ sTTLText As String) As Boolean Dim objToolTipLbl As OLEObject Dim objOLE As OLEObject Const SM_CXSCREEN = 0 Const COLOR_INFOTEXT = 23 Const COLOR_INFOBK = 24 Const COLOR_WINDOWFRAME = 6 Application.ScreenUpdating = False 'just while label is created and formatted For Each objOLE In ActiveSheet.OLEObjects If objOLE.Name = "TTL" Then objOLE.Delete 'only one can exist at a time Next objOLE 'create a label control... Set objToolTipLbl = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1") '...and format it to look as a ToolTipWindow With objToolTipLbl .Top = objHostOLE.Top + objHostOLE.Height - 10 .Left = objHostOLE.Left + objHostOLE.Width - 10 .Object.Caption = sTTLText .Object.Font.Size = 8 .Object.BackColor = GetSysColor(COLOR_INFOBK) .Object.BackStyle = 1 .Object.BorderColor = GetSysColor(COLOR_WINDOWFRAME) .Object.BorderStyle = 1 .Object.ForeColor = GetSysColor(COLOR_INFOTEXT) .Object.TextAlign = 1 .Object.AutoSize = False .Width = GetSystemMetrics(SM_CXSCREEN) .Object.AutoSize = True .Width = .Width + 2 .Height = .Height + 2 .Name = "TTL" End With DoEvents Application.ScreenUpdating = True 'delete the tooltip window after 3 secs Application.OnTime Now() + TimeValue("00:00:05"), "DeleteToolTipLabels" End Function Public Sub DeleteToolTipLabels() Dim objToolTipLbl As OLEObject For Each objToolTipLbl In ActiveSheet.OLEObjects If objToolTipLbl.Name = "TTL" Then objToolTipLbl.Delete Next objToolTipLbl End Sub '------------end of bas module ------------- Then in the code module for the sheet that has the control, add some mousedown event code. To get to this module, right-click on the sheet name tab, and select code (or double-click on the sheet name from within the VB IDE). Here is an example of how to call it, assuming that the command button is called cmdTooltipTest Private Sub CmdTooltipTest_MouseMove(ByVal Button As Integer, _ ByVal Shift As Integer, _ ByVal X As Single, _ ByVal Y As Single) Dim objTTL As OLEObject Dim fTTL As Boolean For Each objTTL In ActiveSheet.OLEObjects fTTL = objTTL.Name = "TTL" Next objTTL If Not fTTL Then CreateToolTipLabel cmdTooltipTest, "ToolTip Label" End If End Sub |
![]() |
| Viewing: ASP Free Forums > Programming > Visual Basic Programming > Info message excell when mouse-over event |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|