Programación General > VBA

 Saber Por Donde Pasa El Mouse En Los Objeto

<< < (2/3) > >>

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 &#34;user32&#34; (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 &#34;Error&#34;, , &#34;+ Error +&#34;    Exit Sub  End If   x = x - Me.Left - 60  y = y - Me.Top - 345    x = x - Picture1.Left  y = y - Picture1.Top    If (x &#60; 0) Or (x &#62; Picture1.Width) Or (y &#60; 0) Or (y &#62; 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 &#34;user32&#34; (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 &#34;Error&#34;, , &#34;+ Error +&#34;    Exit Sub  End If   x = x - Me.Left - 60  y = y - Me.Top - 345    x = x - Picture1.Left  y = y - Picture1.Top    If (x &#60; 0) Or (x &#62; Picture1.Width) Or (y &#60; 0) Or (y &#62; 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 &#34;user32&#34; (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 &#34;Error&#34;, , &#34;+ Error +&#34;    Exit Sub  End If   x = x - Me.Left - 60  y = y - Me.Top - 345    x = x - Picture1.Left  y = y - Picture1.Top    If (x &#60; 0) Or (x &#62; Picture1.Width) Or (y &#60; 0) Or (y &#62; 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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa