Visual Basic - Asignar evento a botones creados dinamicamente

Life is soft - evento anual de software empresarial
 
Vista:

Asignar evento a botones creados dinamicamente

Publicado por lnaEMG (11 intervenciones) el 18/11/2008 10:42:55
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.
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:Asignar evento a botones creados dinamicamente

Publicado por lnaMG (11 intervenciones) el 18/11/2008 19:32:09
Si lo he creado mediante un array, poniendo el primer elemento con indice 0
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:Asignar evento a botones creados dinamicamente

Publicado por igor (633 intervenciones) el 18/11/2008 21:26:54
En el código que has puesto no falta nada, el evento se activa con el elemento 0?
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:Asignar evento a botones creados dinamicamente

Publicado por eligioalmuedo (7 intervenciones) el 18/11/2008 22:05:04
Ya que en otro foro te resolvieron tu duda, deberias tener la delicadeza de resolverlo aqui tu para que los demas sepan en que fallaste:

RESPUESTA DEL MODERADOR DEL FORO WWW.CANALVISUALBASIC.NET
Hola, dentro del Private Sub cmdVerDatos_Click tambien tenes que poner el indice del boton algo asi:

Private Sub cmdVerDatos_Click(Index As Integer)
Select Case Index
Case 0
msgbox "hiciste click
Case 1
...etc...
end Select
End Sub

En lo sucesivo te recomiendo cerrar un hilo resuelto. Si no lo haces puedes verte ignorado por los que tenemos memoria.
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:Asignar evento a botones creados dinamicamente

Publicado por lnaMG (11 intervenciones) el 19/11/2008 09:12:34
Hola
Mira lo primero, ni siquiera lo habia visto por que yo solo lo miro por la mañana, en el trabajo y en ocasiones contadas, lo miro por la tarde.

Y lo segundo a mi eso no me sirve, por que digamos que en el formulario creo como... unos 70 botones, y no puedo controlar todos con un case.
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:Asignar evento a botones creados dinamicamente

Publicado por RVP (1 intervención) el 19/11/2008 09:25:11
No te entienden. Yo tengo el mismo problema y sigo buscando. Desde luego lo que te han contestado en la otra web no vale para nada.

El tema, para ver si lo entienden es el siguiente :
Cuando creas un control en tiempo de diseño, lo insertas en el formulario, y dando un 2 click sobre el control te crea el evento control_Click(), donde tu insertas el código que sea y punto.
Pero, cuando el control lo has creado en tiempo de ejecucion, ¿ como se le asigna una rutina o procedimiento al evento click de dicho control.?
En otro lenguaje como podría ser Boland C++, creo que seria mas o menos :
control->Click=NombreRutina()

¿ Se podrá hacer en VB ?

Saludos
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:Asignar evento a botones creados dinamicamente

Publicado por lnaMG (11 intervenciones) el 19/11/2008 09:50:28
Gracias momito, eso es lo que quiero. Tiene que poderse, por que si no de que sirve crear botones dinamicamente si luego no sirven para nada??????
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:Asignar evento a botones creados dinamicamente

Publicado por Carlos (125 intervenciones) el 19/11/2008 17:22:05
De que se puede se puede pero, como ya te dijeron y aunque no te gustó la respuesta, debes manejarlo por el índice del control creado, aunque tengas como 70. Porque te apuesto a que sí se activa el evento Click, pero si no quieres comparar el índice pues no vas a poder hacer nada, al menos en VB6 (este es su foro).
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:Asignar evento a botones creados dinamicamente

Publicado por igor (633 intervenciones) el 19/11/2008 20:02:17
A ver si nos enteramos InaMG, lo primero es que no lo explicas muy bien, explicaciones las justas, pero para los malos royos todos se apuntan. Buscas soluciones o broncas?

Desconozco si se pueden crear eventos de controles creados en tiempo de ejecución, en NET seguro que sí. Lo que si se puede hacer es crear un array de controles. En tiempo de diseño creas el primero y le asignas el índice 0, y creas el evento como lo haces normalmente. Como es un array tendrás el control con la variable Index. Luego en tiempo de ejecución creas el resto.

Si se pueden crear todos los elementos en tiempo de ejecución y crear un evento? Pues no lo se, pero merece la pena el trabajo de buscar como se hace?
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

Asignar evento a botones creados dinamicamente

Publicado por lena28 (1 intervención) el 20/11/2008 12:33:34
Hola, soy un poco nueva en esto
pero creo que tengo el mismo problema que lna.
He probado con el select case para controlar los indices de los controles que llaman al evento click, pero tampoco funciona, por que el problema esta en que yo creo que el control creado no se comporta como boton,

load cmdBoton(i)
......
'ya tengo el cmdBoton(0)
y luego el evento click yo creo que no lo lanza xk

Private Sub cmdBoton_Click(Index As Integer)
MsgBox Index 'lo pongo para saber si entra
Select case
......
end sub

Pero es que el indice no los muestra por mensaje si pulso en el boton nuevo pero si lo hago en xej cmdBoton(0) si.

No se si me he explicado,alguna duda preguntenme.

Por favor, podes ayudarme ? Gracias
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:Asignar evento a botones creados dinamicamente

Publicado por igor (633 intervenciones) el 20/11/2008 20:33:16
Private Sub Form_Load()
Load Command1(1)
Command1(1).Visible = True
Command1(1).Top = Command1(0).Top + Command1(0).Height + 100
End Sub
Private Sub Command1_Click(Index As Integer)
MsgBox Index
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:Asignar evento a botones creados dinamicamente

Publicado por lena28 (12 intervenciones) el 21/11/2008 10:17:11
Muchisimas gracias ya me funciona, lo tenia asi, pero sabeis por que no me funcionaba, por que tenia activada la propiedad DragMode a 1 y es que 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 vuestra dedicacion y paciencia.
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
Imágen de perfil de Miguel Lopez

RE:Asignar evento a botones creados dinamicamente

Publicado por Miguel Lopez (1 intervención) el 07/03/2018 16:45:22
Amigos.. buenas tardes, me quiero colgar de este post para agrear un grado de dificultad a la solución ya comentada, ya tengo un arreglo que crea los botones de acuerdo a un parámetro que define el usuario, en este caso, son las mesas de un restaurante, por lo mismo, debo mostrársela en una ventana para que el garzón pueda seleccionarla de manera rápida, mi problema es que los 50 botones salen en linea horizontal y necesito que se muestren en filas de 10.

Este es el código que estoy usando ahora:

1
2
3
4
5
6
7
8
9
10
For intTotalDeMesas = 1 To CantidadDeMesas
 
    Load CmdMesasSeleccionada(intTotalDeMesas)
    CmdMesasSeleccionada(intTotalDeMesas).Top = CmdMesasSeleccionada(intTotalDeMesas - 1).Top
    CmdMesasSeleccionada(intTotalDeMesas).Move (CmdMesasSeleccionada(0).Width * intTotalDeMesas),
    CmdMesasSeleccionada(0).Left
    CmdMesasSeleccionada(intTotalDeMesas).Visible = True
    CmdMesasSeleccionada(intTotalDeMesas).Caption = "Mesa: " & vbCrLf & (intTotalDeMesas) & "Index: " & Val(CmdMesasSeleccionada(intTotalDeMesas).Index)
    CmdMesasSeleccionada(intCantidadrubros).Tag = CmdMesasSeleccionada(intTotalDeMesas).Index
Next

Saludos y muchas gracias de ante mano.
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