Programación General > VBA
Saber Por Donde Pasa El Mouse En Los Objeto
ElNapster:
Pero creo que el mouse move .. podria calificar para eso .. o me equivoco ? cual es el link de ese post ? sera que me lo podes indicar que no se como buscarlo.. intente la busqueda pero me muestra unos que nada que ver con eso que pusiste .... <_<
Epa:
Buenas.
Crea un proyecto con 1 form y 1 modulo
en el form agrega un picturebox y un timer. dejale los nombres genericos, al timer ponle el intervalo que quieras.
Luego agrega el siguiente codigo en el modulo:
--- Código: Text --- Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Public Type POINTAPI x As Long y As LongEnd Type Public Function isOver(ByRef x As Integer, ByRef y As Integer) As Boolean Dim a As Long Dim coo As POINTAPI a = GetCursorPos(coo) x = coo.x * Screen.TwipsPerPixelX y = coo.y * Screen.TwipsPerPixelY isOver = a End Function
y en el formulario el siguiente:
--- Código: Text --- Private Sub Timer1_Timer() Dim x As Integer, y As Integer Dim RetVal As Boolean RetVal = isOver(x, y) If RetVal = False Then MsgBox "Error", , "+ Error +" Exit Sub End If x = x - Me.Left - 60 y = y - Me.Top - 345 x = x - Picture1.Left y = y - Picture1.Top If (x < 0) Or (x > Picture1.Width) Or (y < 0) Or (y > Picture1.Height) Then Picture1.BackColor = RGB(255, 0, 0) Else Picture1.BackColor = RGB(0, 0, 255) End If End Sub
Ejecuta la aplicacion y mueve el mouse sobre el picturebox. Wala :P
No era tan complicado, ahora solo tienes que adaptarlo a tu aplicacion, en el evento mousemove del control activas el timer, luego una vez que salio lo desactivas, para ahorrar un poco de memoria.
Saludos
Este es
http://foros.solocodigo.com/index.php?showtopic=26834
ldvgsmca:
--- Cita de: "Epa" --- Buenas.
Crea un proyecto con 1 form y 1 modulo
en el form agrega un picturebox y un timer. dejale los nombres genericos, al timer ponle el intervalo que quieras.
Luego agrega el siguiente codigo en el modulo:
--- Código: Text --- Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Public Type POINTAPI x As Long y As LongEnd Type Public Function isOver(ByRef x As Integer, ByRef y As Integer) As Boolean Dim a As Long Dim coo As POINTAPI a = GetCursorPos(coo) x = coo.x * Screen.TwipsPerPixelX y = coo.y * Screen.TwipsPerPixelY isOver = a End Function
y en el formulario el siguiente:
--- Código: Text --- Private Sub Timer1_Timer() Dim x As Integer, y As Integer Dim RetVal As Boolean RetVal = isOver(x, y) If RetVal = False Then MsgBox "Error", , "+ Error +" Exit Sub End If x = x - Me.Left - 60 y = y - Me.Top - 345 x = x - Picture1.Left y = y - Picture1.Top If (x < 0) Or (x > Picture1.Width) Or (y < 0) Or (y > Picture1.Height) Then Picture1.BackColor = RGB(255, 0, 0) Else Picture1.BackColor = RGB(0, 0, 255) End If End Sub
Ejecuta la aplicacion y mueve el mouse sobre el picturebox. Wala :P
No era tan complicado, ahora solo tienes que adaptarlo a tu aplicacion, en el evento mousemove del control activas el timer, luego una vez que salio lo desactivas, para ahorrar un poco de memoria.
Saludos
Este es
http://foros.solocodigo.com/index.php?showtopic=26834
--- Fin de la cita ---
realmente esto es lo que necesito, muy sabio tu codigo.....
gracias por tu ayuda
saludos
ldvgsmca:
--- Cita de: "ldvgsmca" ---
--- Cita de: "Epa" --- Buenas.
Crea un proyecto con 1 form y 1 modulo
en el form agrega un picturebox y un timer. dejale los nombres genericos, al timer ponle el intervalo que quieras.
Luego agrega el siguiente codigo en el modulo:
--- Código: Text --- Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Public Type POINTAPI x As Long y As LongEnd Type Public Function isOver(ByRef x As Integer, ByRef y As Integer) As Boolean Dim a As Long Dim coo As POINTAPI a = GetCursorPos(coo) x = coo.x * Screen.TwipsPerPixelX y = coo.y * Screen.TwipsPerPixelY isOver = a End Function
y en el formulario el siguiente:
--- Código: Text --- Private Sub Timer1_Timer() Dim x As Integer, y As Integer Dim RetVal As Boolean RetVal = isOver(x, y) If RetVal = False Then MsgBox "Error", , "+ Error +" Exit Sub End If x = x - Me.Left - 60 y = y - Me.Top - 345 x = x - Picture1.Left y = y - Picture1.Top If (x < 0) Or (x > Picture1.Width) Or (y < 0) Or (y > Picture1.Height) Then Picture1.BackColor = RGB(255, 0, 0) Else Picture1.BackColor = RGB(0, 0, 255) End If End Sub
Ejecuta la aplicacion y mueve el mouse sobre el picturebox. Wala :P
No era tan complicado, ahora solo tienes que adaptarlo a tu aplicacion, en el evento mousemove del control activas el timer, luego una vez que salio lo desactivas, para ahorrar un poco de memoria.
Saludos
Este es
http://foros.solocodigo.com/index.php?showtopic=26834
--- Fin de la cita ---
realmente esto es lo que necesito, muy sabio tu codigo.....
gracias por tu ayuda
saludos
--- Fin de la cita ---
saludos y gracias a la vez, realmente esta es la solucion y te felicito por el analisis de tu codigo y dejame decirte que eso es lo que necesita tambien para lo de mi OCX.
Gracias
Epa:
Me alegra q halla servido :D
Aunque avabo de darme cuenta que para el ocx
Esto:
--- Código: Text --- x = x - Me.Left - 60 y = y - Me.Top - 345
Lo cambias por esto:
--- Código: Text --- x = x - Me.Left y = y - Me.Top
Ya que las restas esas son para los bordes del formulario, los cuales el ocx no tiene.
Saludos
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa