Ajuster mshflexgrid

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 865 fois - Téléchargée 30 fois

Contenu du snippet

Ajuste les colonnes automatiquement

Source / Exemple :


Dim WithEvents LblTaille As Label

Dim i As Long, j As Long, sizeCol As Long
Dim bPassage As Boolean

'Init
i = 0
j = 0
sizeCol = 0
EspaceColonne = 300
bPassage = True

'Controle dynamique
Set LblTaille = Me.Controls.ADD("VB.Label", "LblTaille", Me)

'Propriétés controle
With LblTaille
    .Caption = ""
    .AutoSize = True
    .Left = 0
    .Top = 0
End With

'Infobulle
MSHFlDonnees.ToolTipText = "Affichage des informations"

'Colonnes
For i = 0 To MSHFlDonnees.Cols - 1

    'Init largeur colonne
    sizeCol = 0
    bPassage = True

    'Lignes
    For j = 0 To MSHFlDonnees.Rows - 1

        'Récupère le texte
        LblTaille.Caption = MSHFlDonnees.TextMatrix(j, i)
       
        If Not bPassage Then
            'Largeur colonne(+ grande)
            If LblTaille.Width > sizeCol Then
                sizeCol = LblTaille.Width
            End If
        Else
            '1ère ligne
            sizeCol = LblTaille.Width
            bPassage = False
        End If
    Next j

    
        'Appliquer la largeur
        MSHFlDonnees.ColWidth(i) = sizeCol + EspaceColonne
    
'Colonne suivante
Next i

'Rafraichissement
MSHFlDonnees.Refresh

set LblTaille = nothing

Conclusion :


lbltaille >>> controle dynamique
mshfldonnees >>> la grille a ajuster
espacecolonne >>> pour laisser un peu de marge

Petite source(ma 1ère en+) mais parfois utile je trouve

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
3 novembre 2006

bien il est comlet
Messages postés
30
Date d'inscription
lundi 18 novembre 2002
Statut
Membre
Dernière intervention
5 août 2004

merci logedu pour le code,
c'est en en effet plus simple mais je viens de tester, pas très fiable comme calcul....
Messages postés
33
Date d'inscription
mercredi 26 mars 2003
Statut
Membre
Dernière intervention
1 mars 2005

Utilise le code suivant, c'est plus simple :
Public Function AjustTaille(Str As String, FontSize As Long) As Long
'-----------------------------------------<
'Ajuste la taille d'un contrôle ou de la colonne d'un Mshflexgrid
'en fonction de son contenu
'retourne la nouvelle largeur du contrôle en twips
'-----------------------------------------
Const PointsPerPouce = 72
Const TwipsPerPouce = 1440

AjustTaille = (Len(Str) * FontSize / PointsPerPouce) * TwipsPerPouce

End Function
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Pour éviter de voir l'ajustement de la grille tout au long de la boucle, tu devrais mettre tout juste avant la boucle For:
MSHFlDonnees.Redraw = False

et remettre à True après la boucle.

Simple suggestion...
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Ca peut être utile, c'est vrai

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.