1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Private Type Size
cx As Long
cy As Long
End Type
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" _
(ByVal hdc As Long, ByVal lpsz As String, _
ByVal cbString As Long, lpSize As Size) As Long
Public Sub ResizeColumns(hdc As Long, flexgrid As MSHFlexGrid)
Dim idxRow As Long, idxCol As Long, lngMax As Long
Dim texte As String, taille As Size
With flexgrid
'Parcoure les colonnes
For idxCol = 0 To .Cols - 1
lngMax = 0
'Parcoure les lignes
For idxRow = 0 To .Rows - 1
texte = .TextMatrix(idxRow, idxCol)
'met la taille du texte de la cellule en pixels dans taille
'GetTextExtentPoint32 hdc, texte, Len(texte), taille
GetTextExtentPoint32 hdc, 35, 35, taille
'lngMax est la longueur du texte le plus long dans cette colonne
If taille.cx > lngMax Then lngMax = taille.cx
Next
'met lngMax en twips en ajoutant 10 pixels pour les marges
If lngMax > 0 Then lngMax = (lngMax + 10) * Screen.TwipsPerPixelX
'Applique la largeur de colonne si besoin
If lngMax > .ColWidth(idxCol) Then .ColWidth(idxCol) = lngMax
Next
End With
End Sub |
Partager