Programación General > Visual Basic 6.0 e inferiores

 Otra De Un Ocx

(1/1)

SpeedCAD:
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:

Brroz:
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 --- Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, State As Integer)    If State = 1 and Source.Name = "Label1 Then        Picture1.BackColor = vbWhite        Label1.Drag vbCancel     End IfEnd Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)    Picture1.BackColor = vbBlue    Label1.Left = X    Label1.Top = Y    Label1.Drag vbBeginDragEnd Sub  
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.

Navegación

[0] Índice de Mensajes

Ir a la versión completa