Comment redimensionner les colonnes d'une listview automatiquement en fonction du contenu ? Comme quand on double-clique entre deux colonnes d'un tableau Excel quoi.
Comment redimensionner les colonnes d'une listview automatiquement en fonction du contenu ? Comme quand on double-clique entre deux colonnes d'un tableau Excel quoi.
listview.columnheaders(x).width = objAnyForm.textwidth("contenu")
Alors la partie gauche j'ai compris mais le objAnyForm.textwidth("contenu") je capte pas trop...
tu prends une de tes forms, celle sur laquelle est placée le listview par exemple, et tu fais form.textwidth("ton texte")
ça va te renvoyer la taille du texte (text = texte, width = largeur) dans la bonne unité.
Ha ouais ok d'ac mais alors il prend ma feuille comme référence pour la police c'est ça ? Donc ma feuille doit avoir la même police aue ma LisfView ? Le pb c'est que dans ma ListView j'ai certains éléments en gras, et j'ai beau mettre la police de ma feuille en gras ça a pas l'air de prendre en compte. En fait ça redimensionne bien quand c'est pas en gras mais si y'a un truc en gras ça redimensionne un chouia pas assez. Tu vois ce que je veux dire ?
En fait j'ai utilisé cette fonction sans en comprendre toutes les subtilités (c'est mal je sais). est-ce aue qn voit où je pourrais dire d'ajouter un peu à chaque colonne après le redimensionnement automatique (oui, j'ai décidé de pas me casser la tête)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Public Sub AdjustColListView(lvwListView As ListView, frmAppel As Form) ' Cette procédure ajuste automatiquement la taille des colonnes d'un ' contrôle ListView (mode détail) à leur contenu. Dim lgFor As Long ' Parcours de toutes les colonnes For lgFor = 0 To lvwListView.ColumnHeaders.Count - 1 ' Ajuste la largeur de la colonne à son contenu Call SendMessage(lvwListView.hwnd, LVM_SETCOLUMNWIDTH, lgFor, LVSCW_AUTOSIZE) ' Vérifie que le titre la colonne est toujours ' visible complètement, sinon, augmente sa taille. If lvwListView.ColumnHeaders(lgFor + 1).Width < _ (frmAppel.TextWidth(lvwListView.ColumnHeaders(lgFor + 1).Text) + 180) Then lvwListView.ColumnHeaders(lgFor + 1).Width = _ frmAppel.TextWidth(lvwListView.ColumnHeaders(lgFor + 1).Text) + 180 End If Next lgFor End Sub
utilise ça :
with lvwListView.ColumnHeaders
[code de la fonction]
end with
ça sera plus clair ...
Ou même mieux, passe par des variables intermédiaires :/
Tu verras tu comprendras toi même ...
Par contre textwidth ne gère pas la police, il se contente de gérer l'unité.
En effet une form peut être en pixels, en twips ...
Donc il faut toi même ajouter un % en fonction de ta mise en forme.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager