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.
23 oct. 2003 à 10:59
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 ...
22 oct. 2003 à 20:40
- 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.