Module Funzioni
Sub popola(Of T As New)(ByVal frm As Form, ByVal sinistra As Integer, ByVal alto As Integer, ByVal numero As Integer)
Dim ogg As Object
For n = 1 To numero
ogg = New T
With ogg
.left = sinistra
.top = alto + .height * (n Mod numero)
If ogg.GetType().Name = "casella" Then .backcolor = Color.Cyan
End With
frm.Controls.Add(ogg)
Next
End Sub
End Module
Bene. Ricordo una regola del C++, secondo la quale un puntatore si può definire di un tipo e si può istanziare di un tipo derivato... o qualcosa del genere.Proviamo qualcosa del genere in VB.
Creo una classe casella che eredita da Label
Class casella
Inherits Label
Sub New()
Text = "Ciao, ciccio"
BorderStyle = Windows.Forms.BorderStyle.FixedSingle
End Sub
End Class
Nel suo costruttore, questa classe inizializza il testo della casella e lo stile del bordo.Quindi definisco la variabile come Label e la istanzio come casella
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As Label
a = New casella
Me.Controls.Add(a)
End Sub
E funziona. Ecco il risultato, in cui al form viene aggiunta una casella con le proprietà Text e BorderStyle inizializzate secondo le direttive del costruttore:
Dunque questa regola vale anche in vb.
Devo rivederla compiutamente in C++ perchè ne ho una reminiscenza un po' vaga...

Nessun commento:
Posta un commento