Adattare automaticamente la dimensione del font del testo presente nelle celle di una GridView al loro ridimensionarsi: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
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.
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.
<BR>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:
Mostriamo un possibile codice:
Riga 5: Riga 6:
   
   
   
   
  '''Public''' Sub Form_Open()
  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
    
    
  With Me
  For r = 0 To GridView1.Rows.Max
    .W = 520
    For c = 0 To GridView1.Columns.Max
    .H = 390
      GridView1[r, c].Text = "Cella:" & String(c, "  ") & CStr(r) & "-" & CStr(c)
  End With
    Next
 
  Next
  With GridView1 = New GridView(Me)
 
    .X = 10
  End
    .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()
  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))
  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
    GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
    GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
  Next
  Next
  For r = 0 To GridView1.Rows.Max
  For r = 0 To GridView1.Rows.Max
    GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
    GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
  Next
  Next
 
 
  For r = 0 To GridView1.Rows.Max
  For r = 0 To GridView1.Rows.Max
    For c = 0 To GridView1.Columns.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 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
      If GridView1.Columns[c].W < GridView1[r, c].Font.TextWidth(GridView1[r, c].Text) Then Dec GridView1[r, c].Font.Size
    Next
    Next
  Next
  Next
 
 
  '''End'''
  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''.
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''.
<BR>Per gestire la modifica della dimensione del font, si farà uso della Proprietà ".Font.Grade" della Classe ''GridView''.
  Private GridView1 As GridView
  Private GridView1 As GridView
   
   
   
   
  '''Public''' Sub Form_Open()
  Public Sub Form_Open()
    
    
   With Me
   With Me
Riga 81: Riga 83:
   End With
   End With
    
    
  '''End'''
  End
   
   
   
   
  '''Private''' Sub Ridimensiona()
  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))
  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
    GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
    GridView1.Columns[c].W = GridView1.W / GridView1.Columns.Count
  Next
  Next
    
    
  For r = 0 To GridView1.Rows.Max
  For r = 0 To GridView1.Rows.Max
    GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
    GridView1.Rows[r].H = GridView1.H / GridView1.Rows.Count
  Next
  Next
    
    
  '''End'''
  End
   
   
   
   
  '''Private''' Sub Riempi()
  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 a = 0 To 4
    For b = 0 To 14
    For b = 0 To 14
      GridView1.Font.Grade = Int(GridView1[a, b].H / 11)   
      GridView1.Font.Grade = Int(GridView1[a, b].H / 11)   
      GridView1[a, b].Text = Str(cont)
      GridView1[a, b].Text = Str(cont)
      GridView1[a, b].Alignment = Align.Center
      GridView1[a, b].Alignment = Align.Center
      Inc cont
      Inc cont
    Next
    Next
  Next
  Next
    
    
  '''End'''
  End
   
   
   
   
  '''Public''' Sub Form_Resize()
  Public Sub Form_Resize()
   
   
   GridView1.Clear()
   GridView1.Clear()
   Ridimensiona()
   Ridimensiona()
   Riempi()
   Riempie()
    
    
  '''End'''
  End

Versione attuale delle 10:17, 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à ".Font.Grade" della Classe GridView.

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