Ayuda principiante boton que no se puede clickear

Iniciado por nolosabe, 22 Abril 2012, 20:07 PM

0 Miembros y 1 Visitante están viendo este tema.

nolosabe

Hola, que tal, les cuento que recien empiezo con vb, estoy usando v studio 2003 porque es el que usamos en el instituto.


quiero hacer un formulario con un boton en el cual cuando le apuntes con el mouse para clickearlo se mueva hacia arriba hasta cierto punto, pero la idea es que solo se mueva cuando le vas a apuntar o pasar el mouse por encima, para eso use MOUSE MOVE, logré que se mueva hacia arriba hasta ese cierto punto, pero si voy y dejo el mouse posicionado en el punto mas alto al que se mueve el boton, el boton no para de moverse... debo de tener un error con el while.
probe poner el while de otra forma y con un if pero solo se mueve una vez y eso no sirve, se tiene que mover siempre que se lo quiera apuntar con el mouse asi no se puede clickear... les dejoj el codigo

Código (vbnet) [Seleccionar]

    Private Sub Button1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove
        Dim x As Integer, y As Integer

        x = 32
        y = 272

        While (y > 220)
            y = y - 3

            Button1.Location() = New Point(x, y)
        End While

    End Sub
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas

kub0x

Primero, esto no es vb6 amigo... tu mismo has dicho que trabajas en Visual Studio, pues dicha plataforma lleva integrada el framework de .NET
Segundo: el control por lo que veo (no he probado el código) solo se movería una vez ya que cada vez que se llama al evento MouseEvent declaras la variable Y con el mismo valor.

Entonces tenemos que la expresión y = y - 3 tendrá siempre el mismo valor, por lo que uno deduce que solo se moverá una vez el botón. ¿Qué hacer? Manejar Y habiendo declarado la variable de forma global.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


nolosabe

ok pero como hago que para en vez de declararle yo un valor a x o a y, ponerle el valor de las coordenadas actuales?
algo asi como
dim x as integer
x= button.location x
o algo asi, ni idea porque es la primera vez que uso visual

yo nunca dije que era visual basic 6
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas

kub0x

#3
Lo del vb6 lo digo porque estás en el foro de Vb no de .NET y el código está etiquetado y coloreado bajo VB.

Te dejo lo que pides, simplemente obtengo las coordenadas actuales del Button y comienza un bucle que mueve el control mientras Y sea menor que 220:
Código (VB.NET) [Seleccionar]

Public Sub Mover_Button()
Dim X as Integer = Button1.Location.X
Dim Y as integer = Button1.Location.Y

While Y > 220
Y-=3
Button1.Location = New Point(X,Y)
End While
End Sub


Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


raul338

Y porque usas while? Si en realidad es el mismo usuario el que hace el ciclo :P
Cada vez que toques el boton, lo mueves hacia arriba si no supero cierto punto. Algo asi

Código (vbnet) [Seleccionar]
Public Sub Mover_Button()
Dim X as Integeger = Button1.Location.X
Dim Y as integer = Button1.Location.Y

If Y > 200 Then
    Y-=3
    Button1.Location = New Point(X,Y)
End If
End Sub

nolosabe

ahi va muchas gracias... 2 cosas mas y no jodo
1 - Como hago para que no se le pueda hacer "focus" o ponerle a "gotfocus" que inmediatamente le de focus a otro boton

2 - Recomiendenme un manual, libro, o cursito online. yo ya se algo de C# pero nada de visual studio

muchas gracias ! :D
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas

kub0x

Se me olvido modificar el bucle, simplemente lo escribi todo de una tajada :D
El programa correría perfectamente si reemplazas el bucle por una sentencia condicional.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


kub0x

Para que un usuario no pueda establecer el foco en el Button mediante el Tabulador cambia la propiedad TabStop del Button a True.

Con el valor cambiado a True podrías perfectamente mover el Button en la direccion que quieras.

Por ejemplo:

Código (VB.NET) [Seleccionar]

Public Sub Mover_Button()
        Dim X As Integer = Button1.Location.X
        Dim Y As Integer = Button1.Location.Y
            If Y > 90 Then
                Y -= 2
            Button1.Location = New Point(X, Y)
        Else
            Button1.Location = New Point(X, 150)
        End If
    End Sub


Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


raul338