Le premier site francophone dédié au développement Pocket PC

Comment récupérer un pseudo double-click sur l'item d'un contrôle ListView ?
Auteur
Stéphane Sibué
Date 5 septembre 2002
 
   


Le contrôle ListView, tout petit rappel

Le contrôle ListView est l'un des contrôles fourni en standard avec eVB qui est le plus utilisé. Il permet de présenter des informations de différentes façons et de manière extrêment simple pour le développeur.

Si vous ne connaissez pas encore bien ce contrôle, vous trouverez un guide complet en 4 parties qui vous expliquera comment l'utiliser.

Seulement 6 événements pour gérer le ListView, c'est pas lourd...

Pour réagir aux actions de l'utilisateur nous ne disposons que de 6 événements qui sont AfterLabelEdit, BeforeLabelEdit, ColumnClick, GotFocus, ItemClick, et LostFocus.

Tous ces événements sont expliqués dans la permière partie du guide dont j'ai parlé plus haut, mais on peut tout de même se dire que certains événements semblent manquer à l'appel, comme par exemple le fameux Double Click qui serait très utile pour sélectionner un item et indiquer que l'on veut modifier les infos le concernant en ouvrant une fenêtre de saisie d'une quelconque fiche.

Les limites de l'événement ItemClick

Bien sûr il existe des moyens de se passer du Double Click mais celà nous oblige à ajouter un bouton sur la fenêtre ou un bouton dans la barre de menu pour que l'utilisateur clique d'abord sur l'item concerné et ensuite indique l'action qu'il souhaite effectuer.

L'événement ItemClick est déclenché à chaque sélection (par le stylet ou par un déplacement par les touches de direction). Si vous cliquez sur un item, l'événement est lancé, si vous cliquez à nouveau sur ce même item, l'événement ItemClick n'est pas relancé car l'item est déjà sélectionné.

Comme souvent avec eVB il faut détourner une fonction

En fait, ce qu'il faudrait c'est que lorsqu'on re-clique sur un item déjà sélectionné, un événement nous l'indique pour éventuellement y répondre.

Et bien cet événement existe c'est BeforeLabelEdit...

Il est possible d'éditer de manière automatique le contenu de la colonne correspondant au .Text (généralement la première colonne) en activant la saisie par un 2ème click sur l'item sélectionné. Ca ne vous rappelle rien ? C'est exactement ce qu'il nous faut.

Si on a pas besoin du mode édition, on tient notre événement manquant

Si vous n'avez pas besoin du mode édition il suffit en fait de répondre à l'événement BeforeLabelEdit en prenant bien soin d'annuler l'édition. Cet événement étant déclenché avant le passage en édition l'utilisateur ne verra strictement rien mais vous, développeur eVB, vous saurez ce qu'il a fait :

Privare Sub ListView1_BeforeLabelEdit(Cancel As Boolean)

 Rem On Annule le passage en mode Edition
Cancel = True Rem On place ici le code à executer lors de ce pseudo Double Click

End Sub

N'oubliez pas d'autoriser le passage automatique en mode édition en plaçant la propriété LabelEdit du contrôle ListView à 0 (constante lvwAutomatique).

Si vous avez besoin de la fonction d'édition automatique il n'est plus possible de détourner l'événement BeforeLabelEdit et cette astuce ne peut être utilisée.

Conclusion

Cette astuce, très simple à mettre en oeuvre, permet au final de gagner de la place sur nos fenêtres (pas besoin de bouton ou de menu supplémentaire) et aussi permet de simplifier le fonctionnement des applications en gardant le principe de fonctionnement que l'on trouve sur les ListView des PC.

Si vous avez des questions ou des remarques à propos de cet article, n'hésitez pas à vous rendre sur le forum "Articles eVB", je me ferai une joie de vous répondre.

Stéphane Sibué

 

 
   

Copyright 2001-2004 - Tous droits réservés
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.