Visual Basic - Una duda muy grande!!!

Life is soft - evento anual de software empresarial
 
Vista:

Una duda muy grande!!!

Publicado por guishiermitus (15 intervenciones) el 20/05/2008 10:18:57
Hola a todos!!
Mi cuestion es esta... Alguien sabe si se puede arrastrar un commandbutton en tiempo de ejecucion, y dejarlo en cualquier lugar del formulario que lo contiene??

No se si me explico!!! Lo que quiero es lograr acomodar una setie de controles (cmdButton) algo asi como a los iconos del escritorio de windows..

Muchas gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Una duda muy grande!!!

Publicado por el hazedor (2 intervenciones) el 20/05/2008 12:33:58
Tengo una posible solución, la he probado y funciona...
Problema:
El command button no se desplazaria con un click de ratón, si no, con el apoyo de una tecla del teclado.
Explicación:
Para arrastrar y soltar un icono pulsamos ese icono y sin soltar arrastramos hasta la posición deseada donde soltamos(haciendo click con el raton, moviendo y soltando el click)
Con mi arrastre de command button, seleccionamos el command button, pulsamos la tecla que queramos en el teclado(facilmente configurable), movemos el raton y soltamos la tecla(del teclado, insisto) donde queramos.
El funcionamiento es perfecto y sin retardo, algoritmo sencillo, 6 lineas.

No conozco en profundidad el hecho,pero el evento click del ratón no es exactamente igual al evento keypress del teclado.

Private Sub Command1_KeyPress(KeyAscii As Integer)
t2.Text = KeyAscii
End Sub

Private Sub Command1_KeyUp(KeyCode As Integer, Shift As Integer)
t2.Text = 0
End Sub

Private Sub Form_Load()
t2.Text = 0
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If t2.Text > 0 Then
Command1.Left = X
Command1.Top = Y
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una duda muy grande!!!

Publicado por guishiermitus (15 intervenciones) el 22/05/2008 02:21:17
graciasssssssssss.. son unos capos!!!!! las dos alternativas funcionan de 10
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una duda muy grande!!!

Publicado por J@vier (44 intervenciones) el 20/05/2008 23:18:29
Otra Manera
-------------------------------------
Private DragX As Integer
Private DragY As Integer
Public Boton As Integer
Private Sub Command1_Click()
MsgBox "clika boton derecho + control para iniciar el arrastre"
End Sub

Private Sub Command1_MouseDown(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single)

If Button = 2 And Boton = 17 Then
Command1.Drag 1
DragX = X
DragY = Y
Boton = 0
End If
End Sub

Private Sub Command1_MouseUp(Button As Integer, _
Shift As Integer, _
X As Single, Y As Single)

Command1.Drag 2
End Sub

Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move (X - DragX), (Y - DragY)
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Boton = KeyCode
End Sub

Private Sub Form_Load()
Command1.Caption = "crtl + click"
Command1.Move 0, 0, 3000, Command1.Height
Me.KeyPreview = True
End Sub
-------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una duda muy grande!!!

Publicado por Ana Sonia (3 intervenciones) el 21/05/2008 15:34:43
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.

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

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

▪ Dentro del procedimiento DragDrop escriba las siguientes líneas de código:

Source.Top = Y
Source.Left = X

▪ El procedimiento codificado quedaría de la siguiente manera:

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)

Source.Top = Y ‘Coloca el objeto en la coordenada Y del Mouse
Source.Left = X ‘Coloca el objeto en la coordenada X del Mouse

End Sub

▪ 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.

Explicación:

La variable Source identifica al objeto como si se tratase del mismo. Cuando escribimos Source.Top = Y estamos queriendo decir Command1.Top = Y. De igual manera, Source.Left = X estamos queriendo decir Command1.Left = 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.

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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar