Simulation de combobox dans un listview via click sur icône et popup menu

Soyez le premier à donner votre avis sur cette source.

Vue 9 345 fois - Téléchargée 56 719 fois

Description

Ce code permet la simulation de l'utilisation d'un combo box dans les "cellules" d'un listview en mode "report".
C'est à la base du code récupéré à l'adresse suivante (auteur: Chris Eastwood):
http://www.codeguru.com/vb/articles/2017.shtml
Le code initial permet la détection de click sur l'icône d'un sous-élément d'une colonne.
Je l'ai transformé afin de faire appaître un menu listant les valeurs et mettant à jour le champ (cellule).

A la base, je comptais faire ceci avec des ComboBox, mais je n'ai pas pu éviter les problèmes de repositionnement du ComboBox, notamment lorsqu'on déplace les scrollbars...
Avec le menu, ça marche, et c'est même d'un certain point de vue plus esthétique.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ssauvage
Messages postés
47
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
9 octobre 2012
-
Mea culpa pour les commentaires ...
En ce qui concerne la récupération de l'index de la colonne, il suffit de faire une variable globale renseignée par l'expression "tHT.lSubItem" dans la fonction "ListView1_MouseUp".
Etant donnée que je cherchais à simuler le comportement d'un ComboBox, je ne me suis pas occupé du clic droit. On pourrait très bien rajouter un test du type "If ((tHT.lFlags LVHT_ONITEMLABEL) And (Button vbRightButton))" pour faire apparaître le menu lors d'un clic droit sur le label du sous-élément ...
cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
Idée interressante mais
- le code n'est pas assez commenté à mon goût ;
- dans le cas où les valeurs pourraient être mise dans différentes colonnes, il faudrait prévoir la possibilité de récupérer l'index de la dite colonne automatiquement (donc ne plus le mettre explicitement dans le code) : ListView1.SelectedItem.ListSubItems.Item(INDEX_COLONNE).Text = mnuPopupStatus(Index).Caption ;
- prévoir une autre possibilité de faire apparaître cette liste : le bouton de gauche.

J'attends la suite avec impatience.

7/10 pour le code

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.