Listview

jackso40 Messages postés 9 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 juillet 2008 - 27 mars 2008 à 22:53
jackso40 Messages postés 9 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 juillet 2008 - 29 mars 2008 à 21:48
Bonjour,
c'est la premiere fois que j'utilise une Listview et je me demandais comment faire pour lorsque je cherche ma form,
la premiere ligne de ma ListView soit selectionnée et récuperer la donnée qui se trouve dans la premiere colonne (elle correspond à l'Id de la table de ma Base de donnée.

Merci d'avance pour l'aide!! 

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 mars 2008 à 04:11
Salut
"lorsque je cherche ma form" : Tu veux dire "charge" ?

Ajouter un item :
Il faut d'abord dimensionner un objet ListItem correspond à la ligne que tu vas ajouter :
   Dim xItem As ListItem
Puis le déclarer
   Set xItem = ListView1.ListItems.Add(, , "Colonne 1")
Et si tu as des SubItems (des colonnes supplémentaires à la colonne principale)
   xItem.SubItems(1) = "Colonne 2"

Quand tu veux positionner la sélection sur un des Items :
   ListView1.ListItems.Item(1).Selected = True
Eventuellement aussi ceci si la liste est longue et que tu ne vois pas l'item
   ListView1.ListItems.Item(1).EnsureVisible

La donnée de la colonne 1 de la ligne 5 est :
   ListViex1.ListItems.Item(5).Text
La donnée de la colonne 2 de la ligne 5 est :
   ListViex1.ListItems.Item(5).SubItem(1)

Avec les ListView, il faut bien comprendre que la première colonne est la colonne maîtresse.
Les colonnes suivantes sont des SubItems qui commencent à 1 alors qu'il s'agit de la 2ème colonne

Voir l'aide pour les détails + les sources du site

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jackso40 Messages postés 9 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 juillet 2008
28 mars 2008 à 15:16
Oui, désolé, j'ai pas relu mais c'est bien chargé que je voulais dire...

Merci pour ta réponse, je vais regarder à ça.
0
jackso40 Messages postés 9 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 juillet 2008
28 mars 2008 à 15:35
re,
Je viens de tester mais ça ne fonctionne pas. Voilà mon code:

             Dim i       As Long
             Dim j       As Long
             Dim Itmx    As ListItem

             For i = 1 To rsADO.RecordCount 
                While Not rsADO.EOF

                    Set Itmx = ListViewContacts.ListItems.Add(, , CStr(rsADO.Fields(0).Value))

                       For j = 1 To rsADO.Fields.Count - 1
                           Itmx.SubItems(j) = IIf(LenB(rsADO.Fields(j).Value) > 0, rsADO.Fields(j).Value, vbNullString)
                       Next j
              
                rsADO.MoveNext
                Wend
             Next i
            
            ListViewContacts.ListItems.Item(1).Selected = True
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 mars 2008 à 01:18
Salut
La prochaine fois, tu diras pourquoi ça ne marche pas, quelle erreur, quel résultat, quelle attente ...
En fait, tu fais deux fois la même boucle : une fois avec le For-Next et une autre avec le While-Wend + une erreur classique : tu oublies de passer à l'enregistrement suivant.
Si tu avais chargé une ou deux sources qui traitent des base de données, tu aurais vu ce code incontournable de scrutation des résultats d'un RecordSet :
   With monRS
      .MoveFirst
      Do While Not .EOF
         Debug.Print .Fields("monChamp").Value
         ' ici ton code d'insertion ListView
         .MoveNext
      Loop
   End With

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jackso40 Messages postés 9 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 juillet 2008
29 mars 2008 à 21:48
Ok, désolé mais ça me paraissait clair vu que ma question était simplement de savoir comment faire pour que
"la premiere ligne de ma ListView soit selectionnée et récuperer la donnée qui se trouve dans la premiere colonne"
 
Dans le code que j'ai mis, j'ai juste inserer la ligne conseillée pour selectionner la premiere ligne de ma ListView soit:
 
ListViewContacts.ListItems.Item(1).Selected = True

Et donc voila, ça ne fonctionne pas puisque elle n'est pas selectionnée au chargement. Je n'ai aucun message d'erreur, c'est juste qu'elle n'est pas selectionnée. Pour le reste de mon code, c'est ce que j'avais deja ecrit avant et je n'ai aucun soucis avec, il affiche bien mes infos. Je suis d'accord avec le fait que je fais 2 fois la meme boucle. J'ai corrigé ça, mais je ne vois pas pq tu dis que je ne passe pas à l'enregistrement suivant. Bien sur que si, d'ailleurs mon code fonctionne très bien.
0
Rejoignez-nous