Mise en forme largeur de colonne datagrid automatique
yeyedeb
Messages postés14Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention30 décembre 2004
-
24 mai 2004 à 16:55
yeyedeb
Messages postés14Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention30 décembre 2004
-
25 mai 2004 à 10:26
Bonjour,
je cherche, en vain, à mettre en forme automatiquement la largeur des colonnes d'un datagrid.
J'ai écrit la petite procédure qui suit, elle a pour but de parcourir chaque cellule de la datagrid, par ligne et par colonne, de retenir la longueur du texte la plus élevée (maxcol) et de renseigner la largeur de la colonne avec cette dernière.
Ce code fonctionne, MAIS, la fonction "GridColumnStyles(icol).Width" à une valeur en PIXEL !!!
ainsi, comme ma variable MAXCOL n'est pas de cette mesure, je vous laisse imaginer la taille de mes colonnes !! :(
Il y a peut être la fonction "DataGridPreferredColumnWidthTypeConverter" qui permettrait de convertir le pixel en autre chose, mais je n'arrive pas à la faire fonctionner... si qq'un à un exemple, ou une autre façon de dimensionner les colonnes...
merci d'avance !
yeye
****** code ********************
Sub misenforme()
Dim i, o, c, irows, icol, maxcol As Integer
Dim contenu As String
Me.DataGrid1.TableStyles.Clear()
Dim tableStyle As New DataGridTableStyle
tableStyle.MappingName = "SUPPORT"
Me.DataGrid1.TableStyles.Add(tableStyle)
'on parcourt toutes les colonnes de la datagrid
For i = 0 To Me.DataGrid1.VisibleColumnCount - 1
maxcol = 0 'initialise la taille maxi que peut prendre la colonne
icol = i
'idem pour toutes les lignes
For o = 0 To Me.DataGrid1.VisibleRowCount - 1
irows = o
'si la valeur contenue la cellule est de type Null, on met la valeur à blanc
If Me.DataGrid1.Item(irows, icol) Is DBNull.Value Then
contenu = " "
Else : contenu = Me.DataGrid1.Item(irows, icol)
End If
'taille du contenu de la cellule
'comparaison avec la valeur maxi en cours
c = contenu.Length
If c > maxcol Then maxcol = c
Next o
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 24 mai 2004 à 17:28
Il existe une astuce. Cela consiste à renseigner un label masqué en autosize=true avec les valeurs de tes cellules. Tu gardes en mémoire la plus grande largeur du label que tu assignes à la largeur de la colone.