Differenze tra le versioni di "Creare array di oggetti"

Da Gambas-it.org - Wikipedia.
Riga 102: Riga 102:
  
 
==Creare un array di oggetti di tipo diverso==
 
==Creare un array di oggetti di tipo diverso==
Come sappiamo, un ''array'' è un insieme di elementi del medesimo tipo. Per poter creare un array che ''di fatto'' contenga oggetti di tipo diverso, sarà necessario individuare, se possibile, un tipo di variabile che possa a sua volta ''rappresentare'', e dunque contenere tali oggetti diversi. La variabile in questione è quella di tipo: ''Object'', la quale si pone rispetto ai vari oggetti in un rapporto di ''genus'' e ''species''.
+
Come sappiamo, un ''array'' è un insieme di elementi del medesimo tipo. Per poter, dunque, creare un array che ''di fatto'' contenga oggetti di tipo diverso, sarà necessario individuare, se possibile, un tipo di variabile che possa a sua volta ''rappresentare'', e dunque contenere tali oggetti diversi. La variabile in questione è quella di tipo: ''Object'', la quale si pone rispetto ai vari oggetti in un rapporto di ''genus'' e ''species''.
  
 
Nell'esempio seguente si creerà un array di quattro diversi tipi di oggetti. Si dovrà porre sul ''Form'' quattro ''Button'', a ciascuno dei quali sarà attributo il nome "''crea''" come Gruppo, nonché il nome dell'oggetto da creare come parola della proprietà .''Text''. Quindi il codice sarà il seguente:
 
Nell'esempio seguente si creerà un array di quattro diversi tipi di oggetti. Si dovrà porre sul ''Form'' quattro ''Button'', a ciascuno dei quali sarà attributo il nome "''crea''" come Gruppo, nonché il nome dell'oggetto da creare come parola della proprietà .''Text''. Quindi il codice sarà il seguente:

Versione delle 06:10, 14 ott 2012

Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un array. |1|


Semplice codice basilare per la creazione di un array del tipo di un oggetto

In questo caso l'array sarà creato e riempito immediatamente con gli oggetti del tipo stabilito:

Public Sub Form_Open()

 Dim bt As Button
 Dim ar As New Button[]
 Dim j As Byte


  For j = 0 To 9
    bt = New Button(Me) As "bt" & j
    ar.Add(bt)
  Next
 
 
  For j = 0 To 9
    With ar[j]
      .X = 10
      .Y = 1 + (30 * j)
      .W = 60
      .H = 30
    End With
  Next

End


Creare un array di dimensioni definite a priori

In questo caso viene posto a priori un limite massimo agli elementi dell'array. L'array sarà riempito di volta in volta che si preme un tasto:

Private Lblarray As New Label[10]   ' è posto il limite massimo a 10 oggetti
Private a As Integer
Private b As Integer


Public Sub Button1_Click()   ' Crea una Label ogni qualvolta viene premuto Button1

 Dim c, d As Integer
  
 b += 50

' La sintassi "New Label(Me)" istruisce l'interprete
' che l'oggetto deve essere creato ed assegnato al Form (Parent):
   Lblarray[a] = New Label(Me)

' Viene mostrata la Label sul Form:
With Lblarray[a]
 .Border = Border.Raised   ' sono definite le caratteristiche della label...
 .W = 100
 .H = 20
 .X = b
 .Y = b
 .text = "Nuova Label"
End With

' Viene incrementata la variabile relativa alla cella dell'array di indice 0:
Inc a

End


Creare un array indefinito di oggetti del medesimo tipo

Private i As Integer
Private tasti As New Button[]
Private ts_y As Integer


Public Sub Button1_Click()

  Dim bt As Button

  bt = New Button(Me) As "tasto"
  tasti.Add(bt)
  
  With bt
    .X = 10    
    .Y = ts_y    
    .width = 100    
    .height = 40    
    .text = "Tasto n. " & i    
  End With     
         
  ts_y += 40    

  i = i + 1

End


Public Sub tasto_Click()   ' Andiamo a verificare il tasto premuto

   Print "E' stato premuto il tasto n. " & tasti.Find(Last)   |2|
 
End


Creare un array di oggetti di tipo diverso

Come sappiamo, un array è un insieme di elementi del medesimo tipo. Per poter, dunque, creare un array che di fatto contenga oggetti di tipo diverso, sarà necessario individuare, se possibile, un tipo di variabile che possa a sua volta rappresentare, e dunque contenere tali oggetti diversi. La variabile in questione è quella di tipo: Object, la quale si pone rispetto ai vari oggetti in un rapporto di genus e species.

Nell'esempio seguente si creerà un array di quattro diversi tipi di oggetti. Si dovrà porre sul Form quattro Button, a ciascuno dei quali sarà attributo il nome "crea" come Gruppo, nonché il nome dell'oggetto da creare come parola della proprietà .Text. Quindi il codice sarà il seguente:

Private ogg As New Object[]
Private i As Integer
Private oy As Integer


Public Sub Form_Open()  
   
End
   
   
Public Sub crea_Click()

 Dim bt As Button
 Dim lb As Label
 Dim tb As ToggleButton
 Dim te As TextEdit
 
     
 Select Case Last.Text
   Case "Button"
     bt = New Button(Me) As "button"
     ogg.Add(bt)
   Case "Label"
     lb = New Label(Me) As "label"
     ogg.Add(lb)
   Case "ToggleButton"
     tb = New ToggleButton(Me) As "toggleButton"
     ogg.Add(tb)
   Case "TextEdit"
     te = New TextEdit(Me) As "textEdit"
     ogg.Add(te)
 End Select
     
           
     With ogg[i]
       .X = 10    
       .Y = oy    
       .width = 150    
       .height = 40   
       .Font.Size = 7
       .text = "Oggetto: " & ogg[i].Name
     End With     
         
     oy += 40    

 i = i + 1

End




Note

[1] Un Array è un insieme di elementi del medesimo tipo. Pertanto un Array del tipo Integer sarà un insieme di valori interi.

[2] tasti.Find(Last) ritorna la posizione nell'array del "Button" creato che è stato premuto.