Redimensionnement du controle msflexgrid ( pas le tableau, mais le contour )

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 235 fois - Téléchargée 28 fois

Contenu du snippet

Voici un petit bout de programme qui permet de redimensionner un controle MSFlexGrid par rapport à la taille du tableau.
Dans mon code, j'ai fixé des limites pour pas avoir une dimension exédant la taille de mon Form.
libre a vous de les changer.
bon amusement.

Source / Exemple :


' adapte la taille de la fenêtre du msfgrid
MSF_Resultat.Width = 300

    For vI = 0 To MSF_Resultat.Cols - 1
        If MSF_Resultat.Width < 6615 Then ' limite = 6615
            
            MSF_Resultat.Width = MSF_Resultat.Width + MSF_Resultat.ColWidth(vI) + 10
        Else
            MSF_Resultat.Width = 6615 ' dès que la limite est atteinte il arrête le dimensionement
            vI = MSF_Resultat.Cols
        End If
    Next
MSF_Resultat.Height = 300
    For vE = 0 To MSF_Resultat.Rows - 1
        If MSF_Resultat.Height < 2700 Then ' limite = 2700    
            MSF_Resultat.Height = MSF_Resultat.Height + MSF_Resultat.RowHeight(vE) + 10
        Else
            MSF_Resultat.Height = 2700 ' dès que la limite est atteinte il arrête le dimensionement
            vE = MSF_Resultat.Rows
        End If
    Next

Conclusion :


Voilà, je me servit de ça pour le dimensionner :
  • en hauteur : jusqu'a ce qu'il atteigne mes boutons commandes ( un peu avant quand même ;-) )
  • en largeur : environ la moitié d'un form en 1024 * 768.

pour l'instant j'ai pas vue de faille donc ...
si vous trouvez mieux, faîte moi signe.

A voir également

Ajouter un commentaire

Commentaires

LogRaam (aka Gabriel Mailhot)
Messages postés
60
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
25 avril 2005
-
Mmmmh, j'avais oublié un tout petit détail... dsl.

With MSF_Resultat
'Config
myRows& = .Rows - 1
myCols& = .Cols - 1
heightLimit& = 2700
widthLimit& = 6615

'Set initial position
.Move .Left, .Top, 300, 300

'Redim Columns
For vI& = 0 To myCols
If .Width < widthLimit Then
.Width = .Width + (.ColWidth(vI) + 10)
Else
.Width = widthLimit
vI = .Cols
End If
Next vI

'Redim Rows
For vE = 0 To myRows
If .Height < 2700 Then ' limite = 2700
.Height = .Height + (.RowHeight(vE) + 10)
Else
.Height = heightLimit
vE = .Rows
End If
Next
End With


MadLucas
LogRaam (aka Gabriel Mailhot)
Messages postés
60
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
25 avril 2005
-
Voici ce que je te suggère:

With MSF_Resultat
'Config
myRows& = .Rows - 1
myCols& = .Cols - 1
heightLimit& = 2700
widthLimit& = 6615

'Set initial position
.Move .Left, .Top, 300, 300

'Redim Columns
For vI& = 0 To myCols
If .Width < widthLimit Then
.Width = .Width + (.ColWidth(vI) + 10)
Else
.Width = widthLimit
vI = .Cols
End If
Next vI

'Redim Rows
For vE = 0 To myRows
If .Height < 2700 Then ' limite = 2700
.Height = .Height + (.RowHeight(vE) + 10)
Else
MSF_Resultat.Height = heightLimit
vE = .Rows
End If
Next
End With


C'est un peu plus rapide et c'est plus textuel. Comme ça tu évites de surcharger le code avec des REM. Mais bon c'est une question de goût; certains préfèreront un code avec beaucoup de REM et d'autres aimeront mieux "textualiser" à même le code pour aérer.


MadLucas
cs_moustachu
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012
-
J'ai bien compris tout cela. Je te dis juste que tu peux renseigner une variable "Hauteur" et une variable "Largeur" dans tes boucles for telles quelles sont et ne redimensionner qu'à la fin des deux boucles. Ca évite de redimensionner toin controle à chaque itération.
cs_rodcobalt22
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016
-
effectivement ça pourais marché à condition que touetts les colones ou ligne on la même taille. malheureusement, c'est pas le cas.
c'est pour cette raison qu'une fois la limitte de taille atteinte, implémente directement la variable de réitération à sa borne de fin.
Comme ça dès que la taille est à mon maximum fixé par moi même.
il ne vérifie plus la taille et sort de la boucle.
en hauteur il fait environ une dizaine de lignes et en largeur environ 6 colones.
cs_rodcobalt22
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016
-
effectivement ça pourais marché à condition que touetts les colones ou ligne on la même taille. malheureusement, c'est pas le cas.
c'est pour cette raison qu'une fois la limitte de taille atteinte, implémente directement la variable de réitération à sa borne de fin.
Comme ça dès que la taille est à mon maximum fixé par moi même.
il ne vérifie plus la taille et sort de la boucle.
en hauteur il fait environ une dizaine de lignes et en largeur environ 6 colones.

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.