• Domingo 22 de Diciembre de 2024, 14:48

Autor Tema:  Saber Por Donde Pasa El Mouse En Los Objeto  (Leído 3715 veces)

ldvgsmca

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Saber Por Donde Pasa El Mouse En Los Objeto
« en: Lunes 5 de Febrero de 2007, 21:46 »
0
Saludos a todos.


Como hago para saber cuando el mouse sale de un objeto que esta sobre otro objeto, es decir

Tengo un frm dentro de el tengo un picture y dentro del picture tengo un frame
todos estos objeto estan centrados y cada uno mas pequeno que otro.

La pregunta como hago para saber cuando el puntero del mouse esta fuera del frame o cuando esta fuera del picture


Gracias

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #1 en: Lunes 5 de Febrero de 2007, 22:49 »
0
No se si esto lo que quieres pero intenta haber que sale...

Código: Text
  1. Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Text1.Text = "dentrol del frame"
  3. End Sub
  4.  
  5. Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  6. Text1.Text = "dentro del picture"
  7. End Sub
  8.  

 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



ldvgsmca

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #2 en: Lunes 5 de Febrero de 2007, 23:19 »
0
Cita de: "elnapster"
No se si esto lo que quieres pero intenta haber que sale...

Código: Text
  1. Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Text1.Text = "dentrol del frame"
  3. End Sub
  4.  
  5. Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  6. Text1.Text = "dentro del picture"
  7. End Sub
  8.  

 :comp:
realmento no es lo que quiero.

lo que quiero es saber cuando el mouse sale del objeto frame por decir cualquier cosa.

mi problema es que tengo un picture_a dentro de otro picture_b.

el obj picture_a tiene a su vez varios obj, como textbox, etc, lo que quiero es controlar que el usuario no le de click a otro obj que este fuera del picture_a para que termine de llenar los campos del picture_a si logro sabe cuando el mouse esta fuera del picture_a puedo mandar una alerte de mensaje al usuario


gracias

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #3 en: Lunes 5 de Febrero de 2007, 23:36 »
0
Bueno si asi (bueno es es lo que creo) prueba hacer una funcion que verique los campos que son necesarios para poder pasar al otro  Picture_b, mandas a llamar a tu funcion desde el evento  mouse move del picture

Si es asi que es lo que medio entendi prueba hacer esto:



Código: Text
  1. Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2.   If Not verifica Then
  3.         Picture_b.SetFocus: Text1.SetFocus
  4.            End If
  5. End Sub
  6.  
  7. Public Function verifica() As Boolean
  8. If Text1.Text <> "" And Text2.Text <> "" And Text3.Text <> "" Then
  9.     verifica = True
  10.     txtgeneral.Text = ""
  11. Else
  12.     txtgeneral.Text = "Uno de los campos esta vacio"
  13. End If
  14. End Function
  15.  

Claro que yo solo tengo dentro de un picture_a un commandButton
en el Picture_b 3 textbox
y un textbox general que esta en la forma general el cual me avisa lo del error , vos tenes que ponerle sus repectivos mensajes con sus respectiso setfocus en los objetos de cada uno de los pictures......

Espero que sea asi .....
 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #4 en: Martes 6 de Febrero de 2007, 00:57 »
0
Buenas.

Como cre q me hice entender en el post anterior, no existe un evento que ocurra al salir el mouse de un objeto en VB ( :blink: )

Saludos
The sweet smell of a great sorrow lies over the land.


ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #5 en: Martes 6 de Febrero de 2007, 01:08 »
0
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 .... <_<
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #6 en: Martes 6 de Febrero de 2007, 01:20 »
0
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
  1.  
  2. Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  3.  
  4. Public Type POINTAPI
  5.         x As Long
  6.         y As Long
  7. End Type
  8.  
  9.  
  10. Public Function isOver(ByRef x As Integer, ByRef y As Integer) As Boolean
  11.  
  12.   Dim a As Long
  13.   Dim coo As POINTAPI
  14.  
  15.   a = GetCursorPos(coo)
  16.  
  17.   x = coo.x * Screen.TwipsPerPixelX
  18.   y = coo.y * Screen.TwipsPerPixelY
  19.  
  20.   isOver = a
  21.  
  22. End Function
  23.  
  24.  

y en el formulario el siguiente:

Código: Text
  1.  
  2. Private Sub Timer1_Timer()
  3.   Dim x As Integer, y As Integer
  4.   Dim RetVal As Boolean
  5.  
  6.  
  7.   RetVal = isOver(x, y)
  8.  
  9.   If RetVal = False Then
  10.     MsgBox "Error", , "+ Error +"
  11.     Exit Sub
  12.   End If
  13.  
  14.   x = x - Me.Left - 60
  15.   y = y - Me.Top - 345
  16.  
  17.   x = x - Picture1.Left
  18.   y = y - Picture1.Top
  19.  
  20.   If (x < 0) Or (x > Picture1.Width) Or (y < 0) Or (y > Picture1.Height) Then
  21.     Picture1.BackColor = RGB(255, 0, 0)
  22.   Else
  23.     Picture1.BackColor = RGB(0, 0, 255)
  24.   End If
  25.  
  26. End Sub
  27.  
  28.  

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
The sweet smell of a great sorrow lies over the land.


