SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: SpeedCAD en Sábado 13 de Diciembre de 2003, 04:57

Título: Otra De Un Ocx
Publicado por: SpeedCAD en Sábado 13 de Diciembre de 2003, 04:57
Hola...

Con el mismo OCX que estoy creando ahora quiero hacer lo siguiente:

Cada vez que el mouse pase por el control este tome un color azul (por ejemplo), pero cuando el mouse sale del control vuelve a su color original.

Yo se que esto se puede hacer con el evento MouseMove, y me funciona pero solo cuando paso el mouse por el control, pero una vez que sale el mouse del control se queda con el color azul. Mi idea es que detecte que el mouse ya no esta en el control y vuelva a su color original.

Espero que se entienda la idea  :hola:
Título: Re: Otra De Un Ocx
Publicado por: Brroz en Sábado 13 de Diciembre de 2003, 08:24
Hola SpeedCad.

Para conseguir lo que buscas, y en espera de conseguir otra forma mejor, podrías emplear este truquillo:

Para simplificar imagina que tu ocx fuese un PictureBox, el cúal queremos que cambie de color al pasar el mouse sobre él. Añádele por ejemplo un control label llamado Label1, con la propiedad visible = False. A este label asígnale a la propiedad DragIcon un icono todo de un sólo color y con máscara de transparencia de ese color (primero pruébalo sin asignar icono y verás porque te digo esto). Luego fíjate en este código:

Código: Text
  1.  
  2. Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
  3.     If State = 1 and Source.Name = "Label1 Then
  4.         Picture1.BackColor = vbWhite
  5.         Label1.Drag vbCancel
  6.      End If
  7. End Sub
  8.  
  9. Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  10.     Picture1.BackColor = vbBlue
  11.     Label1.Left = X
  12.     Label1.Top = Y
  13.     Label1.Drag vbBeginDrag
  14. End Sub
  15.  
  16.  

Es un poco chapucero, pero así de buenas a primeras consigues el efecto que deseas. Desde luego que lo ideal sería controlar el movimiento del mouse en otro control adyacente, pero dependiendo de la velocidad con que se mueva podría ser que tu control se quedará de colo azul.

En fin, a ver que tal te va...

Suerte.