TRI DES ITEMS DE LISTVIEW (DATE, NUMÉRIQUE OU PERSO)
PROTEUS91
Messages postés156Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 décembre 2010
-
19 mai 2009 à 19:21
ofils
Messages postés19Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention 8 février 2015
-
11 nov. 2010 à 09:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ofils
Messages postés19Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention 8 février 2015 11 nov. 2010 à 09:55
Salut,
Merci pour ta réponse, dommage....
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 nov. 2010 à 09:05
voir ma reponse precedante... typiquement le même cas
ofils
Messages postés19Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention 8 février 2015 30 oct. 2010 à 16:09
Salut Renfield,
Super ton code, malheureusement, je n'ai pas trouvé le moyen de conserver la couleur (forecolor) de la ligne associée (déplacer la couleur avec la ligne)dans ton tri personnalisé (Listview2).
Si par exemple on met un .forecolor = vbred à l'item Text:="1", le "1" de la ligne 1 est bien en rouge, mais après un tri dans Listview2, le "1" change de ligne et de couleur, et la première ligne conserve la couleur rouge.
As-tu une solution ??
Merci
Jean
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 janv. 2010 à 10:10
Il faut bien garder une chose à l'esprit.
ce qu'on place dans notre Form est un OCX.
cet OCX instancie une fenetre windows de type ListView32.
le tri se passe parfaitement bien, manipulant directement la fenetre via la hWnd.
l'OCX, lui est une couche supplementaire entre nous et ladite fenetre.
lorsque nous jouons avec la fenetre, certaines de ces propriétés ne suivent pas.
c'est le cas pour le SelectedItem, qui est surement géré "localement", dans l'OCX
le cas aussi pour le tag ou autres attributs supplémentaires.
cs_FredT
Messages postés65Date d'inscriptionmardi 18 février 2003StatutMembreDernière intervention11 avril 2009 13 janv. 2010 à 08:47
Salut:
complément d'info, car j'ai tout de meme repris le code, avec ajouts de "rustines" pour par exemple retrouver un item précis :
j'ajoute une colonne "id" masquée avec un width=0, puis un vilain for each pour retrouver l'id cherché, au lieu d'un simple lvwControl.ListItems(monID). Bref ...
Autre BUG avec l'Event ItemClick:
Private Sub lvwControl_ItemClick(ByVal Item As Object)
'Essai donc ça :
Debug.Print "Item.Text: " & Item.Text
Debug.Print "LVW SelectedItem: " & lvwControl.SelectedItem.Text
Surprise ! Item est censé etre la nouvelle sélection, n'est ce pas... ben pas là!
bonne reflexion :)
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 déc. 2009 à 20:14
effectivement je n'ai pas testé cela, mais je prendrai le temps de le faire.
sur que si on ne peux garder de lien vers des propriétés c'est embettant ....
cs_FredT
Messages postés65Date d'inscriptionmardi 18 février 2003StatutMembreDernière intervention11 avril 2009 21 déc. 2009 à 18:09
slt. Bon code, simple et efficace, Marche bien en apparence, dans le sens du terme, mais y'a un gros hic en arrière plan.
Explication, Le texte et la mise en forme qui va avec (forecolor, bold ...) sont bel et bien triés quel que soit le type ou l'ordre: jusqu'à là pour l'affichage tout va bien. Quoique j'ai pas vérifier pour 'tooltip'.
Mais pour les properties 'index' (celui ci au pire pas grave), mais 'key' et 'tag', là ça devient extra embetant: y'a aucun trie la position reste identique à celle où l'item à été créé.
Généralement tag est utilisé pour conserver des infos masquées utile au prog et key ... ben... pour retrouver un item précis. Alors une utilisation un peu trop rapide a mis quelque peu la pagaille dans les données, le temps de m'en rendre compte.
Config d'utilisation : une appli Ms-Access 2003, elle tourne sur win XP pro (à jour), MSCOMCTL.OCX version 6.1.97.86
Une solution? ou est-ce ma config qui convient pas ?
Merci
yan35
Messages postés185Date d'inscriptiondimanche 29 juin 2003StatutMembreDernière intervention20 juin 2013 10 juin 2009 à 00:25
Vraiment Super cette astuce. Grand Merci de la partager. 10/10
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 20 mai 2009 à 10:05
j'ai pas d'avis là dessus... je joue peu avec ^^
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 20 mai 2009 à 10:00
ok download.
Je ne travaille pratiquement pas avec le listview, mais avec le datagrid, j'ai de ce fait un composant pour toutes mes listes basé sur un datagrid.
L'avantage que je trouve au Datagrid est de pouvoir le basé sur un recordset. dans le cas de ton exemple, ta procédure "Populate" créerai un recordset avec les champs (numerique, texte et date) que je passerai a la propriété datasource du datagrid. de ce fait je peux faire le filtrage quelque soit la colonne et en combinaison avec plusieurs critères, idem pour le tri. je peux dire que je suis plutot assez satisfait de l'avantage de manipuler le recordset.
Le seul probleme que je rencontre pour le cas du filtre, c'est la mise a jour du datagrid, qd je requery le recordset je n'ai pas de raffraichisement sur le datagrid. Je dois reconstruire pour chaque filtrage.
Juste pour information, Renf qu'est ce que tu en penses?, y'a t-il des inconvenients avec le datagrid?.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 20 mai 2009 à 09:10
Chose promise...
l'icones est moche, vite-faite sous paint... mais bon ^^
j'ai aussi nettoyé un peu le code.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2009 à 19:30
pas faux, je mettrai ca demain.
PROTEUS91
Messages postés156Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 décembre 2010 19 mai 2009 à 19:21
Je sais que c'est du chipotage mais on pourrai peut être ajouter une fleche vers le bas ou vers le haut dans la colonne ou on a cliqué.
Sinon, Code toujours aussi propre et qui va a l'essentiel !
11 nov. 2010 à 09:55
Merci pour ta réponse, dommage....
8 nov. 2010 à 09:05
30 oct. 2010 à 16:09
Super ton code, malheureusement, je n'ai pas trouvé le moyen de conserver la couleur (forecolor) de la ligne associée (déplacer la couleur avec la ligne)dans ton tri personnalisé (Listview2).
Si par exemple on met un .forecolor = vbred à l'item Text:="1", le "1" de la ligne 1 est bien en rouge, mais après un tri dans Listview2, le "1" change de ligne et de couleur, et la première ligne conserve la couleur rouge.
As-tu une solution ??
Merci
Jean
13 janv. 2010 à 10:10
ce qu'on place dans notre Form est un OCX.
cet OCX instancie une fenetre windows de type ListView32.
le tri se passe parfaitement bien, manipulant directement la fenetre via la hWnd.
l'OCX, lui est une couche supplementaire entre nous et ladite fenetre.
lorsque nous jouons avec la fenetre, certaines de ces propriétés ne suivent pas.
c'est le cas pour le SelectedItem, qui est surement géré "localement", dans l'OCX
le cas aussi pour le tag ou autres attributs supplémentaires.
13 janv. 2010 à 08:47
complément d'info, car j'ai tout de meme repris le code, avec ajouts de "rustines" pour par exemple retrouver un item précis :
j'ajoute une colonne "id" masquée avec un width=0, puis un vilain for each pour retrouver l'id cherché, au lieu d'un simple lvwControl.ListItems(monID). Bref ...
Autre BUG avec l'Event ItemClick:
Private Sub lvwControl_ItemClick(ByVal Item As Object)
'Essai donc ça :
Debug.Print "Item.Text: " & Item.Text
Debug.Print "LVW SelectedItem: " & lvwControl.SelectedItem.Text
Surprise ! Item est censé etre la nouvelle sélection, n'est ce pas... ben pas là!
bonne reflexion :)
++
21 déc. 2009 à 20:14
sur que si on ne peux garder de lien vers des propriétés c'est embettant ....
21 déc. 2009 à 18:09
Explication, Le texte et la mise en forme qui va avec (forecolor, bold ...) sont bel et bien triés quel que soit le type ou l'ordre: jusqu'à là pour l'affichage tout va bien. Quoique j'ai pas vérifier pour 'tooltip'.
Mais pour les properties 'index' (celui ci au pire pas grave), mais 'key' et 'tag', là ça devient extra embetant: y'a aucun trie la position reste identique à celle où l'item à été créé.
Généralement tag est utilisé pour conserver des infos masquées utile au prog et key ... ben... pour retrouver un item précis. Alors une utilisation un peu trop rapide a mis quelque peu la pagaille dans les données, le temps de m'en rendre compte.
Config d'utilisation : une appli Ms-Access 2003, elle tourne sur win XP pro (à jour), MSCOMCTL.OCX version 6.1.97.86
Une solution? ou est-ce ma config qui convient pas ?
Merci
10 juin 2009 à 00:25
20 mai 2009 à 10:05
20 mai 2009 à 10:00
Je ne travaille pratiquement pas avec le listview, mais avec le datagrid, j'ai de ce fait un composant pour toutes mes listes basé sur un datagrid.
L'avantage que je trouve au Datagrid est de pouvoir le basé sur un recordset. dans le cas de ton exemple, ta procédure "Populate" créerai un recordset avec les champs (numerique, texte et date) que je passerai a la propriété datasource du datagrid. de ce fait je peux faire le filtrage quelque soit la colonne et en combinaison avec plusieurs critères, idem pour le tri. je peux dire que je suis plutot assez satisfait de l'avantage de manipuler le recordset.
Le seul probleme que je rencontre pour le cas du filtre, c'est la mise a jour du datagrid, qd je requery le recordset je n'ai pas de raffraichisement sur le datagrid. Je dois reconstruire pour chaque filtrage.
Juste pour information, Renf qu'est ce que tu en penses?, y'a t-il des inconvenients avec le datagrid?.
20 mai 2009 à 09:10
l'icones est moche, vite-faite sous paint... mais bon ^^
j'ai aussi nettoyé un peu le code.
19 mai 2009 à 19:30
19 mai 2009 à 19:21
Sinon, Code toujours aussi propre et qui va a l'essentiel !
Je plussois :p