Per mezzo di questo modulo dichiarato nella libreria:
Public Module Costanti Public Const HGrid As Integer = 1 Public Const VGrid As Integer = 0 End Moduledefinisco (per puro artifizio mnemonico) due costanti che mi danno l'orientamento della griglia, HGrid e VGrid.
Quindi rendo l'orientamento parametro opzionale con HGrid come valore di default (griglia orizzontale).
Sub New(ByRef frm As Form, ByVal nCaselle As Integer, ByVal rowLength As Integer, Optional ByVal Orientamento As Integer = HGrid, Optional ByVal XCoord As Integer = 0, Optional ByVal YCoord As Integer = 0, Optional ByVal HSpace As Integer = 0, Optional ByVal VSpace As Integer = 0)
For n As Integer = 0 To nCaselle - 1
Dim casella As T = New T
If Orientamento = HGrid Then
casella.Left = XCoord + (HSpace + casella.Width) * (n Mod rowLength)
casella.Top = YCoord + (VSpace + casella.Height) * (n \ rowLength)
ElseIf Orientamento = VGrid Then
casella.Left = XCoord + (HSpace + casella.Width) * (n \ rowLength)
casella.Top = YCoord + (VSpace + casella.Height) * (n Mod rowLength)
End If
Add(casella)
frm.Controls.Add(casella)
Next
End Sub
End Class
E il programma chiamante può tacere quel parametro o specificare VGrid, ottenendo rispettivamente una griglia a disposizione orizzontale o verticale.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim miaGriglia = New Griglia(Of Controllo)(Me, 10, 4, VGrid)
For n As Integer = 0 To miaGriglia.Count - 1
miaGriglia(n).text = n
Next
End Sub
End Class
Class Controllo
Inherits TextBox
End Class
Ecco: questo codice specifica una griglia verticale.Funziona.
Nessun commento:
Posta un commento