Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ToNy_EsP en 12 Julio 2009, 14:20 pm



Título: Dos dudillas
Publicado por: ToNy_EsP en 12 Julio 2009, 14:20 pm
Buenas a todos, antes de todo, gracias de antemano  :D,

Bueno, iré directo al grano:

1ª pregunta:

Tengo una imágen (Image1), quiero saber qué código poner para que cuando el ratón pase por encima de esa imágen la Image1 pase a ser otra (Image2), pero que cuando el ratón deje de estar encima de la Image2 pues se cambie de nuevo a la Image 1.

Un ejemplo es, los botones cerrar, minimizar y maximizar de una ventana del navegador por ejemplo, cuando pones el ratoón por encima cambia de imágen.

2ª pregunta:

He leído muchísimo sobre relaciones de base de datos (SQL) con Visual Basic. Pero aún así no llegué a nada  :-(. 

Pues lo que querría hacer es lo siguiente: Tengo un Form (Form1), en ese form hay dos textbox, un commandbutton, un label y un Image. Pus quiero hacer que al pulsar en ese Commandbutton (command1) se revise en una base de datos SQL (por ejemplo una que tengo que se llama blabla_db1) el usuario y contraseña introducidos, y ponga en el Label (label1) si el usuario/ contraseña fue aceptada o fueron erróneas y, finalmente, si fueron aceptadas el usuario/ contraseña, que la Image1 pase de Enabled = False a Enabled = True.

Ya sé, ya sé. Es difícil, busqué en el foro y en todos lados, encontré cosillas sobre relaciones de bases de datos SQL con VB pero la verdad, me sirvieron de poco  :-(.

Bueno, eso es todo, muchas gracias de antemano  :D.

Un saludo


Título: Re: Dos dudillas
Publicado por: h0oke en 12 Julio 2009, 15:44 pm
La propiedad MouseMove te permite controlar ese tipo de eventos.
Luego unicamente, con lo siguiente:

Image1.Picture=LoadImage(path1 or path2)

Eso bastará.

Con respecto a bd's no entiendo que no te queda claro, es cuestión de práctica.

Un saludo


Título: Re: Dos dudillas
Publicado por: ToNy_EsP en 12 Julio 2009, 17:14 pm
Disculpa mi ignorancia, pero no encuentro la propiedad MouseMove... Uso el VB 6.

Y, ¿Este código dónde iría, en un timer? :

Código
  1. Image1.Picture=LoadImage(path1 or path2)
  2.  

Y respecto a las Bd´s, es cuestión de práctica, es verdad  :P, pero es que llevo 1 mes intentándolo y aún no lo conseguí, por eso a ver si me podríais hechar una mano  :D.

Un saludo y gracias


Título: Re: Dos dudillas
Publicado por: & eDu & en 12 Julio 2009, 17:37 pm
Código
  1. Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Image1.Picture=LoadImage(path1 or path2)
  3. End Sub


Título: Re: Dos dudillas
Publicado por: ToNy_EsP en 12 Julio 2009, 18:30 pm
Código
  1. Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Image1.Picture=LoadImage(path1 or path2)
  3. End Sub

Gracias  :P.

Código
  1. Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Image2.Picture = LoadImage(App.Path & "\cerrar.gif" Or App.Path & "\cerrariluminado.gif")
  3. End Sub
  4.  

Ese es el código que he puesto (ya creé la carpeta con images y todo eso... ahí no está el error.

Al iniciar el programa y pasar el cursor por encima de la Imagen 2 me da un error: "Sub or fuction not defined" o algo así... Y el error me lo marca en: LoadImage.

¿Qué hay que declarar alguna función o algo?.

Muchas gracias


Título: Re: Dos dudillas
Publicado por: seba123neo en 12 Julio 2009, 18:32 pm
Hola, es que no es LoadImage es LoadPicture  :P

saludos.


Título: Re: Dos dudillas
Publicado por: ToNy_EsP en 12 Julio 2009, 19:13 pm
Hola, es que no es LoadImage es LoadPicture  :P

saludos.

Haha, ya no me aparece el error ese, pero me aparece otro  :xD.

Run-Time Error '13':
Type mismatch


Y el código es éste:

Código
  1. Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. Image2.Picture = LoadPicture(App.Path & "\images\cerrar.gif" Or App.Path & "\images\cerrariluminado.gif")
  3. End Sub
  4.  

Y como ya dije, todo el project está guardado en una carpeta y dentro de esa carpeta hay otra que se llama "images" que dentro de esa es donde se encuentran las imágenes .GIF.

Un saludo y gracias nuevamente


Título: Re: Dos dudillas
Publicado por: BlackZeroX en 12 Julio 2009, 21:53 pm
Usa las APIS:

Código
  1. Public Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
  2. Public Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long
  3. Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
  4.  

GetCursorPos para detectar el movimiento y posicion del mouse.
GetWindowsRect para saber el "Rect" del boton u otro control
IntersectRect para detectar la colición del "Rect" del mouse con el del control y saber SI REALMENTE Canbiar la Imagen.

Es algo lavoriosa pero eficaz xP, es la que mas me gusta, pero creo que hay otras formas pero como dije usando estas nunca falla xP

Por cierto si usas Mouse Move gasta el procesador y esta continuamente usando el procesador xS y no creo que eso quieras verdad xP.¡!


Título: Re: Dos dudillas
Publicado por: h0oke en 13 Julio 2009, 00:43 am
Unicamente puse ese código de ejemplo, como demostración de lo que se podía hacer, solo fue un pseudo-vb ^^.

Un saludo


Título: Re: Dos dudillas
Publicado por: byway en 13 Julio 2009, 18:00 pm
Código
  1.  
  2. Private Sub Form_Load()
  3. Image2.Picture = LoadPicture(App.Path & "\images\cerrar.gif")
  4. End Sub
  5.  
  6. Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  7. Image2.Picture = LoadPicture(App.Path & "\images\cerrariluminado.gif")
  8. End Sub


Título: Re: Dos dudillas
Publicado por: ToNy_EsP en 13 Julio 2009, 23:14 pm
Código
  1.  
  2. Private Sub Form_Load()
  3. Image2.Picture = LoadPicture(App.Path & "\images\cerrar.gif")
  4. End Sub
  5.  
  6. Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  7. Image2.Picture = LoadPicture(App.Path & "\images\cerrariluminado.gif")
  8. End Sub

:D, ahora mismo no estoy en el PC que tiene el Visual basic, pero en cuanto vaya lo pruebo.

Por cierto, cuanto pasas el ratón por encima se pone la otra imágen pero, cuando deja de estar el ratón encima de la imágen, ¿vuelve a la imágen principal?

Un saludo


Título: Re: Dos dudillas
Publicado por: seba123neo en 14 Julio 2009, 01:15 am
no, tenes que reestablecerla usando el evento mousemove de otro control, por ejemplo el formulario y ahi cambiar la imagen...pero como te dijeron usa otro metodo con api's para saber cuando se "entra" y "sale" del control , asi no estas constantemente cambiando la imagen...

saludos.