Autor |
Mensaje |
CanihoJR
Ingeniero Programador
Registrado: Septiembre 2009
Mensajes: 269
Edad: 38 Ubicación: San Pedro Alcantara
|
Agregar Evento A Un Array De Botones Creados Por Codigo??
Buenas de nuevo!, nose si será esta calor, que me hace mas espeso de lo normal o que... pero no encuentro con el buscador algo parecido...
El caso es que creo una serie de botones gracias a un array:
DIM articulos AS NEW Object[32]
contador1 = 0
contadorcol = 0
contadorarticulos = 0
contadorposicionX = 5
contadorposicionY = 5
'Abro conexion
ModConexion.Connect()
'Realizo la consulta []
Rs = ModConexion.$Con.Find("articulos", "categoria like '" & $categoria & "'")
Rs.MoveFirst
WHILE contadorarticulos < Rs.Length
WHILE contadorcol < 5 AND contadorarticulos < Rs.Length
articulos[contadorarticulos] = NEW ToolButton($a)
articulos[contadorarticulos].Border = TRUE
articulos[contadorarticulos].X = contadorposicionX
articulos[contadorarticulos].Y = contadorposicionY
articulos[contadorarticulos].Width = 100
articulos[contadorarticulos].Height = 100
articulos[contadorarticulos].Text = Rs!nombre
contadorcol += 1
contadorarticulos += 1
contadorposicionX += 105
Rs.MoveNext
WEND
contadorcol = 0
contadorposicionX = 5
contadorposicionY += 105
WEND
El caso, es que estos botones me aparecen perfectamente, pero no sé como agregarles funcionalidad... como seria? :s me arrojáis algo de luz?
Gracias!
|
#1 Domingo, 03 Julio 2011, 22:48 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Agregar Evento A Un Array De Botones Creados Por Codigo??
Hola
Te falta el AS "manejador"
Mientras no le des un nombre al manejador de eventos tu grupo no manejará eventos.
Un saludo
|
#2 Lunes, 04 Julio 2011, 05:27 |
|
|
CanihoJR
Ingeniero Programador
Registrado: Septiembre 2009
Mensajes: 269
Edad: 38 Ubicación: San Pedro Alcantara
|
Re: Agregar Evento A Un Array De Botones Creados Por Codigo??
ajá, supongo que ahí estaba mi problema... el caso es que he declarado el array como me has mostrado, pero al ponerle el AS "MINOMBRE" me tira error gambas....
"Unexpected AS en linea 11....."
En que capitulo del libro (si es que viene), podría ver esto??
|
#3 Lunes, 04 Julio 2011, 09:26 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Agregar Evento A Un Array De Botones Creados Por Codigo??
Yo utilizo otra manera. Supón que creas un botón llamado bHacer que hace algo, claro:
bon = NEW Button(pn)
bon.Text = "Añadir"
bon.Width = 70
bon.picture=... 'las propiedades que quieras.
bon.Name = "bHacer"
bon.Action = "_" & bon.name 'asigno un valor único a la propiedad Action del nuevo botón
Y luego en la función Action_Activate del Formulario:
El código es una simplificación del que uso, pero la idea supongo que se ve clara.
suerte
=================== No podemos regresar
última edición por shordi el Lunes, 04 Julio 2011, 10:24; editado 2 veces
|
#4 Lunes, 04 Julio 2011, 10:23 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Agregar Evento A Un Array De Botones Creados Por Codigo??
Citar: En que capitulo del libro (si es que viene), podría ver esto??
En el libro no sé, pero en gambasdoc está aquí
Enlace
Yo creo que te da error por el 32. Crea el objeto y luego redimensionalo para tener los 32 items que quieres
|
#5 Lunes, 04 Julio 2011, 15:31 |
|
|
CanihoJR
Ingeniero Programador
Registrado: Septiembre 2009
Mensajes: 269
Edad: 38 Ubicación: San Pedro Alcantara
|
Re: Agregar Evento A Un Array De Botones Creados Por Codigo??
Ajá!, ya va quedandome mas claro.... alfinal ha quedado algo asi:
PUBLIC FUNCTION articulostpv($a AS Object, OPTIONAL $categoria AS String)
DIM Rs AS result
DIM contador1 AS Integer
DIM contadorcol AS Integer
DIM contadorarticulos AS Integer
DIM contadorposicionX AS Integer
DIM contadorposicionY AS Integer
DIM articulos AS Object[32]
'articulos = NEW Object AS "btnarticulos"
' DIM articulos AS NEW Object[32]
'articulos = NEW Object[32] AS "nombre"
contador1 = 0
contadorcol = 0
contadorarticulos = 0
contadorposicionX = 5
contadorposicionY = 5
'Abro conexion
ModConexion.Connect()
'Realizo la consulta [] buscando un articulo cuando la categoria es una determinada.
Rs = ModConexion.$Con.Find("articulos", "categoria like '" & $categoria & "'")
Rs.MoveFirst 'Muevo al primer registro
WHILE contadorarticulos < Rs.Length 'Voy poniendo botones en su posicion
WHILE contadorcol < 5 AND contadorarticulos < Rs.Length
articulos[contadorarticulos] = NEW ToolButton($a) AS "btnarticulos"
articulos[contadorarticulos].Border = TRUE
articulos[contadorarticulos].name = "articulo" & contadorarticulos
articulos[contadorarticulos].X = contadorposicionX
articulos[contadorarticulos].Y = contadorposicionY
articulos[contadorarticulos].Width = 100
articulos[contadorarticulos].Height = 100
articulos[contadorarticulos].Text = Rs!nombre
contadorcol += 1
contadorarticulos += 1
contadorposicionX += 105
Rs.MoveNext
WEND
contadorcol = 0
contadorposicionX = 5
contadorposicionY += 105
WEND
'cierro conexion
ModConexion.$Con.Close
END
Y luego tengo el codigo del boton:
Pero así, pulse el botón que pulse, todos muestran el mismo message.warning.... hay alguna forma de diferenciarlos?? tengo tantos botones como artículos y estos se crean dinamicamente... He probado varias cosillas pero ninguna de ellas funcionó.
Gracias! como siempre!
|
#6 Lunes, 11 Julio 2011, 20:31 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Agregar Evento A Un Array De Botones Creados Por Codigo??
Eso está mal porque en ninguna parte estás añadiendo items al object[]. Estas áñadiendo el mismo botón 32 veces.
dim F as object 'crear un objeto
...
...
WHILE contadorarticulos < Rs.Length 'Voy poniendo botones en su posicion
WHILE contadorcol < 5 AND contadorarticulos < Rs.Length
F = NEW ToolButton($a) AS "btnarticulos" 'darle valor al objeto
F.Border = TRUE
F.name = "articulo" & contadorarticulos
F.X = contadorposicionX
F.Y = contadorposicionY
F.Width = 100
F.Height = 100
F.Text = Rs!nombre
articulos.add(F) 'añadir el objeto a artículos
contadorcol += 1
contadorarticulos += 1
contadorposicionX += 105
Rs.MoveNext
WEND
contadorcol = 0
contadorposicionX = 5
contadorposicionY += 105
WEND
Te sobran algunos contadores. Creo que puedes poner ese bucle bastante mejor pero bueno ... esa es la idea.
última edición por soplo el Lunes, 11 Julio 2011, 21:52; editado 1 vez
|
#7 Lunes, 11 Julio 2011, 21:52 |
|
|
|