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.
(Creata pagina con "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 ''...")
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 40: Riga 40:
 
   Dim r, c As Byte
 
   Dim r, c As Byte
 
    
 
    
   GridView1.Resize(Me.W - (GridView1.X + 10), Me.H * 0.9)
+
   GridView1.Resize(Me.W - (GridView1.X + 10), Me.H - (GridView1.Y + 10))
 
    
 
    
 
   For c = 0 To GridView1.Columns.Max
 
   For c = 0 To GridView1.Columns.Max
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 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'''
 
  '''End'''

Versione attuale delle 07:38, 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 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