|
|
|||||
| u |
Le mode "Report" du contrôle ListView est très pratique. Pour peu qu'on y ajoute le "FullRowSelect" et le "GridLine", cette vue est très agréable à utiliser, et pour le développeur, très agréable à programmer. Un petit casse tête est la largeur des colonnes, on ne sais jamais quelle taille donner aux colonnes au démarrage. Il y a une solution, et comme pour le "FullRowSelect" et le "GridLine", il faut envoyer un message au ListView.
Note: La technique que nous utilisons ici est celle que nous avons déjà utilisé pour rendre notre ListView FullRowSelect et pour lui ajouter une grille. 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 il faut lui envoyer pour chaque colonne un message LVM_SETCOLUMNWIDTH. Ce message est déclaré comme ceci en eVB :
Nous pouvons maintenant écrire un fonction qui retaille les colonnes : Sub LVAutosize(ByVal wLV As ListViewCtrl) Dim h As Long End Sub
Voilà, une prise de tête de moins.
|
||||
|
|
|||||
|
Copyright 2001-2004 - Tous droits réservés
|
|||||
|
iPAQ
est un produit de COMPAQ.
|