Differenze tra le versioni di "Creare array di oggetti"

Da Gambas-it.org - Wikipedia.
Riga 73: Riga 73:
 
     With lb = New Label(Me)
 
     With lb = New Label(Me)
 
       .Border = Border.Raised
 
       .Border = Border.Raised
       .X = (10 * b) * 4
+
       .X = b * 40
 
       .Y = 10
 
       .Y = 10
 
       .W = 20
 
       .W = 20
 
       .H = 20
 
       .H = 20
 +
      .Text = CStr(b)
 
     End With
 
     End With
 
   
 
   
Riga 90: Riga 91:
 
==Creare un array indefinito di oggetti del medesimo tipo==
 
==Creare un array indefinito di oggetti del medesimo tipo==
 
Nell'esempio, che segue, ogni volta che si clicca sul ''Button'' viene creato un nuovo ''Button'' sul ''Form'':
 
Nell'esempio, che segue, ogni volta che si clicca sul ''Button'' viene creato un nuovo ''Button'' sul ''Form'':
  '''Private''' i As Integer
+
  Private i As Integer
  '''Private''' tasti As New Button[]
+
  Private tasti As New Button[]
 
    
 
    
 
   
 
   
Riga 122: Riga 123:
  
 
==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, 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''.
+
Come sappiamo, un ''array'' è un insieme di elementi del <SPAN Style="text-decoration:underline">medesimo tipo</span>. Per poter, dunque, creare un array che ''di fatto'' contenga oggetti di tipo diverso, sarà necessario individuare 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 ad speciem''.
  
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 sarà creato un array di quattro diversi tipi di oggetti:
'''Private''' ogg As New Object[]
+
  '''Public''' Sub Form_Open()
'''Private''' i As Integer
 
'''Private''' oy As Integer
 
 
 
  '''Public''' Sub Form_Open() 
 
   
 
'''End'''
 
   
 
   
 
'''Public''' Sub crea_Click()
 
 
   
 
   
 +
  Dim b, n As Byte
 
   Dim bt As Button
 
   Dim bt As Button
 
   Dim lb As Label
 
   Dim lb As Label
 
   Dim tb As ToggleButton
 
   Dim tb As ToggleButton
 
   Dim te As TextEdit
 
   Dim te As TextEdit
 +
  Dim ogg As New Object[]
 
    
 
    
     
+
<FONT Color=gray>' ''Vengono creati sul Form 4 oggetti diversi ed assegnati all'Array di tipo "Object":''</font>
  Select Case Last.Text
+
  bt = New Button(Me) As "button"
    Case "Button"
+
  ogg.Push(bt)
      bt = New Button(Me) As "button"
+
 
      ogg.Add(bt)
+
  lb = New Label(Me) As "label"
    Case "Label"
+
  ogg.Push(lb)
      lb = New Label(Me) As "label"
+
 
      ogg.Add(lb)
+
  tb = New ToggleButton(Me) As "toggleButton"
    Case "ToggleButton"
+
  ogg.Push(tb)
      tb = New ToggleButton(Me) As "toggleButton"
+
 
      ogg.Add(tb)
+
  te = New TextEdit(Me) As "textEdit"
    Case "TextEdit"
+
  ogg.Push(te)
      te = New TextEdit(Me) As "textEdit"
+
 
      ogg.Add(te)
+
<FONT Color=gray>' ''Vengono modificate alcune proprietà di ciascun oggetto presente nell'Array:''</font>
  End Select
+
  For b = 0 To ogg.Max
     
+
    With ogg[b]
           
+
      .X = 10     
      With ogg[i]
+
      .Y = n
        .X = 10     
+
      .width = 150     
        .Y = oy   
+
      .height = 40   
        .width = 150     
+
      .Font.Size = 7
        .height = 40   
+
      .text = "Oggetto: " & ogg[b].Name
        .Font.Size = 7
+
    End With     
        .text = "Oggetto: " & ogg[i].Name
+
    n += 40     
      End With     
+
  Next
         
+
 
      oy += 40     
 
 
  i = i + 1
 
 
 
  '''End'''
 
  '''End'''
 +
  
  

Versione delle 06:02, 11 dic 2015

Verranno mostrati alcuni esempi per la creazione di oggetti mediante l'uso di un array o vettore.. |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 arrBt As New Button[]
 Dim j As Byte


  For j = 0 To 9
    
