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 6 et antérieur Discussion :

Listview no resize col


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Listview no resize col
    Bonjour,
    Je viens d'effecture une recherche mais j'ai pas trouvé...
    comment fait-on pour bloquer le redimensionnement des colonnes d'un listview?
    Merci

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Moi non plus, pour l'instant. Mais je dois passer à autre chose maintenant. Peut-être qu'en cherchant du côté des API Windows...

    Bonne chance.

  3. #3
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 18
    Par défaut
    Quelqu'un a t'il trouvé une solution car cela fait aussi un petit moment que je cherche?

    A part biensur, de se servir de l'evenement OnResize des colonnes pour redimensionner en dur à leur taille originale.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Tu as le choix...


    Je te donne ici 2 solutions :

    1) La plus facile : l'utilisation d'un timer pour restituer systématiquement les dimensions :

    Formule du genre (pour chaque colonne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView1.ColumnHeaders.Item(n).Width = .....
    2) la plus élégante mais la plus complexe : masquer tes entêtes par un cadre invisible (un vrai, hein... pas du type où on peut "cliquer au travers")... Mais celle-là demande un niveau bien plus élevé.

    Il y en a d'autres, mais je crois que tu devrais te cantonner à la solution facile du timer.

    Edit : tiens : une autre encore (bien que je ne l'aime pas du tout pour mille et une raisons ...) : interdire au cuseur de ta souris d'aller dans la zone où on peut modifier la taille des colonnes ).

    Et une autre encore moins gourmande : laisser les modifications de taille se faire mais rétablir la situation au vrais moments "cruciaux" (au mousemove sur les colonnes elles-même , pas sur les headers), qui ne nécessite aucun timer.

    J'arrête (car la liste des stratégies possibles est vraiment longue...)

  5. #5
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 18
    Par défaut
    Ok merci pour ces nombreuses solutions.

    ps: Mr Microsoft merci de nous mettre une propriete true /false dans la prochaine version.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Tiens, j'ai voulu chercher un moyen de le faire pour pas trop cher et sans timer.

    Idée :

    1) le focus est donné à la listview si l'on utilise la souris dans sa partie supérieure (là où on peut modifier les largeurs)
    2) on saisit alors l'évènement GotFocus pour "forcer la main"
    3) il est alors clair qu'il faut à nouveau perdre de focus si on corrige, de sorte à obliger l'utilisateur à y revenir (et donc à passer à nouveau par l'évènement espion GorFocus).

    Mécanisme, donc : si on corrige ===>> enabled False ===>> perte focus ===>> enabled True (tout bête mais efficace).

    Exemple (ici pour former la 1ère colonne à rester à sa largeur (supposons 400) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub ListView1_GotFocus()
      madim = 400
      If ListView1.ColumnHeaders.Item(1).Width = madim Then Exit Sub
      ListView1.ColumnHeaders.Item(1).Width = madim
      ListView1.Enabled = False
      ListView1.Enabled = True
    End Sub
    sans faille sur ma machine.

    Tu dis...

    Edit : attention : il est clair que ta form doit pour ce faire contenir au moins un autre contrôle pouvant recevoir le focus (quel qu'il soit)

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. [C#] ListView resize auto des colonnes
    Par aeled dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/04/2006, 09h46
  3. listview ??
    Par Galdarion dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/09/2002, 17h02
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 10h42

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