IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

dag & drop réversible sur lisbox


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 34
    Points
    34
    Par défaut dag & drop réversible sur lisbox
    Bonjour,
    je travail sur une form ou il ya plus de 30 listbox
    la première listbox relier a une base de donnée access.
    j'utilise un drag & drop pour glisser les item de la list1 sur les autres listes.et je veux que ça fonctionne entre toute les liste. chaque item glisser de ça listbox vers une autre listbox ,s'élimine de ça listbox initiale et non pas de la list1.
    Merci d'avance de votre aide


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    'entre list1 et list2
    Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        List1.OLEDrag
        If List1 = "" Then
        MsgBox "PAS DE PERSONNELS DANS LA LISTE "
        End If
    End Sub
    Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
        AllowedEffects = vbDropEffectMove
        Data.SetData List1
    End Sub
    Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim strList As String
        If Not Data.GetFormat(vbCFText) Then Exit Sub
        strList = Data.GetData(vbCFText)
        If Not strList = List2.Text Then
            List2.AddItem strList
            List1.RemoveItem List1.ListIndex
        End If
    End Sub
    Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        List2.OLEDrag
    End Sub
    Private Sub List2_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
        AllowedEffects = vbDropEffectMove
        Data.SetData List2
    End Sub
    Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim strList As String
        If Not Data.GetFormat(vbCFText) Then Exit Sub
        strList = Data.GetData(vbCFText)
        If Not strList = List1.Text Then
            List1.AddItem strList
            List1.RemoveItem List1.ListIndex
        End If
    End Sub

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Salut

    Si j'ai bien compris: 3 Listbox sur un Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit
    Dim T As Integer
    Dim Existe As Boolean
    Dim SourceListe As ListBox
    Private Sub Form_Load()
    List2.OLEDragMode = 1
    List3.OLEDragMode = 1
    List2.OLEDropMode = 1
    List3.OLEDropMode = 1
     
    List1.Clear
    For T = 1 To 5
       List1.AddItem T & " fois"
    Next T
    End Sub
     
    Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    List1.OLEDrag
    End Sub
    Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
    'Se produit lorsqu'une opération glisser-déplacer OLE est initialisée manuellement ou automatiquement.
    AllowedEffects = vbDropEffectCopy
    Data.Clear
    Data.SetData List1.Text, vbCFText 'format texte
    Set SourceListe = List1
    End Sub
     
    '----------------------------------------------------------------------------------------------------
    Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If List2.Text <> "" Then List2.OLEDrag
    End Sub
    Private Sub List2_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
    'Se produit lorsqu'une opération glisser-déplacer OLE est initialisée manuellement ou automatiquement.
    'AllowedEffects = vbDropEffectMove
    Data.Clear
    Data.SetData List2.Text, vbCFText 'format texte
    Set SourceListe = List2
    End Sub
    Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
    'Se produit lorsque des données sont déposées sur un contrôle à l'aide d'une
    'opération glisser-déplacer OLE, alors que OLEDropMode a la valeur Manual.
    Existe = False
    For T = 0 To List2.ListCount - 1
     If List2.List(T) = Data.GetData(vbCFText) Then Existe = True
    Next T
    If Existe = False Then
        List2.AddItem Data.GetData(vbCFText)
        If SourceListe.Name <> "List1" And SourceListe.Name <> "List2" Then SourceListe.RemoveItem (SourceListe.ListIndex)
    End If
    Set SourceListe = Nothing
    End Sub
     
    '----------------------------------------------------------------------------------------------------
    Private Sub List3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If List3.Text <> "" Then List3.OLEDrag
    End Sub
    Private Sub List3_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
    'Se produit lorsqu'une opération glisser-déplacer OLE est initialisée manuellement ou automatiquement.
    'AllowedEffects = vbDropEffectMove
    Data.Clear
    Data.SetData List3.Text, vbCFText 'format texte
    Set SourceListe = List3
    End Sub
    Private Sub List3_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
    'Se produit lorsque des données sont déposées sur un contrôle à l'aide d'une
    'opération glisser-déplacer OLE, alors que OLEDropMode a la valeur Manual.
    Existe = False
    For T = 0 To List3.ListCount - 1
     If List3.List(T) = Data.GetData(vbCFText) Then Existe = True
    Next T
    If Existe = False Then
        List3.AddItem Data.GetData(vbCFText)
        If SourceListe.Name <> "List1" And SourceListe.Name <> "List3" Then SourceListe.RemoveItem (SourceListe.ListIndex)
    End If
    Set SourceListe = Nothing
    End Sub
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Merci ProgElecT pour ton aide précieuse,
    Je viens de tester votre code ,le drag & drop marche mais les items de la list1 ne disparaissent pas a chaque drag et ça ne marche pas dans le sens inverse list2 ver list1 ou list3 vers list2.
    je crois que le probleme est dans "SourceListe.RemoveItem (SourceListe.ListIndex)"
    Je trouve à priori une difficulté d'enregistrer les itmes de la listbox dans la base de donnée , j'utilise ADO. Merci

Discussions similaires

  1. [WD10] Drag and drop programmé sur zone répétée
    Par mogwai162 dans le forum WinDev
    Réponses: 3
    Dernier message: 10/05/2011, 16h14
  2. Drop impossible sur une base Mysql
    Par grouzou_08 dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/08/2007, 11h42
  3. gestion erreur sélection sur lisbox
    Par stéphane75 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2007, 17h31
  4. listview dag-and-drop identification source
    Par parabolus dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/06/2007, 13h23
  5. drag n drop image sur pannel
    Par avogadro dans le forum Delphi
    Réponses: 3
    Dernier message: 16/05/2006, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo