|
|
|||||||
| u |
Comme vous l'avez surement remarqué, lorsque l'on sélectionne une ligne d'un ListView, seule la colonne principale (celle qui est remplie avec la propriété "Text" du ListItem) est mise en surbrillance. Franchement ce n'est pas très esthétique et en plus pas très facile à lire car il faut bien le reconnaire, les écrans de nos Pocket PC ne sont pas des 21 pouces !
Le contrôle ListView de base permet de choisir une mise en surbrillance de toute la ligne en cas de sélection. Pour celà il faut envoyer un message de type LV_EX_FULLROWSELECT, c'est ce que nous allons faire en eVB.
Pour envoyer un message il faut utiliser la fonction "SendMessage" qui est incluse dans la librairie dynamique Coredll (comme souvent). Cette API est déclarée en eVB de la manière suivante : Declare Function SendMessage Lib "Coredll"
Alias "SendMessageW" (ByVal hWnd As Long, ByVal wMsg As Long,
ByVal wParam As Long, ByVal lParam As Long) As Long Pour envoyer un message à un contrôle, il faut donner en paramètre de la fonction "SendMessage" le handle du contrôle (le hWnd), ce qui nous pose un gros problème car le contrôle ListView de eVB ne nous fournit pas cette information. Pour contourner ce problème, nous allons récupérer le hWnd de notre ListView grace à la fonction "GetFocus" (encore une API de Coredll) qui retourne le hWnd de l'objet qui a le focus au moment de l'appel. Ce système fonctionne très bien mais il faut impérativement que le contrôle ListView soit visible et qu'il ait le focus. La fonction "GetFocus" se déclare en eVB de la manière suivante : Public Declare Function GetFocus Lib "Coredll" () As Long
Pour indiquer au ListView que l'on veut une sélection sur toute la ligne, il faut tout d'abord récupérer les paramètres de style, puis appliquer le paramètre LV_EX_FULLROWSELECT, puis remplacer les anciens paramètres par les nouveaux (3 étapes donc). Pour effectuer cette opération nous avons aussi besoin de constantes : Const LVM_GETEXTENDEDLISTVIEWSTYLE = &H1037 Nous pouvons écrire notre fonction qui va modifier le style de notre ListView et activer la sélection sur toute la ligne : Sub LVFullRowSelect(ByVal wLV As ListViewCtrl) Dim h As Long Ce qui donne ceci :
Voilà, vous savez maintenant créer
des ListView de plus lisibles.
|
||||||
|
|
|||||||
|
Copyright 2001-2004 - Tous droits réservés
|
|||||||
|
iPAQ
est un produit de COMPAQ.
|