Mettre en surbrillance une ligne d'une listview [Résolu]

Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
- 19 avril 2009 à 19:25 - Dernière réponse :
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 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 ???

Merci à tous de votre précieuse aide.
Jean-Yves
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
- 20 avril 2009 à 13:31
3
Merci
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...

Il manque juste un test de fin de liste...

Merci jytest 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de jytest
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
- 19 avril 2009 à 22:28
0
Merci
J'ai trouvé sur un autre forum et site ceci :
ListView1.ListItems(i).Selected = True
ListView1.ListItems(i).EnsureVisible

Cela fonctionne à merveille, sauf que la ligne 1500 est en blanc, et malheureusement pas en bleu de surbrillance.

Comment faire, svp
Commenter la réponse de jytest
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
- 19 avril 2009 à 23:07
0
Merci
Alors, maintenant, grâce à ces 2 lignes de codes, il me faudrait passer la ligne 1500 en couleur rouge...

Qui peut m'aider ???

Merci d'avance.
Commenter la réponse de jytest
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Dernière intervention
20 décembre 2010
- 20 avril 2009 à 00:55
0
Merci
salut jytest
il te faut attribuer la couleur à chaque colonne de la ligne voulue, comme suite.

For i = 1 To 4
     ListView1.ListItems(1500).ListSubItems(i).ForeColor = RGB(0,0,255)
Next i
 
Les indices de colonnes sont peut-être ( 0 à 3 ) et non pas ( 1 à 4 ), je ne m'en souviens pas.
Commenter la réponse de cnt
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 avril 2009 à 01:06
0
Merci
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

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 avril 2009 à 01:11
0
Merci
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)

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
Commenter la réponse de LIBRE_MAX
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
- 20 avril 2009 à 03:14
0
Merci
ok, merci à tous déjà.

Je me suis mal exprimé...
Ce que je veux, c'est mettre un fond rouge sur la ligne 1500.

A l'aide svp
Commenter la réponse de jytest
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
- 20 avril 2009 à 03:22
0
Merci
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...

Pourquoi? Pourquoi?
A l'aide, svp
Commenter la réponse de jytest
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 20 avril 2009 à 07:58
0
Merci
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.

Voilà presque tout !
       
<hr />


[] Ce qui va sans dire. va mieux en le disant.


<hr />
Commenter la réponse de LIBRE_MAX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.