Ciao a tutti ragazzi.
Sto facendo un piccolo progettino personale per la gestione di una pulsantiera, ve lo spiego brevemente.
Ho un Panel di dimensioni variabili ( correlate alla risoluzione dello schermo ) nel quale creo dinamicamente N bottoni in base alle dimensioni, ovvero :
il pannello è largo 800 Pixel e Alto 600
I bottoni sono quadrati da 50 x 50
all'interno del pannello possono essere contenuti 192 bottoni
quindi parte un ciclo FOR per la creazione e la sistemazione corretta dei bottoni.
Ora fin qui funziona tutto correttamente. Nasce la necessità di dover specificare un numero di pulsanti necessari in base ad un preciso parametro, ad esempio :
Il pannello contiene massimo 192 bottoni da 50 x 50
I bottoni necessari sono 200 ( quindi si va fuori di 8 bottoni )
Il pannello ovviamente è sprovvisto di scroll e quindi gli 8 bottoni di troppo sarebbero inutilizzabili in quanto creati oltre le dimensioni del pannello.
Vorrei riuscire a fare una specie di paginazione del pannello, ma non ho la minima idea di come farlo, è un po che ci penso e per un motivo o per un altro scarto tutte le idee.
Vi metto qui sotto il metodo che uso per la creazione dei bottoni
codice:
' se il metodo è richiamato dall'evento resize del form
' cancello tutti gli oggetti button attualmente presenti
' in modo da crearne di nuovi ridimensionati
If resize = True Then
removeall()
End If
'assengo le variabili left e top e le imposto a 0
Dim left As Integer = 0
Dim top As Integer = 0
' assengo le variabili per stabilire le dimensioni del form
Dim FormWidht As Integer = Panel2.Width
Dim FormHeight As Integer = Panel2.Height
'assegno le variabili per definire le dimensioni di ogni bottone
Dim ButtonWidth As Integer = 90
Dim ButtonHeight As Integer = 50
'calcolo le righe, le colonne e il totale dei bottoni che possono
'essere disposti nell'area in base alle dimensioni del panel
Dim buttonRows As Double = FormWidht / ButtonWidth
buttonRows = Math.Truncate(buttonRows) - 1
Dim buttonRowsM As Double = FormWidht / ButtonWidth
buttonRowsM = Math.Truncate(buttonRowsM) - 1
Dim ButtonCol As Double = FormHeight / ButtonHeight
ButtonCol = Math.Truncate(ButtonCol) - 1
'massimo di bottoni che possono essere contenuti all'interno dell'area
Dim TotButton As Integer = ButtonCol * buttonRows
'creo i bottoni e li dispongo sul form i base alle righe
' e alle colonne precedentemente calcolate.
For i = 1 To TotButton
' istanzio l'ogetto
Dim btn As New Button
'imposto le propietà
btn.Text = "prova"
btn.Width = ButtonWidth
btn.Height = ButtonHeight
If i > buttonRows Then
top = top + ButtonHeight
btn.Top = top
left = 0
btn.Left = left
buttonRows = buttonRows + buttonRowsM
Else
btn.Top = top
btn.Left = left
End If
AddHandler btn.Click, AddressOf btnreg_Click
Panel2.Controls.Add(btn)
left = left + ButtonWidth
ProgressBar1.Maximum = i
ProgressBar1.Minimum = 0
If ProgressBar1.Value < i Then
ProgressBar1.Value += 1
ElseIf ProgressBar1.Value = ProgressBar1.Maximum Then
End If
Next
Label1.Text = Panel2.Controls.Count
If ProgressBar1.Value = ProgressBar1.Maximum Then
Panel2.Visible = True
End If
PS: Il codice è molto grezzo non ci ho perso tempo