begin process at 2010 02 09 16:17:51
  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 de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) INSERER TOUT TYPE DE FICHIERS DANS ORACLE EN VB.NET par SKY32
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOYER DES EMAILS AVEC PIECES JOINTES EN EXÉCUTANT BLAT par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) PILOTER DES AFFICHEURS 7 SEGMENTS À PARTIR DU PORT SÉRIE OU ... par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLER LE WEBBROWSER ET IDENTIFIER LES LIENS PAR LEUR NUM... par george02
Source avec Zip Source .NET (Dotnet) LOGIN AVEC FICHIER XML par DanMor498

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 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,562 sec (4)

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