Autor |
Mensaje |
whisper
Juan Carlos Dominguez
Aprendiz
Registrado: Abril 2010
Mensajes: 76
Edad: 62 Ubicación:
|
Label Creada En Tiempo De Ejecucion
Hola
Me sucede lo siguiente:
Si quiero agregar un Label puesto en el IDE a un grupo, no tengo ningún problema y los eventos del grupo (por ejemplo MouseDown()) responden sin problema. Pero si quiero agregar el Label a un grupo por codigo me aparece el error:
"Símbolo 'Group' desconocido en la clase Label"
Alguien tiene alguna idea o me estoy equivocando en algo.
El código donde lo hago es el siguiente:
item = New HPanel(HPanelItems)
With item
.name = "item" & Str(contador)
.Expand = True
.tag = "numero"
.H = 30
End With
lblItem = New Label(item)
With lblItem
.W = 30
.h = 30
.Text = contador
.Tag = "numero"
.Font.Bold = True
.Border = 1
.Background = nColor
.Alignment = Align.center
.Group = "xxx" 'Aqui el error
End With
|
#1 Viernes, 16 Septiembre 2016, 00:21 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Label Creada En Tiempo De Ejecucion
tiene pinta de ser un bug
ya que al poner . (Punto)
la propiedad group no aparece.
lo probé en mi pc y me pasa lo mismo.
saludos.
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
última edición por v3ctor el Viernes, 16 Septiembre 2016, 04:33; editado 2 veces
|
#2 Viernes, 16 Septiembre 2016, 04:30 |
|
|
vicr
Técnico Programador
Registrado: Septiembre 2013
Mensajes: 158
Edad: 47
|
Re: Label Creada En Tiempo De Ejecucion
Hola, Whisper.
Por la información que he encontrado en inglés, es que Group es una propiedad sólo del IDE.
Acá un enlace donde Misini da algunas opciones a usar en ese caso:
https://sourceforge.net/p/gambas/mailman/message/8963906/
Una traducción por mi (no muy exacta) es:
1) Si necesitas administrar los eventos de muchos controles con el mismo manejador de eventos, usa la propiedad del control 'Group' en el IDE, o dale el mismo nombre a todos tus controles si los creas a mano.
2) Puedes poner todos los controles que necesites en un array Object[]. Es volver a la manera VB.
3) Si todos tus controles están en el mismo Contenedor (Container), puedes Enumerarlos con la propiedad Children de ese contenedor.
4) Puedes usar la propiedad Tag. En gambas, el Tag puede ser lo que tu quieras no solo una cadena (String).
5) Puedes usar Herencia y/o composición (?) con las clases de los controles nativos.
Espero te sirva,
Saludos....
|
#3 Viernes, 16 Septiembre 2016, 05:00 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Label Creada En Tiempo De Ejecucion
La esencia de un grupo de objetos es compartir los mismos eventos.
En el IDE puedes usar la opción group, en tiempo real tienes otras maneras, como ya te han apuntado.
Otra manera, la más aproximada a usar el grupo en el ide, es suministrar un nombre común de observer para todas.
Prueba ésto:
Te creará diez textboxes y cada vez que cambies uno de ellos te imprimirá su nombre en consola
=================== No podemos regresar
última edición por shordi el Viernes, 16 Septiembre 2016, 08:48; editado 2 veces
|
#4 Viernes, 16 Septiembre 2016, 08:46 |
|
|
whisper
Juan Carlos Dominguez
Aprendiz
Registrado: Abril 2010
Mensajes: 76
Edad: 62 Ubicación:
|
Re: Label Creada En Tiempo De Ejecucion
Hola a todos.
Disculpen la demora en contestar. Estuve leyendo sus respuestas y voy a probar cual es la opción que mas se adapta a lo que estoy haciendo.
Tal vez una combinación de cosas como poner el mismo nombre y distinto .tag, el problema es que estoy usando la opción .tag para otra cosa.
Después les cuento. Muchas Gracias por sus comentarios.
|
#5 Viernes, 16 Septiembre 2016, 14:03 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Label Creada En Tiempo De Ejecucion
el problema es que estoy usando la opción .tag para otra cosa.
la propiedad tag es un array de tipo variant así que podes usar la misma propiedad para muchas cosas
vuott puso un ejemplo por ahí ahora no se donde esta
saludos.
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#6 Viernes, 16 Septiembre 2016, 14:39 |
|
|
whisper
Juan Carlos Dominguez
Aprendiz
Registrado: Abril 2010
Mensajes: 76
Edad: 62 Ubicación:
|
Re: Label Creada En Tiempo De Ejecucion
Bueno, lo pude solucionar. Use el método que propuso shordi y quedo asi:
item = New HPanel(HPanelItems)
With item
.name = "item" & Str(contador)
.Expand = True
.tag = "numero"
.H = 30
End With
lblItem = New Label(item) as "ObjItems"
With lblItem
.W = 30
.h = 30
.Text = contador
.Tag = "numero"
.Font.Bold = True
.Border = 1
.Background = nColor
.Alignment = Align.center
End With
... y en
ublic Sub ObjItems_MouseDown()
.
.
aborrar = Last.name
...etc
End
...obtengo el nombre para identificar cual borrar.
Gracias a todos.
|
#7 Viernes, 16 Septiembre 2016, 15:12 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Label Creada En Tiempo De Ejecucion
Quiero solo añadir otras dos posibilidades.
Uso de la Clase Observer:
Uso del metodo .Attach( ) de la Clase Object:
|
#8 Viernes, 16 Septiembre 2016, 15:23 |
|
|
whisper
Juan Carlos Dominguez
Aprendiz
Registrado: Abril 2010
Mensajes: 76
Edad: 62 Ubicación:
|
Re: Label Creada En Tiempo De Ejecucion
Bien
Nuevamente gracias a todos. Nunca había usado esto de los observadores, pero ofrecen una alternativa a la opción "Group" por código y se ve con muchas posibilidades más.
Gracias.
|
#9 Viernes, 16 Septiembre 2016, 16:03 |
|
|
|