Differenze tra le versioni di "Creare array di oggetti"

Da Gambas-it.org - Wikipedia.
Riga 26: Riga 26:
 
     End With
 
     End With
 
   Next
 
   Next
 +
 +
'''End'''
 +
 +
 +
 +
==Creare un array di dimensioni <SPAN style="text-decoration:underline">definite</span> 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]  <Font Color= #006400>' ''è posto il limite massimo a 10 oggetti''</font>
 +
'''Private''' a As Integer
 +
'''Private''' b As Integer
 +
 +
 +
'''Public''' Sub Button1_Click()  <Font Color= #006400>' ''Crea una Label ogni qualvolta viene premuto Button1''</font>
 +
 +
  Dim c, d As Integer
 +
 
 +
  b += 50
 +
 +
<FONT color=006400>' ''La sintassi "New Label(Me)" istruisce l'interprete''
 +
' ''che l'oggetto deve essere creato ed assegnato al Form (Parent):''</font>
 +
    Lblarray[a] = New Label(Me)
 +
 +
<Font Color= #006400>' ''Viene mostrata la Label sul Form:''</font>
 +
With Lblarray[a]
 +
  .Border = Border.Raised  <Font Color= #006400>' ''sono definite le caratteristiche della label...''</font>
 +
  .W = 100
 +
  .H = 20
 +
  .X = b
 +
  .Y = b
 +
  .text = "Nuova Label"
 +
End With
 +
 +
<Font Color= #006400>' ''Viene incrementata la variabile relativa alla cella dell'array di indice 0:''</font>
 +
Inc a
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 67: Riga 101:
  
  
==Creare un array di dimensioni <SPAN style="text-decoration:underline">definite</span> a priori==
+
==Creare un array di oggetti di tipo diverso==
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:
+
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''.
  '''Private''' Lblarray As New Label[10]   <Font Color= #006400>' ''è posto il limite massimo a 10 oggetti''</font>
+
 
  '''Private''' a As Integer
+
Nell'esempio seguente bisognerà porre sul ''Form'' quattro ''Button'' a ciascuno dei quali sarà attributi il nome ''crea'' come nome del Gruppo. Quindi il codice sarà il seguente:
  '''Private''' b As Integer
+
  '''Private''' ogg As New Object[]
 +
  '''Private''' i As Integer
 +
  '''Private''' oy As Integer
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()   <Font Color= #006400>' ''Crea una Label ogni qualvolta viene premuto Button1''</font>
+
  '''Public''' Sub Form_Open()
 +
   
 +
'''End'''
 +
   
 +
   
 +
'''Public''' Sub crea_Click()
 
   
 
   
   Dim c, d As Integer
+
   Dim bt As Button
 
+
  Dim lb As Label
   b += 50
+
  Dim tb As ToggleButton
+
  Dim te As TextEdit
<FONT color=006400>' ''La sintassi "New Label(Me)" istruisce l'interprete''
+
 
' ''che l'oggetto deve essere creato ed assegnato al Form (Parent):''</font>
+
     
     Lblarray[a] = New Label(Me)
+
   Select Case Last.Text
+
    Case "Button"
<Font Color= #006400>' ''Viene mostrata la Label sul Form:''</font>
+
      bt = New Button(Me) As "button"
With Lblarray[a]
+
      ogg.Add(bt)
  .Border = Border.Raised  <Font Color= #006400>' ''sono definite le caratteristiche della label...''</font>
+
    Case "Label"
  .W = 100
+
      lb = New Label(Me) As "label"
  .H = 20
+
      ogg.Add(lb)
  .X = b
+
     Case "ToggleButton"
  .Y = b
+
      tb = New ToggleButton(Me) As "toggleButton"
  .text = "Nuova Label"
+
      ogg.Add(tb)
End With
+
    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   
 
   
 
   
<Font Color= #006400>' ''Viene incrementata la variabile relativa alla cella dell'array di indice 0:''</font>
+
  i = i + 1
Inc a
 
 
   
 
   
 
  '''End'''
 
  '''End'''
 +
  
  

Versione delle 06:04, 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 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 bisognerà porre sul Form quattro Button a ciascuno dei quali sarà attributi il nome crea come nome del Gruppo. 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.