begin process at 2012 02 13 00:57:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > REDIMENSIONNEMENT DU CONTROLE MSFLEXGRID ( PAS LE TABLEAU, MAIS LE CONTOUR )

REDIMENSIONNEMENT DU CONTROLE MSFLEXGRID ( PAS LE TABLEAU, MAIS LE CONTOUR )


 Information sur la source



 Description

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

  • ' 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
' 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.


 Sources du même auteur

Source .NET (Dotnet) CONTROLS PERSONALISÉ TEXTBOX

 Sources de la même categorie

Source .NET (Dotnet) MODIFICATION DATE DE WINDOWS EN VB.NET ET VBA par us_30
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOI DE MAIL AVEC PIÈCE JOINTE par EhJoe
Source .NET (Dotnet) AMUSONS NOUS AVEC UN LABEL ^^ par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) UN NAVIGATEUR INTERNET EN VB.NET par azrti
Source avec Zip Source .NET (Dotnet) CONVERSION DE DEVISE MONAITAIRE VIA UN SERVICE WEB par bigmonkey7

Commentaires et avis

Commentaire de moustachu le 05/02/2004 16:32:01

Peut-être gagnerais tu en temps d'exécution si tu ne redimensionnais qu'une fois le controle, plutot qu'à chaque fois.

Ca doit être plus rapide de renseigner une variable les boucles For que de redimensionner dans les boucles. Imagine 120 colones et 12000 lignes...

++

Moustachu

Commentaire de rodcobalt22 le 06/02/2004 08:28:51

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.

Commentaire de rodcobalt22 le 06/02/2004 08:28:57

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.

Commentaire de moustachu le 06/02/2004 09:42:07

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.

Commentaire de MadLucas le 06/02/2004 14:20:16

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 &lt; 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 &lt; 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

Commentaire de MadLucas le 06/02/2004 14:22:06

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 &lt; 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 &lt; 2700 Then ' limite = 2700
                .Height = .Height + (.RowHeight(vE) + 10)
            Else
                .Height = heightLimit
                vE = .Rows
            End If
        Next
    End With


MadLucas

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales