Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Clase ContainerChildren ¿Alguien sabe cómo usarla?
#1

¿Y en qué se diferencia de la clase Children?

Estoy intentando mejorar una serie de funciones que revisan todos los controles de un formulario y he visto que existe esa clase que no había visto nunca... pero no hay ni una pequeña ayuda de cómo usarla.

¿Alguien tiene alguna idea?

Saludos

No podemos regresar
    ¡Gracias!
#2

(30-10-2022, 19:31)Shordi escribió:  ¿Alguien tiene alguna idea?

No tengo idea, TercoIDE es el de las clases   Big Grin

1 Saludo.
    ¡Gracias!
#3

(30-10-2022, 22:18)tincho escribió:  No tengo idea, TercoIDE es el de las clases

Estoy aprendiendo. Y tengo algunos problemas con los Children en mis programas. Se portan mal.

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
    ¡Gracias!
#4

(31-10-2022, 15:15)tercoide escribió:  
(30-10-2022, 22:18)tincho escribió:  No tengo idea, TercoIDE es el de las clases

Estoy aprendiendo. Y tengo algunos problemas con los Children en mis programas. Se portan mal.

Mándalos al rincón de pensar...

Cool

No podemos regresar
    ¡Gracias!
#5

Que bueno.

ContainerChildren :This virtual class returns a virtual collection of all children of a container.

Propiedades: Count y Max
Métodos: Clear 

Se puede asignar los hijos de un contenedor a  un tipo ContainerChildren

GAMBAS
  1. Public Sub Form_Open()
  2.  
  3.   Dim hijos As ContainerChildren
  4.   Dim ob As Object
  5.  
  6.   hijos = Panel1.Children
  7.  
  8.   Print "El Panel1 tiene " & Str(hijos.Count) & " hijos"
  9.  
  10.   For Each ob In hijos  
  11.     Print "Un hijo se llama: " & ob.name
  12.   Next
  13.  



Y se puede asignar a un control mediante un tipo ContainerChildren y su indice.

GAMBAS
  1. Public Sub Ejemplo2()
  2.  
  3.  
  4.   Dim hijos As ContainerChildren
  5.   Dim hcontrol As Control
  6.  
  7.   hijos = Panel1.Children
  8.  
  9.   hcontrol = hijos[0]
  10.  
  11.   Print hcontrol.Name
  12.   



Saludos

"El buen perfume en frasco pequeño se vende"
[-] Los siguientes 4 usuarios dicen gracias a Shell por este post:
  • cogier, jguardon, tercoide, tincho
    ¡Gracias!
#6

(30-10-2022, 19:31)Shordi escribió:  Estoy intentando mejorar una serie de funciones que revisan todos los controles de un formulario y he visto que existe esa clase que no había visto nunca... pero no hay ni una pequeña ayuda de cómo usarla.

¿Pero que es lo que quieres hacer exactamente?
No es lo mismo una clase que un objeto.
Por ejemplo yo lo uso de la siguiente manera para asignar la imagen de un ToolButon que se encuentra dentro de un panel 
GAMBAS
  1. Public Sub LoadIcons(h As Container)
  2.  
  3.   Dim obj As Object
  4.  
  5.   For Each obj In h.Children
  6.     If Object.Type(obj) = "ToolButton" Then
  7.       obj.Picture = dsk.TagPic(obj.Tag, 32)
  8.     Endif
  9.   Next
  10.  



1 Saludo.
    ¡Gracias!
#7

Otro ejemplo que es mas general y sirve para asignar la imagen a cada ToolButton que exista en el formulario pero podrías adaptarlo a lo que requiera tu programa ya que al ser recursivo se llama a si mismo y continua hasta el ultimo control que encuentre en el formulario.

GAMBAS
  1. Public Sub Form_Open()
  2.  
  3.   RScan(Me)
  4.  
  5.  
  6. Private Sub RScan(obj As Object)
  7.  
  8.   Dim chi As Object
  9.   Dim chi2 As Object
  10.  
  11.   For Each chi In obj.Children
  12.     If Object.Type(chi) = "ToolButton" Then
  13.       chi.Picture = dsk.TagPic(chi.Tag, 32)
  14.     Else
  15.       For Each chi2 In chi.Children
  16.         If Object.Type(chi2) = "ToolButton" Then
  17.           chi2.Picture = dsk.TagPic(chi2.Tag, 32)
  18.         Else
  19.           RScan(chi2)
  20.         Endif
  21.       Next
  22.     Endif
  23.   Next



1 Saludo.
    ¡Gracias!
#8

Shell, este código es muy útil, gracias. Espero que no te importe pero lo he modificado y añadido a la ayuda de Gambas en Inglés
[-] Los siguientes 1 usuarios dice gracias a cogier por este post:
  • jguardon
    ¡Gracias!
#9

(02-11-2022, 22:37)tincho escribió:  ¿Pero que es lo que quieres hacer exactamente?
No es lo mismo una clase que un objeto.
Por ejemplo yo lo uso de la siguiente manera para asignar la imagen de un ToolButon que se encuentra dentro de un panel 
GAMBAS
  1. Public Sub LoadIcons(h As Container)
  2.  
  3.   Dim obj As Object
  4.  
  5.   For Each obj In h.Children
  6.     If Object.Type(obj) = "ToolButton" Then
  7.       obj.Picture = dsk.TagPic(obj.Tag, 32)
  8.     Endif
  9.   Next
  10.  

Sí, cosas así ya tengo hechas usando, como en el ejemplo, Children pero sigo sin entender la utilidad de ContainerChildren. Creí que podía ahorrame esos bucles y la recursividad si ContainerChildren incluía "de manera nativa" todos los children de todos los Container contenidos en el objeto inicial... pero ya veo que no.

La única utilidad que le veo es la posibilidad de pasar como referencia la clase Children "desligándola" del objeto padre... pero sigue siendo algo bastante oscuro.

Saludos

No podemos regresar
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)