jytest
Messages postés315Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention22 décembre 2014
-
19 avril 2009 à 19:25
jytest
Messages postés315Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention22 décembre 2014
-
20 avril 2009 à 13:31
Bonsoir à tous,
Je ne maîtrise pas les listview...
Me revoilà donc avec les listview...
J'ai une listview avec 4000 lignes.
Elle est avec 4 colonnes.
A l'ouverture de cette listview, vu la hauteur
que j'ai déterminée, je ne vois que 4 lignes simultanément.
Par une richtextbox, j'introduis un contenu de la 1re colonne...
Par boucle, j'arrive à trouver l'index de cette data dans la listview.
Mais comment mettre cette ligne (par exemple, la ligne 1500) visible en tête de liste, et en surbrillance, exactement comme si j'avais cliqué sur une ligne de la listview ???
jytest
Messages postés315Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention22 décembre 2014 20 avril 2009 à 13:31
Voilà, j'ai la solution !!!
For i = indClient To 1 Step -1
If UCase(Left(ListView1.ListItems(i), Len(txtRecherche))) = _
UCase(txtRecherche) Then
ListView1.ListItems(i + 3).Selected = True
ListView1.ListItems(i + 3).EnsureVisible
ListView1.ListItems(i).Selected = True
ListView1.ListItems(i).EnsureVisible
End If
Next i
Il fallait :
- d'abord rechercher dans la listview, en démarrant du dernier élément...
- ensuite, fausser les espions, en demandant de d'abord visuliser 3
éléments plus loin (vu que ma liste visible comprend 4 lignes), et puis de
revisualiser le véritable élément à mettre en surbrillance...
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 20 avril 2009 à 01:06
Salut,
Pour sélectionner une ligne tout en la remontant si elle se trouve en bas de la liste,une seule ligne suffit:
ListView1.ListItems(i).Selected = ListView1.ListItems(i).EnsureVisible
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 20 avril 2009 à 01:11
cnt,
les subitems commencent à 1 à partir de la deuxième colonne.
Pour la première, il faudra penser à la faire en dehors de la boucle.
ListView1.ListItems(1500).ForeColor = RGB(0,0,255)
jytest
Messages postés315Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention22 décembre 2014 20 avril 2009 à 03:22
Pourquoi
ListView1.ListItems(i).Selected = ListView1.ListItems(i).EnsureVisible
ne fonctionne pas chez moi...
La ligne sélectionnée reste en bas...
Pourquoi
ListView1.ListItems(1500).ForeColor = RGB(0,0,255)
For i = 1 To 3
ListView1.ListItems(1500).ListSubItems(i).ForeColor = RGB(0,0,255)
Next i
ne fonctionne pas non plus chez moi...
Les caractères reste en noir...
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 20 avril 2009 à 07:58
A ma connaissance,Il y a bien des codes pour changer le fond d' une seule ligne,mais ils sont très ardus.Crois moi, le jeu ne vaut pas la chandelle !
Désolé, j' ai pas d' exemple précis.Tu peux toujours faire une recherche sur le sujet.
Pour le reste,ta ListView est-elle style Report ? Car
ListView1.ListItems(1500).Selected = ListView1.ListItems(1500).EnsureVisible
Fonctionne parfaitement bien.
Explication:
ListView1.ListItems(1500).Selected =True
Pas de problème,la ligne 1500 sera sélectionnée.
Seulement, cela ne suffit pas.
Si elle est en bas de la liste et pas visible, elle le restera.
Il y a bien la methode EnsureVisible.Le problème c' est que tu ne peux pas
écrire par exemple:
ListView1.ListItems(1500).EnsureVisible=True
ou quelque chose du genre.
A mon avis,c' est elle qu' elle doit nous renvoyer quelque chose.
Je ne saurai dire ni quoi ni comment.
Tout ce que je sais c' est qu'il faut qu' au moment de la selection, on s' assure que la ligne en question reste visible.D' ou cette ecriture.
ListView1.ListItems(1500).Selected = ListView1.ListItems(1500).EnsureVisible.