https://foro.gambas-es.org/viewtopic.php?f=1&t=5655&p=33441#p33441
-----------------------------------
vuott
Lunes, 18 Julio 2016, 19:14

Re: Agrupar Clases En Que Tipo De Variable?
-----------------------------------
Generalmente una Clase (...o mejor: [i]más objetos[/i] de una Clase) puede ser agrupada en una variable vectorial de [u]su mismo tipo[/u].

Por lo que se rifiere a la agregación de dos o más Clases de tipo diferente, tu puede usar:
- una [i]Collection[/i] (como ha dicho [i]jguardon[/i]);
- una variable array de tipo Variant[ ];
- una Estructura.

En este ejemplo creamos 4 botones y 4 label.
Luego agregamos los 4 botones en una variable array de tipo [i]Button[ ][/i], y las 4 Label en una variable array de tipo [i]Label[ ][/i] .
Tambien agregamos cada objeto (4 botones y 4 Label) [u]juntos[/u] en una variable de tipo [i]Variant[ ][/i].

En fin las dos primeras variables array serán agregadas en una sola variable de tipo [i]Variant[ ][/i].

[code linenumbers=false syntax=gambas]Public Sub Form_Open()

  Dim b As Byte
  Dim bt As Button
  Dim botones As New Button[]
  Dim lb As Label
  Dim llbb As New Label[]
  Dim todo As New Variant[]
  Dim arraydearray As New Variant[]
  
' Creamos y luego agrupamos 4 botones en un array de tipo "Button[]":
    For b = 1 To 4
      With bt = New Button(Me)
        .W = 60
        .H = 30
        .X = .W * b
        .Y = 50
        .Name = "Button " & CStr(b)
        .Text = .Name
      End With
      botones.Push(bt)
      todo.Push(bt)
    Next
    
    Print botones.Count
    
' Creamos y luego agrupamos 4 label en un array de tipo "Label[]":
    For b = 1 To 4
      With lb = New Label(Me)
        .W = 60
        .H = 30
        .X = .W * b
        .Y = 100
        .Name = "Label " & CStr(b)
        .Border = Border.Dotted
        .Alignment = Align.Center
        .Text = .Name
      End With
      llbb.Push(lb)
      todo.Push(lb)
    Next
    
    Print llbb.Count
    Print
    
' A ver el nombre de los objetos ensertados en el array "todo":
    For b = 0 To todo.Max
      Print todo[b].Name
    Next
    
    
' Agrupamos los dos array en un array de tipo "Variant[]":
    With arraydearray
      .Push(botones)
      .Push(llbb)
    End With
    Print
' Vamos a ver el testo de la 3^ Label:
    Print arraydearray[1][2].Text

End[/code]


