Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Asignar evento a botones creados dinamicamente

Estas en el tema de Asignar evento a botones creados dinamicamente en el foro de Visual Basic clásico en Foros del Web. Hola Tengo un problema, yo creo dinamicamente botones (cmdVerDatos), en un menu, que van asociados a una imagen y una etiqueta(van en pack por asi ...
  #1 (permalink)  
Antiguo 18/11/2008, 04:03
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 6 meses
Puntos: 0
Asignar evento a botones creados dinamicamente

Hola

Tengo un problema, yo creo dinamicamente botones (cmdVerDatos), en un menu, que van asociados a una imagen y una etiqueta(van en pack por asi decirlo)

Load cmdVerDatos(numControles)

Les asigno las propiedades correspondientes, pero cuando pulso el boton, no se por que no llama al metodo

Private Sub cmdVerDatos_Click(Index As Integer)
.........
End Sub

Que me falta????????!!!!!!!!!!!
por favor ayudarme, s.o.s.
  #2 (permalink)  
Antiguo 18/11/2008, 05:21
 
Fecha de Ingreso: diciembre-2004
Mensajes: 44
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Asignar evento a botones creados dinamicamente

Dim WithEvents TUCONTROL as new BUTTON
  #3 (permalink)  
Antiguo 18/11/2008, 06:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Asignar evento a botones creados dinamicamente

Load cmdVerDatos(numControles)

Dim WithEvents cmdVerDatos as new Command

No me funciona, me dice que "el uso de la palabra clave new no es valido"

  #4 (permalink)  
Antiguo 18/11/2008, 07:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asignar evento a botones creados dinamicamente

Fíjate que al llamar a Load estás asignando un índice al nuevo menú creado. Entonces, en el evento Click recibes en la variable Index cuál es el índice en que se hizo click:
Código vb:
Ver original
  1. Private Sub cmdVerDatos_Click(Index As Integer)
  2. Select Case Index
  3.      Case 0
  4.          'Menú (0)
  5.     Case 1
  6.          'Menú (1)
  7.      'Así sucesivamente
  8. End Select
  9. End Sub
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 19/11/2008, 02:23
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Asignar evento a botones creados dinamicamente

Hola David

Veras, creo que no me he explicado bien, el boton se crea pulsando una opcion de un menu. pero weno eso da igual.
El problema es que se crean como unos 70 botones y controlarlos con un case... a parte que si los voy creando dinamicamente,... crearia los case dinamicamente??
Creo que no es la mejor forma. Sabes algo de withEvents o addHandler, es que creo que por ahi vamos por buen camino.

Gracias por tu atencion, bueno por vuestra atencion a todos
  #6 (permalink)  
Antiguo 19/11/2008, 12:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asignar evento a botones creados dinamicamente

addHandler es para VB.NET, WithEvents es para controles creados usando el método Me.Controls.Add, ahora, mi pregunta es, ¿qué exactamente harás en cada menú? . Porque ninguna de las opciones soluciona el problema si en realidad no sabes qué vas a hacer con el menú .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 20/11/2008, 05:42
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asignar evento a botones creados dinamicamente

Yo tengo el mismo problema
cargo un boton dinamicamente con la instruccion load (ya tengo un boton con indice 0)
y luego cuando pulso sobre el boton no accede al evento click, y yo creo que no lo reconoce del todo como boton (que genera eventos).
Es que si pulso sobre el que tiene indice 0 si que produce el evento click pero si pulso en el que creo no pasa, y es que he puesto un msgbox para que me muestre el indice con el que se ha llamado al evento click y no lo muestra, eso quiere decir que no lo reconoce
¿Hay alguna forma para que el boton reconozca el evento click

load cmdBoton(i)
......
Private Sub cmdBoton_Click(Index As Integer)
MsgBox Index 'Aqui no entra porque no lo muestra
select case
....
....
End Sub
  #8 (permalink)  
Antiguo 20/11/2008, 11:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asignar evento a botones creados dinamicamente

A mí me funciona sin problemas, debes verificar que depués de cargar el nuevo elemento (Load) lo estás mostrando (cambiando su propiedad Visible a True) y posicionando correctamente (con Top y Left).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 21/11/2008, 02:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asignar evento a botones creados dinamicamente

joooooooooooooooooo no me sale
Private Sub nuevoboton_Click()
Dim i As Integer
numControles = cmdBoton.Count
Load cmdBoton(numControles)

cmdBoton(numControles).Visible = True
cmdBoton(numControles).Left = cmdBoton(numControles - 1).Left
cmdBoton(numControles).Top = cmdBoton(numControles - 1).Top + 720

i = cmdVerDatos.Item(numControles).Index 'Para probar que el indice lo coge
MsgBox i

End Sub

' El boton con indice 0 es el que hay ya creado, el 1 lo creo dinamicamente
' con el procedimiento anterior

Private Sub cmdBoton_Click(Index As Integer)
Select Case (Index)
Case 0
MsgBox "Has pulsado 0" 'Para probar pongo msgbox
Case 1 'En este no hace nada, no lo detecta
MsgBox "Has pulsado 1"
End Select
End Sub

Mira a ver si es que hago algo mal, es que el contador lo hace bien.
Gracias David
  #10 (permalink)  
Antiguo 21/11/2008, 03:18
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Asignar evento a botones creados dinamicamente

Muchisimas gracias ya me funciona, lo tenia asi, pero sabes por que no me funcionaba, por que tenia activada la propiedad DragMode a 1 y yo estaba rallada por que lo hacia igual y no salia, y ya he visto que la unica diferencia era la propiedad esa, la he quitado y ya me funciona.

Muchisimas gracias por tu dedicacion y paciencia.
  #11 (permalink)  
Antiguo 21/11/2008, 03:20
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Asignar evento a botones creados dinamicamente

Cita:
Iniciado por lena28 Ver Mensaje
joooooooooooooooooo no me sale
Private Sub nuevoboton_Click()
Dim i As Integer
numControles = cmdBoton.Count
Load cmdBoton(numControles)

cmdBoton(numControles).Visible = True
cmdBoton(numControles).Left = cmdBoton(numControles - 1).Left
cmdBoton(numControles).Top = cmdBoton(numControles - 1).Top + 720

i = cmdVerDatos.Item(numControles).Index 'Para probar que el indice lo coge
MsgBox i

End Sub

' El boton con indice 0 es el que hay ya creado, el 1 lo creo dinamicamente
' con el procedimiento anterior

Private Sub cmdBoton_Click(Index As Integer)
Select Case (Index)
Case 0
MsgBox "Has pulsado 0" 'Para probar pongo msgbox
Case 1 'En este no hace nada, no lo detecta
MsgBox "Has pulsado 1"
End Select
End Sub

Mira a ver si es que hago algo mal, es que el contador lo hace bien.
Gracias David
Hola, es curioso, acabo de copiar en un nuevo proyecto ese código, y me funciona sin problemas.

Pon esta instrucción a ver si dá el número de controles:

Private Sub cmdBoton_Click(Index As Integer)
MsgBox cmdBoton.Count
Select Case (Index)
...

  #12 (permalink)  
Antiguo 24/11/2008, 05:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Asignar evento a botones creados dinamicamente

Si funciona, pero si tienes la propiedad Dragmode activada, no
se la he quitado
  #13 (permalink)  
Antiguo 24/11/2008, 17:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asignar evento a botones creados dinamicamente

En ese caso el problema en sí no está en que el botón haya sido creado dinámicamente, el problema está en que al colocar el modo Drag & Drop a automático no se produce el evento Click con el ratón.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:01.