' La sintassi "New Button(Me)" istruisce l'interprete
' che l'oggetto deve essere creato ed assegnato al "Form" ("Parent/Genitore"):
    With bt = New Button(Me) As "tasto"
      .X = 10
      .Y = 1 + (30 * j)
      .W = 60
      .H = 30
    End With

' Si assegna il nuovo "Button creato al vettore di tipo dell'oggetto "Button":
    arrBt.Add(bt)
 
 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 i As Integer
Private n As Integer


Public Sub Button1_Click()   ' Crea una Label ogni qualvolta viene premuto Button1
    
' Impedisce che venga superato il limite stabilito di Label da creare:
  If i = Lblarray.count Then Return
  
  n += 30

  With Lblarray[i] = New Label(Me)
    .Border = Border.Raised   ' sono definite le caratteristiche della label...
    .W = 100
    .H = 20
    .X = n
    .Y = n
    .text = "Nuova Label " & CStr(i)
  End With

' Viene incrementata la variabile relativa all'indice dell'array:
  Inc i

End


altro esempio:

Public Sub Form_Open()

 Dim llbb As New Label[3]
 Dim lb As Label
 Dim b As Byte
 
' Con un ciclo vengono create 3 Label ed assegnate al vettore di tipo "Label":
  For b = 0 To 2
    
    With lb = New Label(Me)
      .Border = Border.Raised
      .X = b * 40
      .Y = 10
      .W = 20
      .H = 20
      .Text = CStr(b)
    End With

' Assegna la variabile della Label, appena creata, al vettore di tipo "Label":
    llbb[b] = lb

  Next

End


Creare un array indefinito di oggetti del medesimo tipo

Nell'esempio, che segue, ogni volta che si clicca sul Button viene creato un nuovo Button sul Form:

Private i As Integer
Private tasti As New Button[]
 

Public Sub Button1_Click()

 Dim bt As Button
  
  With bt = New Button(Me) As "tasto"
    .X = 10    
    .Y = 40 * i
    .Width = 100    
    .Height = 40    
    .text = "Tasto n. " & i    
  End With     
  
  tasti.Add(bt)

  Inc i

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 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 ad speciem.

Nell'esempio seguente sarà creato un array di quattro diversi tipi di oggetti:

Public Sub Form_Open()

 Dim b, n As Byte
 Dim bt As Button
 Dim lb As Label
 Dim tb As ToggleButton
 Dim te As TextEdit
 Dim ogg As New Object[]
 
' Vengono creati sul Form 4 oggetti diversi ed assegnati all'Array di tipo "Object":
  bt = New Button(Me) As "button"
  ogg.Push(bt)
  
  lb = New Label(Me) As "label"
  ogg.Push(lb)
  
  tb = New ToggleButton(Me) As "toggleButton"
  ogg.Push(tb)
  
  te = New TextEdit(Me) As "textEdit"
  ogg.Push(te)
  
' Vengono modificate alcune proprietà di ciascun oggetto presente nell'Array:
  For b = 0 To ogg.Max
    With ogg[b]
      .X = 10    
      .Y = n 
      .width = 150    
      .height = 40   
      .Font.Size = 7
      .text = "Oggetto: " & ogg[b].Name
    End With     
    n += 40    
  Next
  
End


Creare un vettore di oggetti, ma assegnando ciascuno di quegli oggetto ad un Gruppo diverso

Nei paragrafi precedenti, laddove gli oggetti creati, per essere successivamente assegnati ad un vettore, sono stati inclusi anche in un Gruppo' avente la caratteristica di essere l'unico ed il medesimo per tutti gli oggetti creati.
E' possibile, erò, anche creare un vettore di più oggetti attribuendo ciascuno di essi ad un Gruppo diverso, il quale, così, verrà ad essere costituito da un solo oggetto.

Per fare ciò si attribuirà come nome del nuovo Gruppo uno o più caratteri alfanumerici diversi dagli altri, oppure ad un nome base si aggiungerà di volta in volta un carattere, lettera o numero:

Public Sub Form_Open()

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


  For j = 0 To 9

    with bt = New Button(Me) As "bt" & j
      .X = 10
      .Y = 1 + (30 * j)
      .W = 60
      .H = 30
    End With

    ar.Add(bt)
 
  Next
 
End




Note

[1] Un Array o Vettore è 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 nel vettore del Button creato che in questo caso è stato premuto.