Differenze tra le versioni di "Creare array di oggetti"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
 
==Semplice codice basilare per la creazione di un array del tipo di un oggetto==
 
==Semplice codice basilare per la creazione di un array del tipo di un oggetto==
Uso del metodo ''.Add'' con una variabile array del medesimo tipo dell'oggetto che sarà ivi contenuto:
+
In questo caso l'array sarà creato e riempito immediatamente con gli oggetti del tipo stabilito:
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
Riga 31: Riga 31:
  
  
==Creazione di un array indefinito di oggetti==
+
==Creare un array indefinito di oggetti del medesimo tipo==
===Creare un array indefinito di oggetti mediante l'uso del metodo ''.add'' con una variabile array di tipo "''oggetto''" e con specificazione dell'elemento dell'array nel quale inserire l'oggetto medesimo===
+
'''Private''' i As Integer
 +
'''Private''' tasti As New Button[]
 +
'''Private''' ts_y As Integer
 +
 +
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
  Dim obj As New Object[]
+
  Dim bt As Button
  Dim c, i As Integer
 
 
   
 
   
    obj.Add(Label)
+
  bt = New Button(Me) As "tasto"
<FONT color=006400>' ''La sintassi "New Label(Me)" istruisce l'interprete''
+
  tasti.Add(bt)
' ''che l'oggetto deve essere creato ed assegnato al Form (Parent):''</font>
+
 
     obj[i] = New Label(Me)
+
  With bt
 +
    .X = 10   
 +
    .Y = ts_y   
 +
    .width = 100   
 +
    .height = 40   
 +
    .text = "Tasto n. " & i   
 +
  End With      
 +
         
 +
  ts_y += 40   
 
   
 
   
<FONT color=006400>' ''Ad ogni clic sul tasto viene mostrata la Label sul form:''</font>
+
  i = i + 1
    With obj[i]
 
      .X = 10 * i
 
      .Y = c
 
      .width = 100
 
      .height = 20
 
      .text = "Nuova Label"
 
    End With
 
   
 
    c += 30
 
   
 
<Font Color= #006400>' ''Viene incrementata la variabile relativa alla cella dell'array di indice 0:''</font>
 
  Inc i
 
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
 
===Uso del metodo ''.Add'' con una variabile array di tipo "''oggetto''" e senza specificazione dell'elemento dell'array nel quale inserire l'oggetto medesimo===
 
'''Private''' obja As New Object[] 
 
'''Private''' k As Integer 
 
'''Private''' j As Byte 
 
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub tasto_Click()  <FONT color=#006400>' ''Andiamo a verificare il tasto premuto''</font>
 
   Dim fo As Form 
 
  Dim box As New Form 
 
     
 
<Font Color= #006400>' ''istanzio un Form:''</font>
 
    fo = New Form As "fo" 
 
     
 
<Font Color= #006400>' ''...e lo aggiungo ad un elemento dell'array:''</font>
 
    obja.Add(fo) 
 
 
 
       
 
<Font Color= #006400>' ''evito di superare il numero di elementi dell'array:''</font>
 
    If j > obja.max Then Return
 
 
      k = k + 60 
 
      box = obja[j] 
 
<Font Color= #006400>' ''Ad ogni clic sul tasto viene mostrato un Form:''</font>
 
    With box 
 
      .W = 150 
 
      .H = 150 
 
      .X = k 
 
      .Y = k
 
      .Caption = "Nuovo Form"
 
      .Show 
 
      .TopOnly = True
 
    End With 
 
 
<Font Color= #006400>' ''Viene incrementata la variabile relativa alla cella dell'array di indice 0:''</font>
 
    Inc j 
 
 
   
 
   
 +
    Print "E' stato premuto il tasto n. " & tasti.Find(Last)  |[[#Note|2]]|
 +
 
 
  '''End'''
 
  '''End'''
  
  
  
==Creare un array senza uso della variabile di tipo "''oggetto''" e del relativo metodo ''.add'', ponendo un array di dimensioni <SPAN style="text-decoration:underline">definite</span>==
+
==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[9]  <Font Color= #006400>' ''è posto il limite massimo a 10 oggetti ("array di 10 elementi: da 0 a 9")''</font>
 
  '''Private''' Lblarray As New Label[9]  <Font Color= #006400>' ''è posto il limite massimo a 10 oggetti ("array di 10 elementi: da 0 a 9")''</font>
 
  '''Private''' a As Integer
 
  '''Private''' a As Integer
Riga 139: Riga 105:
  
 
[1] Un ''Array'' è un insieme di elementi del medesimo tipo. Pertanto un ''Array'' del tipo Integer sarà un insieme di valori ''interi''.
 
[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.

Versione delle 05:24, 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 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 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[9]   ' è posto il limite massimo a 10 oggetti ("array di 10 elementi: da 0 a 9")
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



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.