Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 5: | Riga 5: | ||
Public Sub Form_Open() | |||
Dim r, c As Short | Dim r, c As Short | ||
With Me | |||
.W = 520 | |||
.H = 390 | |||
End With | |||
With GridView1 = New GridView(Me) | |||
.X = 10 | |||
.Y = 10 | |||
.W = Me.W - 10 | |||
.H = Me.H - 10 | |||
.Rows.Count = 3 | |||
.Columns.Count = 6 | |||
End With | |||
For r = 0 To GridView1.Rows.Max | |||
GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count | |||
Next | |||
For r = 0 To GridView1.Rows.Max | |||
For c = 0 To GridView1.Columns.Max | |||
GridView1[r, c].Text = "Cella:" & String(c, " ") & CStr(r) & "-" & CStr(c) | |||
Next | |||
Next | |||
End | |||
Public Sub Form_Resize() | |||
Dim r, c As Byte | Dim r, c As Byte | ||
GridView1.Resize(Me.W - (GridView1.X + 10), Me.H - (GridView1.Y + 10)) | |||
For c = 0 To GridView1.Columns.Max | |||
GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count | |||
Next | |||
For r = 0 To GridView1.Rows.Max | |||
GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count | |||
Next | |||
For r = 0 To GridView1.Rows.Max | |||
For c = 0 To GridView1.Columns.Max | |||
If GridView1.Columns[c].W > GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Inc GridView1[r, c].Font.Size | |||
If GridView1.Columns[c].W < GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Dec GridView1[r, c].Font.Size | |||
Next | |||
Next | |||
End | |||
| Riga 63: | Riga 63: | ||
Public Sub Form_Open() | |||
With Me | With Me | ||
| Riga 81: | Riga 81: | ||
End With | End With | ||
End | |||
Private Sub Ridimensiona() | |||
Dim r, c As Byte | Dim r, c As Byte | ||
GridView1.Resize(Me.W - (GridView1.X + 10), Me.H - (GridView1.Y + 10)) | |||
For c = 0 To GridView1.Columns.Max | |||
GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count | |||
Next | |||
For r = 0 To GridView1.Rows.Max | |||
GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count | |||
Next | |||
End | |||
Private Sub Riempie() | |||
Dim a, b As Byte | Dim a, b As Byte | ||
Dim cont As Byte | Dim cont As Byte | ||
For a = 0 To 4 | |||
For b = 0 To 14 | |||
GridView1.Font.Grade = Int(GridView1[a, b].H / 11) | |||
GridView1[a, b].Text = Str(cont) | |||
GridView1[a, b].Alignment = Align.Center | |||
Inc cont | |||
Next | |||
Next | |||
End | |||
Public Sub Form_Resize() | |||
GridView1.Clear() | GridView1.Clear() | ||
| Riga 124: | Riga 124: | ||
Riempie() | Riempie() | ||
End | |||
Versione delle 10:15, 26 ago 2025
Il caso prevede la presenza di una GridView su un Form, capace di adattarsi proporzionalmente in caso di ridimensionamento, effettuato manualmente con il mouse, del Form medesimo. Al modificarsi della larghezza della GridView e conseguentemente della larghezza delle sue celle interne, il codice deve adattare proporzionalmente la dimensione del testo presente nelle celle.
Mostriamo un possibile codice:
Private GridView1 As GridView
Public Sub Form_Open()
Dim r, c As Short
With Me
.W = 520
.H = 390
End With
With GridView1 = New GridView(Me)
.X = 10
.Y = 10
.W = Me.W - 10
.H = Me.H - 10
.Rows.Count = 3
.Columns.Count = 6
End With
For r = 0 To GridView1.Rows.Max
GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
Next
For r = 0 To GridView1.Rows.Max
For c = 0 To GridView1.Columns.Max
GridView1[r, c].Text = "Cella:" & String(c, " ") & CStr(r) & "-" & CStr(c)
Next
Next
End
Public Sub Form_Resize()
Dim r, c As Byte
GridView1.Resize(Me.W - (GridView1.X + 10), Me.H - (GridView1.Y + 10))
For c = 0 To GridView1.Columns.Max
GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
Next
For r = 0 To GridView1.Rows.Max
GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
Next
For r = 0 To GridView1.Rows.Max
For c = 0 To GridView1.Columns.Max
If GridView1.Columns[c].W > GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Inc GridView1[r, c].Font.Size
If GridView1.Columns[c].W < GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Dec GridView1[r, c].Font.Size
Next
Next
End
In quest'altra modalità le celle della GridView hanno tutte identica dimensione, ed il testo si modificherà al modificarsi dell'altezza delle celle della GridView. Per gestire la modifica della dimensione del font, si farà uso della proprietà .Grade della proprietà .Font della Classe Grid'View.
Private GridView1 As GridView
Public Sub Form_Open()
With Me
.W = 520
.H = 390
End With
With GridView1 = New GridView(Me)
.X = 10
.Y = 10
.W = Me.W - 10
.H = Me.H - 10
.Rows.Count = 5
.Columns.Count = 15
.Columns.Width = (Me.Width / 15)
.Rows.Height = (Me.Height / 5)
End With
End
Private Sub Ridimensiona()
Dim r, c As Byte
GridView1.Resize(Me.W - (GridView1.X + 10), Me.H - (GridView1.Y + 10))
For c = 0 To GridView1.Columns.Max
GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
Next
For r = 0 To GridView1.Rows.Max
GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
Next
End
Private Sub Riempie()
Dim a, b As Byte
Dim cont As Byte
For a = 0 To 4
For b = 0 To 14
GridView1.Font.Grade = Int(GridView1[a, b].H / 11)
GridView1[a, b].Text = Str(cont)
GridView1[a, b].Alignment = Align.Center
Inc cont
Next
Next
End
Public Sub Form_Resize()
GridView1.Clear()
Ridimensiona()
Riempie()
End