IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

TableLayoutPanel : redimensionner les colonnes à l'exécution


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut TableLayoutPanel : redimensionner les colonnes à l'exécution
    Hello,

    Je rencontre des difficultés à redimensionner correctement les colonnes d'un TableLayoutPanel à l'exécution...

    J'y mets un certain nombre de radiobuttons en fonction du nombre d'objets que je récupère dans la DB (un par colonne) plus un bouton dans une dernière colonne.

    L'idée serait de redimensionner toutes les colonnes pour quelles aient la même taille.

    Au niveau du nombre de colonnes et d'y placer les contrôles, pas de souci. Par contre, pour la taille, ça ne marche pas XD.

    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            'Dim columnWidth As Single = CType(Math.Floor(100 / percentagesDemo.Count + 1), Single)
            For Each cs As ColumnStyle In tlpDemo.ColumnStyles
                'cs.SizeType = SizeType.Percent
                cs.SizeType = SizeType.AutoSize
                'cs.Width = columnWidth
            Next
    Comme vous pouvez le voir, j'ai essayé plusieurs choses. J'ai tenté de calculer moi-même le pourcentage à appliquer aux colonnes. J'ai tenté de mettre la largeur à 100% pour toutes les colonnes (et de laisser le tlp se démerder comme il le fait si bien en mode design).

    En mettant autosize, j'ai un bout en largeur qui n'est pas utilisé.

    Bref, je sèche un peu.

    Voici ce que cela donne en mettant le SizeType en pourcent et Widt sur 100.
    Nom : Untitled.png
Affichages : 1645
Taille : 79,0 Ko
    N.B. : Le tlp se trouve en plein milieu juste au dessus du DataGridView

    Quelqu'un a-t-il déjà fait cela ??
    Kropernic

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Le TLP est bien avec les radios bouttons ?

    Sur l'image on dirait que la case du premier radio button possède 60% et les autres se partagent le reste... C'est la cas ou juste une illusion ?

    Et une fois l'affichage terminé, tu as essayer de mettre un espion sur le TLP pour constater le vrai % appliqué à chacune d'entres elles ?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    J'ai ajouté ceci après la boucle qui fait le resize :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each cs As ColumnStyle In tlpOwn.ColumnStyles
                MsgBox(cs.SizeType.ToString & "-" & cs.Width.ToString)
            Next
    Et il ne m'affiche qu'une seule boite... Comme s'il n'y avait qu'un seul ColumnStyle...

    Je n'y comprends plus rien... Y a une instruction à faire pour "sauvegarder" les columnstyles ???
    Kropernic

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Non, j'ai tester ta boucle et elle marche très bien pour moi.

    Il m'a afficher les bonnes valeurs de mes 3 colonnes.


    Question bête du coup : Tu n'aurais pas mis un TLP dans un autre TLP ?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Et j'ai une suggestion, car le TLP demande parfois d'imagination pour arriver à avoir le visuel que l'on souhaite:

    Tu as disons, X RadioBoutton à mettre :

    tu pourrais créer :

    - une colonne vide à 50%
    - x colonnes à Autosize (donc pile de la bonne taille)
    - et une dernière colonne vide à 50%

    Ce qui fait que :
    - Ton TLP va remplir toute la largeur grâce aux colonnes en %
    - tes radiobouttons seront centré au milieu vu qu'il voudra mettre la première et la dernière colonne à la même taille...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    regarde le code généré par vs en mode design quand tu arrives à égaliser les colonnes, tu devrais alors comprendre la syntaxe à utiliser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Merci Pol63 pour le trick du designer.

    Voici ce que je trouve pour un autre tlp dont les colonnes ne varient pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Me.tlpDays.ColumnCount = 7
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
            Me.tlpDays.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 14.28571!))
    J'en déduis donc qu'en plus de définir le nombre de colonne, il faut aussi ajouté un columnstyle pour chacune (en tenant en compte qu'au runtime, il y en a déjà un !).

    Sinon, que veut dire le "!" qui se trouve après la taille en pourcent ?? J'imagine que ça doit être pour spécifier le datatype du nombre qui se trouve juste devant un peu comme "a"c pour dire qu'il s'agit du caractère "a" et non de la chaîne "a". Mais de quel type s'agit-il ? J'imagine un décimal ou un double... Bref, pas très important.

    Je vais donc tester cela mais je ne doute pas que cela va fonctionner du coup.

    EDIT : Effectivement, ça se met bien comme il faut maintenant.
    Kropernic

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca semble être float (single) dixit google
    mais ce n'est pas le symbole "prioritaire" pour faire ca, on utilise plus f

    pour rappel suffixer un nombre avec un identifieur de type permet d'éviter au compilateur de décider et de potentiellement se tromper
    genre pour un nombre qui ressemble à un entier mais qu'on veut gérer en tant que decimal (d)
    sur certains langages ca provoquerait un mauvais typage lors de calcul, avec donc une perte d'info, je ne sais pas ce qu'il en est sur vb.net mais sur sql server c'est fréquent
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ca semble être float (single) dixit google
    mais ce n'est pas le symbole "prioritaire" pour faire ca, on utilise plus f

    pour rappel suffixer un nombre avec un identifieur de type permet d'éviter au compilateur de décider et de potentiellement se tromper
    genre pour un nombre qui ressemble à un entier mais qu'on veut gérer en tant que decimal (d)
    sur certains langages ca provoquerait un mauvais typage lors de calcul, avec donc une perte d'info, je ne sais pas ce qu'il en est sur vb.net mais sur sql server c'est fréquent
    Ouais, le d, je connaissais. Et effectivement, sur sql server, l'utilisation des bons types de données est primordiale. C'est d'ailleurs une erreur très fréquente des débutants qu'on rencontre sur le forum développement.
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JavaScript] Redimensionner les colonnes d'un tableau ( drag and drop )
    Par le_chomeur dans le forum Contribuez
    Réponses: 2
    Dernier message: 15/01/2010, 09h09
  2. Redimensionner les colonnes et les lignes d'un stringGrid
    Par codial dans le forum Composants VCL
    Réponses: 12
    Dernier message: 29/09/2009, 15h50
  3. Redimensionner les colonnes de JTable
    Par lamis2009 dans le forum Composants
    Réponses: 1
    Dernier message: 21/06/2009, 02h04
  4. Redimensionner les colonnes d'une listview
    Par Gaetch dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/07/2007, 10h36
  5. List box : Comment redimensionner les colonnes ?
    Par Invité dans le forum IHM
    Réponses: 1
    Dernier message: 26/06/2007, 07h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo