Variabile del tipo di una Classe specifica creata

Da Gambas-it.org - Wikipedia.

Come è noto, è possibile creare, cliccando con il tasto destro del mouse nella parte sinistra dell'IDE di Gambas su "FMain --> Nuovo--> Classe...", una particolare Classe, fornita di Proprietà, Metodi ed Eventi. [nota 1]
Come per ogni Classe, anche la Classe specifica, da noi creata, può essere gestita soltanto attraverso sue Istanze (Oggetti), sotto forma di variabili individuate con un proprio nome identificatore, appositamente create con la parola-chiave "NEW".

Variabili del tipo della Classe specifica creata

La variabile per gestire le risorse (Proprietà, Metodi, Eventi, Variabili e Costanti) di una Classe particolare, da noi creata, deve essere del tipo di detta Classe particolare.
Essa andrà "dichiarata" formalmente e quindi creata con la parola-chiave "NEW".

Nell'esempio in ambiente grafico, che segue, dobbiamo aver creato una Classe specifica attribuendo a essa il nome identificatore "Clcreata.class ".
Tale Classe secondaria specifica avrà - ad esempio - una variabile pubblica di tipo Byte, una variabile pubblica di tipo Integer, una variabile pubblica di tipo String e una variabile pubblica di tipo Button:

Public b As Byte
Public i As Integer
Public s As String
Public bt As Button

Nella Classe principale FMain.class, invece, inseriremo il seguente codice per gestire la Classe specifica da noi creata:

' Dichiara formalmente la variabile del tipo della Classe specifica:
 Private cl As Clcreata


Public Sub Button1_Click()

' Crea un istanza (Oggetto) del tipo della Classe specifica, attribuendole il nome identificatore "cl":
 cl = New Clcreata

' Sono altresì in questo caso assegnati alcuni valori alle variabili pubbliche della Classe specifica:
 With cl
   .b = 1
   .i = 10011001
   .s = "prova" & CStr(.b)
 End With

' Gestiamo ora la variabile di tipo "Button", presente nella Classe specifica, creandone un paio e assegnandoli a un unico Gruppo di Eventi:
 With cl.bt = New Button(Me) As "Butt"
   .X = 10
   .Y = 10
   .W = 100
   .H = 100
   .Text = "Button1"
 End With

 With cl.bt = New Button(Me) As "Butt"
   .X = 200
   .Y = 10
   .W = 100
   .H = 100
   .Text = "Button2"
 End With

End


Public Sub Butt_Click()

 Print Last.Text

 With cl
   Print .b
   Print .i
   Print .s
 End With

 Print

End


Utilizzare una Classe particolare con una variabile di tipo Variant

Possiamo caricare anche in una variabile di tipo Variant le Proprietà e gli elementi che costituiscono la nostra Classe particolare creata:

Public Sub Button1_Click()

 Dim va As Variant

 With va = New Clcreata
   .b = 19
   .i = 190000
   .s = "prova " & CStr(.b)
 End With

 With va
   Print .b
   Print .i
   Print .s
 End With

End


Uso di una variabile del tipo della Classe particolare e di una variabile di tipo Variant

Public Sub Button1_Click()

 Dim cl As Clcreata
 Dim va As Variant

 With cl = New Clcreata
   .b = 1
   .i = 1001
   .s = "prova " & CStr(.b)
 End With

' Assegniamo la variabile del tipo della Classe specifica alla variabile di tipo "Variant":
 va = cl

 With va
   Print .b
   Print .i
   Print .s
 End With

End


Variabile array di tipo di una Classe creata

Possiamo gestire le proprietà di una particolare Classe, da noi creata, anche mediante una variabile array.

Nella Classe principale "FMain.Class" andiamo ad utilizzare la Classe particolare da noi creata, semplicemente creandone una variabile array e caricando i valori negli elementi di tale variabile array:

' Dichiara una variabile array di tipo classe "Clval":
Private ccll As  Clcreata[]


Public Sub Form_Open()

' Istanzia la variabile array "ccll" del tipo della Classe "Clval":
 ccll = New Clcreata[100]

 For b As Byte = 0 To 99
' Assegna i valori ai campi della variabile di tipo classe "Clval":
   With ccll[b] = New Clcreata
     .b = b
     .i = 100000 + CInt(b)
     .s = "prova " & Str(b)
   End With
 Next

End


Public Sub Button1_Click()

' Mostra in console i risultati:
 For b As Byte = 0 To ccll.Max
   With ccll[b]
     Print .b
     Print .i
     Print .s
   End With
 Next

End


Note

[1] Al riguardo vedere la seguente pagina: Creare da codice una Classe specifica