Agregar Evento A Un Array De Botones Creados Por Codigo??


Objetivo: 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!

Objetivo: 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.

Dim articulos as object[32]
Articulos=new object[32] as "minombre"
...
end

public sub minombre_click()
...
...
end


Un saludo

Perfil MP  
Objetivo: 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??

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

PUBLIC SUB Action_Activate(key AS String) AS Boolean

SELECT CASE key
CASE "_bHacer"
..... lo que quieras que haga el botón.


El código es una simplificación del que uso, pero la idea supongo que se ve clara.

suerte

última edición por shordi el Lunes, 04 Julio 2011, 10:24; editado 2 veces
Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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:

PUBLIC SUB btnarticulos_Click()
Message.Warning("PRUEBA")
END


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!

Objetivo: 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
Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.3816s (PHP: -66% SQL: 166%)
Consultas SQL: 46 - Debug off - GZIP Activado