Differenze tra le versioni di "Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi"
Da Gambas-it.org - Wikipedia.
Riga 56: | Riga 56: | ||
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 Riempi() | ||
+ | |||
+ | 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() | ||
+ | Riempi() | ||
+ | |||
'''End''' | '''End''' |
Versione delle 03:45, 7 lug 2017
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 Riempi() 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() Riempi() End