Listviewex

Soyez le premier à donner votre avis sur cette source.

Vue 11 583 fois - Téléchargée 1 622 fois


Description

Je souhaitais une ListView plus agréable graphiquement et offrant quelques fonctions supplémentaires. Après de longues heures de recherche, je me suis décidé à prendre le meilleur de ce que je pouvait trouver sur le net.
Les codes trouvés ici et là (VB.Net ou C#) ont nécessité pas mal d'adaptation pour être imbriqués ensemble mais pour chaque partie de code j'ai mentionné le lien de la source originale. Si pas de lien, alors le code est de moi.

Voici options ajoutées :
- Gestion des Group
- Possibilité de masquer automatiquement la colonne qui sert au groupement des Item
- Possibilité d'agrandir automatiquement une colonne (ou toutes) en remplacement de la colonne masquée
- Image de fond avec gestion de la transparence
- Tri sur clic d'une en-tête de colonne
- Affichage d'une icone sur l'en-tête de colonne en fonction du sens de tri (de/croissant)
- Impression et Apperçu avant impression de la ListView (+ gestion des propriétés d'impression)
- Gestion du double-clic lorsque la LV est en mode CheckBox
- Mode ExViewMode pour le côté graphique des item (voir capture) (incompatible avec le mode CheckBox)

Conclusion :


Merci aux auteurs des sources suivantes :

http://www.vbfrance.com/codes/EXLISTVIEW-LISTVIEW-PERSONNALISE_50069.aspx
http://www.csharpfr.com/codes/ROUNDEDRECTANGLE-CREEZ-RECTANGLES-AVEC-COINS-ARRONDIS_35392.aspx
http://www.codeproject.com/KB/list/PrintableListView.aspx
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=7394&lngWId=10
http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=5234&lngWId=10
http://www.thebitguru.com/articles/16-How%20to%20Set%20ListView%20Column%20Header%20Sort%20Icons%20in%20C

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Londonic
Messages postés
298
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
26 septembre 2009

Trés belle démo, 10/10. Je la garde sous le coude.
J'ai utilisé la listview pour relier (adressage relatif) les raccourcis aux programmes quand on déplace la clé. C'est un vieux projet que j'appellais automenu et que j'ai renommé lanceur parce que mon automenu sera un controle utilisateur de selection d'étiquette (Je compte gérer des codes internes et laisser l'utilisateur se débrouiller avec le vocabulaire de l'application).
Je n'avais pas l'intention de le poster, mais si ca peut donner des idées.
bouv
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
J'ai modifié pas mal de choses :

- Problème de l'ImageIndex corrigé
- Problème du PrintSetup corrigé (suffisait d'ajouté mSetupDlg.EnableMetric = True)
- Gestion des Groups améliorés (noms de propriétés plus harmonieux, plus performant,...)
- Tout le code ExViexMode a été réécrit (options ajoutés, variables renommées, code restructuré, bugs corrigés). C'est beaucoup plus clair ainsi et plus fidèle à la LV originale

Je poste ça dans 5 min.
PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016

Merci Bouv,

Ca fonctionne en ajoutant ImageIndex. (la mise à jour de ton code pour ne pas rendre obligatoire cette option m'intéresse, mais rien est pressé !)

Je vais essayer d'être plus explicite pour le 2e problème (il est vrai que j'étais légèrement brouillon)

1) Imprime
2) Mesure la marge haut (2,54 cm = 1 pouce)
3) Mise en page
4) Valider (10 mm)
5) Imprime
6) Mesure la marge haut (1 cm : la marge est 2.54 fois plus petite)
7) Mise en page
8) Valider (3.9 mm)
9) Imprime
10) Mesure la marge haut (la marge est 2.54 fois plus petite)
11) Mise en page
12) Valider (1.5 mm)
et ainsi de suite...

Conclusions :
Après validation de la mise en page sur 1 certaine taille, la page est correctement imprimée à la bonne taille.
Cependant, lors de l'affichage des valeurs de mise en page, les valeurs sont erronées et sont 2.54 fois trop petite.
Quand on affiche les valeurs, elles sont exprimées en dixièmes de pouce.
Quand on valide les valeurs, elles sont exprimées en millimètres.

Conséquence :
Si l'on configure la mise en page et que l'on valide sans modifier aucune valeur, les valeurs sont divisées par 2.54 (pour rappel, 1 pouce = 2.54 cm)
bouv
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Pour la méthode d'ajout des items, je vois d'où viens le problème. Il faut impérativement spécifier la propriété ImageIndex.
Essai le code suivant :

Dim lvi As New ListViewItem(LV.Items.Count)
lvi.SubItems.Add(LV.Items.Count)
lvi.ImageIndex = 0
LV.Items.Add(lvi)

Je tenterai de corriger ça prochainement.

Par contre j'ai pas tout pigé au deuxième problème.
PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016

Bonjour,

A première vue, cette listview me semble très bien !

Et je crois que je vais maintenant l'utiliser pour mes futures appli.

J'ai rajouté 1 bouton pour ajouter 1 item à la LV afin de vérifier le nombre de pages pour l'impression, c'est tout bon ! (par contre, bizarrement, je ne sais pas encore pourquoi, je n'ai pas poussé la recherche, mais la ligne ajoutée était vide, j'ai donc utilisé ta méthode, j'en profite pour mettre le code à la fin de ce commentaire)

J'ai par contre constaté 1 bug que je connaissais, je n'avais pas vérifié si ce bug était corrigé depuis, mais il semble que non, bug constaté la 1ère fois il y a quelques années en VB .Net 2003, qui semble bizarrement toujours d'actualité avec VB .Net 2008 Express : aperçu, on voit des marges d'environ 2.5 cm, mise en page, ca affiche 10 (mm) mais il s'agit en fait de l'affichage de 10 dixième de pouce, soit 1 pouce, soit 2.54 cm, ce qui semble correspondre à la marge constatée visuellement, si on valide, les 10 (mm) sont enregistrées, aperçu, la marge est réduite à priori à 1 cm (donc les 10 mm semblent ok), re mise en page, et le nombre a encore été divisé par 2.54 ! et ainsi de suite... (j'espère m'être fait comprendre)

Bonne prog !
++

Private Sub Button_Ajoute_1_item_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Ajoute_1_item.Click
'Dim lvi As New ListViewItem(LV.Items.Count)
'lvi.SubItems.Add(LV.Items.Count)
'LV.Items.Add(lvi)
Dim MyItem As ListViewItem
MyItem = New ListViewItem(New String() {"DMB GS.mp3", "Dave Matthews Band", "Grey Street", "Busted Stuff"}, 0)
With LV
.Items.Add(MyItem)
End With
End Sub

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.