ldvgsmca

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #7 en: Martes 6 de Febrero de 2007, 03:03 »
0
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
  1.  
  2. Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  3.  
  4. Public Type POINTAPI
  5.         x As Long
  6.         y As Long
  7. End Type
  8.  
  9.  
  10. Public Function isOver(ByRef x As Integer, ByRef y As Integer) As Boolean
  11.   
  12.   Dim a As Long
  13.   Dim coo As POINTAPI
  14.   
  15.   a = GetCursorPos(coo)
  16.   
  17.   x = coo.x * Screen.TwipsPerPixelX
  18.   y = coo.y * Screen.TwipsPerPixelY
  19.   
  20.   isOver = a
  21.   
  22. End Function
  23.  
  24.  

y en el formulario el siguiente:

Código: Text
  1.  
  2. Private Sub Timer1_Timer()
  3.   Dim x As Integer, y As Integer
  4.   Dim RetVal As Boolean
  5.  
  6.  
  7.   RetVal = isOver(x, y)
  8.  
  9.   If RetVal = False Then
  10.     MsgBox "Error", , "+ Error +"
  11.     Exit Sub
  12.   End If
  13.  
  14.   x = x - Me.Left - 60
  15.   y = y - Me.Top - 345
  16.   
  17.   x = x - Picture1.Left
  18.   y = y - Picture1.Top
  19.   
  20.   If (x < 0) Or (x > Picture1.Width) Or (y < 0) Or (y > Picture1.Height) Then
  21.     Picture1.BackColor = RGB(255, 0, 0)
  22.   Else
  23.     Picture1.BackColor = RGB(0, 0, 255)
  24.   End If
  25.   
  26. End Sub
  27.  
  28.  

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
realmente esto es lo que necesito, muy sabio tu codigo.....



gracias por tu ayuda

saludos

ldvgsmca

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #8 en: Martes 6 de Febrero de 2007, 03:11 »
0
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
  1.  
  2. Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  3.  
  4. Public Type POINTAPI
  5.         x As Long
  6.         y As Long
  7. End Type
  8.  
  9.  
  10. Public Function isOver(ByRef x As Integer, ByRef y As Integer) As Boolean
  11.   
  12.   Dim a As Long
  13.   Dim coo As POINTAPI
  14.   
  15.   a = GetCursorPos(coo)
  16.   
  17.   x = coo.x * Screen.TwipsPerPixelX
  18.   y = coo.y * Screen.TwipsPerPixelY
  19.   
  20.   isOver = a
  21.   
  22. End Function
  23.  
  24.  

y en el formulario el siguiente:

Código: Text
  1.  
  2. Private Sub Timer1_Timer()
  3.   Dim x As Integer, y As Integer
  4.   Dim RetVal As Boolean
  5.  
  6.  
  7.   RetVal = isOver(x, y)
  8.  
  9.   If RetVal = False Then
  10.     MsgBox "Error", , "+ Error +"
  11.     Exit Sub
  12.   End If
  13.  
  14.   x = x - Me.Left - 60
  15.   y = y - Me.Top - 345
  16.   
  17.   x = x - Picture1.Left
  18.   y = y - Picture1.Top
  19.   
  20.   If (x < 0) Or (x > Picture1.Width) Or (y < 0) Or (y > Picture1.Height) Then
  21.     Picture1.BackColor = RGB(255, 0, 0)
  22.   Else
  23.     Picture1.BackColor = RGB(0, 0, 255)
  24.   End If
  25.   
  26. End Sub
  27.  
  28.  

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
realmente esto es lo que necesito, muy sabio tu codigo.....



gracias por tu ayuda

saludos
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

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #9 en: Martes 6 de Febrero de 2007, 03:29 »
0
Me alegra q halla servido  :D

Aunque avabo de darme cuenta que para el ocx

Esto:
Código: Text
  1.  
  2.   x = x - Me.Left - 60
  3.  y = y - Me.Top - 345
  4.  
  5.  

Lo cambias por esto:

Código: Text
  1.  
  2.   x = x - Me.Left
  3.  y = y - Me.Top
  4.  
  5.  

Ya que las restas esas son para los bordes del formulario, los cuales el ocx no tiene.

Saludos
The sweet smell of a great sorrow lies over the land.


ldvgsmca

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #10 en: Jueves 8 de Febrero de 2007, 20:17 »
0
Cita de: "Epa"
Me alegra q halla servido  :D

Aunque avabo de darme cuenta que para el ocx

Esto:
Código: Text
  1.  
  2.   x = x - Me.Left - 60
  3.  y = y - Me.Top - 345
  4.  
  5.  

Lo cambias por esto:

Código: Text
  1.  
  2.   x = x - Me.Left
  3.  y = y - Me.Top
  4.  
  5.  

Ya que las restas esas son para los bordes del formulario, los cuales el ocx no tiene.

Saludos
gracias  tu solucion fue efectiva, pero ahora nacesito preguntarte asi como la funcion de la API GetCursorPos, para obtener la posicion del puntero habra una para posicionar.

te lo pregunto porque necesito hacer lo siguiente.


cuando detecte que estoy fuera del picture1 necesito colocar el puntero del mouse dentro del objeto


gracias

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Saber Por Donde Pasa El Mouse En Los Objeto
« Respuesta #11 en: Viernes 9 de Febrero de 2007, 01:15 »
0
buenas

Public Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long

x = (form.left + picture.left + picture.width / 2) / 15
y = (form.top + picture.left + picture.height / 2) / 15

Llamas a la funcion y te posicionara el mouse en el centro del control.

Saludos
The sweet smell of a great sorrow lies over the land.