Synchronisation de 2 listview

Signaler
Messages postés
4
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
9 avril 2010
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
j'ai crée 2 ListView de 10 colonnes chacune l'une au desus de l'autre,
Comment syncrhoniser la selection de l'une sur l'autre?

ce code ne fonctionne pas :

Private Sub ListView1_Click()
Dim i, j As Integer
Dim LstItem As ListItem
    
    On Error Resume Next
    Set LstItem = ListView1.SelectedItem
    On Error GoTo 0
    
    If LstItem Is Nothing Then
        MsgBox "Aucune ligne n'est sélectionnée."
        GoTo fin:
        
        Else
        i = ListView1.SelectedItem.Index
              
                
        ListView1.ListItems(i).EnsureVisible
        ListView1.ListItems(i).Selected = True
        ListView1.SetFocus
        
        ListView2.ListItems(i).EnsureVisible
        ListView2.ListItems(i).Selected = True
        ListView2.SetFocus

        'MsgBox "Il y a au moins une ligne de sélectionnée."
    End If
fin:
End Sub



en fait l'une est selectionner ou l'autre, mais jamais les deux en même temps

Auriez-vous une solution?




aquecoucou

6 réponses

Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Bonjour
Il suffit de mettre à faux la propriété "HideSelection" des ListView, que ce soit à la conception ou au niveau exécution.

ListView1.HideSelection = False
ListView2.HideSelection = False
CNTJC
Messages postés
4
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
9 avril 2010

Bonjour,

Effectivement c'est la bonne solution et Merciiiii
mais en complément, comment modifier la couleur du fond de la selection?

actuellement un gris clair sur la selection et un bleu nuit roi sur l'autre ListView.


Aquecoucou
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Bonjour
Il n'est pas possible de changer la couleur simplement avec VB6, désolé.
Bonne suite

CNTJC
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
On Error Resume Next
Set LstItem = ListView1.SelectedItem
On Error GoTo 0

pas d'erreur generee ici...


ici:
Dim i, j As Integer

i est un Variant

par contre ici:
ListView1.SetFocus

une gestion d'erreur ne serait pas du luxe. Toujours prendre cette habitude avec SetFocus (crash si le controle est masque)

remarque, je ne sais pas trop pourquoi tu fais des SetFocus ici...


Ton code se resume alors en:
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim oItem As ListItem
    If Not Nothing Is Item Then
        On Error Resume Next
        Set oItem = ListView2.ListItems(Item.Index)
        If Not Nothing Is oItem Then
            oItem.Selected = True
            oItem.EnsureVisible
        End If
    End If
End Sub





Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
4
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
9 avril 2010

Bonjour,

Ok , domage, donc s'il n'y a pas d'autre solution je clos cette demande.
et la considere résolu.

Merci, pour cette réponce clair.

aquecoucou
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
faisable via de l'owner draw, mais relativement lourd pour un tel résultat

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp