El siguiente ejercicio muestra una aplicación con un botón de comando que se puede mover de
posición manteniendo pulsado el botón izquierdo del Mouse y soltándolo en cualquier parte del
formulario.
_ Abra un nuevo proyecto e inserte un botón de comando.
_ Seleccione el botón de comando y busque la propiedad DragMode. Seleccione el valor 1 –
Automatic para que el botón se puede arrastrar.
_ Haga doble clic en cualquier parte del formulario para activar el Editor de código. Tenga en cuenta
no hacer doble clic en el botón de comando.
_ Aparecerá el cursor parpadeando en el procedimiento que representa el evento Load (Carga) del
formulario. Este evento no nos interesa, por tal razón, debemos hacer clic en el evento DragDrop
de la lista de eventos, ubicada en la parte superior del Editor de Código.
_ Aparecerá el procedimiento que representa el evento DragDrop del formulario:
_ Dentro del procedimiento DragDrop escriba las siguientes líneas de código:
_ El procedimiento codificado quedaría de la siguiente manera:
53
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
[Link] = Y
[Link] = X
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
[Link] = Y ‘Coloca el objeto en la coordenada Y del Mouse
[Link] = X ‘Coloca el objeto en la coordenada X del Mouse
End Sub
Ing. Carlos Manuel Rodríguez Bucarelly
Visual Basic 6.0
Capítulo 3
Introducción a los controles más usuales de Visual Basic 6.0
_ Pulse la tecla [F5] para correr la aplicación.
_ Ahora mueva el botón de comando a cualquier parte del formulario. Podrá observar que el botón
de comando toma la posición actual del puntero del Mouse.
_ Haga clic en el botón Cerrar de la ventana para detener la aplicación.
_ Guarde la aplicación con los nombres FormEjercicio5-3 para el formulario y, Ejercicio5-3 para el
proyecto.
Explicación:
Anteriormente, explicamos que la variable Source identifica al objeto como si se tratase del mismo.
Cuando escribimos [Link] = Y estamos queriendo decir [Link] = Y. De igual
manera, [Link] = X estamos queriendo decir [Link] = X. Dijimos que X es un
numero que representa la posición horizontal del puntero del Mouse y, la variable Y la posición
vertical. Asignando estos valores en las propiedades Top (Arriba) y Left (Izquierda) del botón de
comando, hace posible cambiar la posición del botón. Para más información acerca de las
propiedades Top y Left retrocedan algunas páginas atrás, a las propiedades de los botones de
comando de este mismo capitulo.
Utilizar la variable Source tiene algunas ventajas que se enumeran a continuación:
1. Cualquier control que se agregue en el formulario se podrá cambiar de posición, siempre y
cuando el valor 1 – Automatic este establecido en la propiedad DragMode.
2. La variable Source identifica el objeto que se esta arrastrando, sin importar cual sea el tipo
de objeto.
3. Es posible identificar cual es el tipo de objeto que se arrastra, utilizando la sentencia
TypeOf combinada con la instrucción If. Ejemplo: If TypeOf Source Is CommandButton
Then. Este ejemplo verifica si el objeto que se arrastra es un botón de comando.
54
COMENTARIO: Este evento combinado con el evento DragOver es muy utilizado en la mayoría de los juegos de mesa.
Por ejemplo, los juegos de carta, ajedrez, damas, etc. Estos juegos requieren manejar frecuente mente estos dos
eventos, debido a que consisten realmente en arrastrar y soltar algún objeto.
Ing. Carlos Manuel Rodríguez Bucarelly
Visual Basic 6.0
Capítulo 3
Introducción a los controles más usuales de Visual Basic 6.0
DragOver Ocurre mientras se realiza una operación de arrastrar y soltar. Mientras el usuario
este arrastrando un objeto sobre su contenedor, el evento DragOver se efectuará
continuamente. Este evento permite realizar variedades de operaciones con el
objeto, principalmente en aplicaciones de video juegos.
Este evento posee los mismos argumentos del evento DragDrop (Source, X, Y), a
diferencia del argumento State. Este argumento representa un entero que
corresponde al estado de transición del control que se está arrastrando en relación
al formulario o control de destino. Puede tomar entre tres valores 0, 1 y 2. Cuando el
Estado se encuentra en 0 (Entrar), indica que el objeto origen, se encuentra dentro
del intervalo de un destino, es decir, el objeto iniciará la operación de arrastre. El
Estado 1 (Salir), indica que el objeto origen se esta arrastrando fuera del intervalo
de un destino, es decir, fuera del intervalo del objeto origen. El Estado 2 (Sobre),
indica que el objeto origen se ha movido de una posición del destino a otra, es decir,
se encuentra dentro del intervalo destino pero en otra posición.
El procedimiento DragOver viene representado de la siguiente manera:
Ejercicio:
El siguiente ejercicio muestra una aplicación con un botón de comando que se puede mover de
posición manteniendo pulsado el botón izquierdo del Mouse y soltándolo en cualquier parte del
formulario. A diferencia de la aplicación anterior, este ejemplo muestra un icono especial cuando se
esta arrastrando el objeto.
_ Abra un nuevo proyecto e inserte un botón de comando.
_ Seleccione el botón de comando y busque la propiedad DragMode. Seleccione el valor 1 –
Automatic para que el botón se puede arrastrar.
_ Haga doble clic en cualquier parte del formulario para activar el Editor de código. Tenga en cuenta
no hacer doble clic en el botón de comando.
_ Seleccione el evento DragDrop de la lista de eventos ubicada en la esquina superior derecha del
Editor de código.
55
NOTA: El termino objeto origen representa el objeto que se esta arrastrando. Un intervalo destino
representa el conjunto de valores que están comprendidos entre la posición (x, y) del objeto origen que
se arrastra con relación a su contenedor y el tamaño (altura y anchura) de dicho objeto.
Private Sub Objeto_DragOver(Source As Control, X As Single, Y As Single, State
As Integer)
End Sub
COMENTARIO: Utilice un procedimiento de evento DragOver para determinar lo que ocurre tras
iniciarse el arrastre y antes de que un control se coloque en un destino. Por ejemplo, puede comprobar
un intervalo de destino válido si resalta el destino (establezca la propiedad BackColor o ForeColor
desde el código) o muestra un puntero de arrastre especial (establezca la propiedad DragIcon o
MousePointer desde el código).
Utilice el argumento estado para determinar las acciones de los puntos de transición claves. Por
ejemplo, podría resaltar un posible destino cuando estado se establezca a 0 (Entrar) y restaurar la
apariencia anterior del objeto cuando estado se establezca a 1 (Salir).
Ing. Carlos Manuel Rodríguez Bucarelly
Visual Basic 6.0
Capítulo 3
Introducción a los controles más usuales de Visual Basic 6.0
_ Aparecerá el procedimiento que representa el evento DragDrop del formulario:
_ Dentro del procedimiento DragDrop escriba las siguientes líneas de código:
_ El procedimiento codificado quedaría de la siguiente manera:
Valor Puntero Valor Puntero Valor Puntero Valor Puntero
0 Default ( ) 5 Size ( ) 10 Up Arrow ( ) 15 Size
1 Arrow ( ) 6 Size NE SW ( ) 11 Hourglass ( )
2 Cross ( ) 7 Size N S ( ) 12 No Drop ( )
3 I-Beam ( ) 8 Size NWSE ( ) 13 ArrowHourglass ( )
4 Icon ( ) 9 Size W E ( ) 14 ArrowQuestion ( )
99 Desde
archivo
56
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
[Link] = Y
[Link] = X
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
[Link] = Y ‘Coloca el objeto en la coordenada Y del Mouse
[Link] = X ‘Coloca el objeto en la coordenada X del Mouse
[Link] = 0 ‘Asigna el puntero normal o predeterminado del Mouse
End Sub
Como ha podido notar es la misma codificación del programa anterior, que permite posicionar el
objeto que se arrastra en cualquier parte del formulario, con la única diferencia en que se ha
agregado una nueva línea de código [Link] = 0. La propiedad MousePointer
permite cambiar la forma del puntero del Mouse en tiempo de ejecución. Esta propiedad puede
tomar una serie de valores que se muestran en la siguiente tabla:
Ing. Carlos Manuel Rodríguez Bucarelly
Visual Basic 6.0
Capítulo 3
Introducción a los controles más usuales de Visual Basic 6.0
Ahora codificaremos para que cuando el usuario este moviendo el objeto sobre el formulario, este
cambie el aspecto del puntero del Mouse. Esto debe ser codificado en el evento DragOver del
botón de comando y no del formulario.
_ Haga doble clic sobre el botón de comando y, a continuación, seleccione el evento DragOver de
la lista de eventos ubicada en la esquina superior derecha del Editor de código.
_ Aparecerá el procedimiento que representa el evento DragOver del botón de comando:
_ Dentro del procedimiento DragOver escriba las siguientes líneas de código:
_ El procedimiento codificado quedaría de la siguiente manera:
_ Pulse la tecla [F5] para correr la aplicación.
_ Ahora mueva el botón de comando a cualquier parte del formulario. Podrá observar que el botón
de comando toma la posición actual del puntero del Mouse. Además, puede observar como el
puntero del Mouse cambia de apariencia mientras se esta arrastrando el botón de comando.
_ Haga clic en el botón Cerrar de la ventana para detener la aplicación.
_ Guarde la aplicación con los nombres FormEjercicio6-3 para el formulario y, Ejercicio6-3 para el
proyecto.
Explicación:
Esta aplicación se puede dividir en dos partes representadas por dos eventos, el primero DragDrop
para posicionar el objeto en la coordenada X, Y del Mouse, y el segundo DragOver para cambiar el
57
Private Sub Command1_DragOver(Source As Control, X As Single, Y As Single, State As
Integer)
End Sub
' Si el Estado del argumento (State) se encuentra en 0 (Entrar), entonces, cambia
' el puntero del Mouse
If State = 0 Then [Link] = 15
Private Sub Command1_DragOver(Source As Control, X As Single, Y As Single, State As
Integer)
' Si el Estado del argumento (State) se encuentra en 0, entonces, cambia
' el puntero del Mouse
If State = 0 Then [Link] = 15
End Sub
Ing. Carlos Manuel Rodríguez Bucarelly
Visual Basic 6.0
Capítulo 3
Introducción a los controles más usuales de Visual Basic 6.0
puntero del Mouse mientras se arrastra el botón de comando.
Se ha dicho anteriormente, que el evento DragDrop ocurre cuando termina una operación de
arrastrar y soltar un objeto sobre su contenedor. En esta aplicación se ha codificado este evento
con tres líneas de código donde las dos primeras la tratamos en la aplicación anterior. La línea de
código [Link] = 0 permite establecer el puntero por defecto o predeterminado del
Mouse.
La propiedad MousePointer (Puntero del Mouse), es una propiedad muy utilizada en los controles
de Visual Basic 6.0. Esta permite cambiar la apariencia del puntero del Mouse, permitiendo
seleccionar entre 16 constantes o valores ya explicados en la tabla anterior.
Usted podría preguntarse que hace esta línea de código dentro de este procedimiento (evento). La
razón es muy sencilla, el evento DragDrop permite realizar cualquier función, siempre y cuando
termine la operación de arrastrar y soltar. Por ende, el puntero del Mouse debe establecerse a su
forma normal o predeterminada cuando el objeto sea colocado en la posición deseada, si no lo
hace, entonces, el puntero del Mouse quedaría cambiado aún cuando halla terminado la operación
de arrastrar y soltar el objeto.
Por otro lado, el evento DragOver esta codificado únicamente para cambiar la apariencia del
puntero del Mouse cuando comience a arrastrar el botón de comando. La única línea de código que
podemos ver en este procedimiento es:
If State = 0 Then [Link] = 15
Traducido literalmente al castellano:
Si Estado del objeto es Igual a Cero Entonces Puntero del botón de comando es Igual a 15
Se ha dicho que al iniciar la operación de arrastrar y soltar un objeto, el argumento State se
encontrará en 0 (Entrar); esto permite realizar cualquier operación antes de soltar o terminar de
arrastrar el objeto. Se ha utilizado el estado 0 y no el 1 o 2 por la siguiente razón: “Se quiere
cambiar la apariencia del puntero del Mouse cuando se inicie la operación de arrastrar y soltar, y
esto solo lo proporciona el estado 0 (Entrar)”.
58
NOTA: Utilice la sentencia If o Case para verificar cual es el estado actual del objeto.
COMENTARIO: Utilice la propiedad MousePointer siempre que quiera cambiar la apariencia del puntero del Mouse
sobre un objeto. Establezca el valor 99 en la propiedad MousePointer cuando quiera