• Martes 7 de Mayo de 2024, 22:52

Autor Tema:  Otra De Un Ocx  (Leído 968 veces)

SpeedCAD

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
    • http://webcindario.com/speedcad
Otra De Un Ocx
« en: Sábado 13 de Diciembre de 2003, 04:57 »
0
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:
Un saludo de SpeedCAD... \":)\"
CHILE
http://webcindario.com/speedcad

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Otra De Un Ocx
« Respuesta #1 en: Sábado 13 de Diciembre de 2003, 08:24 »
0
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.