begin process at 2012 02 17 03:20:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GLISSER/DEPOSER AVEC SIMULATION DU DÉPLACEMENT DU TEXTE D' ITEM, D' UNE LISTBOX VERS UNE AUTRE LISTBOX OU VERS UN MSFLEXGRID.

GLISSER/DEPOSER AVEC SIMULATION DU DÉPLACEMENT DU TEXTE D' ITEM, D' UNE LISTBOX VERS UNE AUTRE LISTBOX OU VERS UN MSFLEXGRID.


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :glisser, deposer Niveau :Débutant Date de création :28/09/2006 Date de mise à jour :01/10/2006 14:30:34 Vu / téléchargé :4 097 / 857

Auteur : chaibat05

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Inspirée de la source de PCPT :
("Les vacances de Mr Mulot",du 22/02/2006 16:30:02)
Cette source combine le DragDrop et le deplacement d' une PictureBox.
Mise à jour prévue : utilisation d' un user control pour la transparence.
...


 Conclusion

@PCPT / Pour l' ico , aucune nouvelle mise à jour n' est prévu pour le moment
peut être plus tard.J' ai eu ma dose avec cette source !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 octobre 2006 00:02:57 :
Mise à jour : Remplacement d' une PictureBox par un UC, afin d' avoir l' effet de transparence. Problème rencontré : Je n' arrive pas à avoir les positions X,Y du UC à cet instant pour tester si le drop s' éffectue à l' intérieur de lstCible .Left et .Top ne correspondent pas aux valeurs réelles. ^^ Demande Info .
01 octobre 2006 14:30:34 :
Comme annoncé plus haut, voici la nouvelle mise à jour pour corriger le problème du Drop... Mon erreur fût que je me préoccupais de la position du UC au moment du lacher et que je n' arrivais pas à determiner. Alors qu' il fallait tout simplement voir si au moment du Drop le pointer se trouve bien au dessus de lstCible.

 Sources du même auteur

Source avec Zip Source avec une capture INTEGRER UN SIMPLE ÉDITEUR POUR EXPRESSIONS SQL DANS VOS PRO...
Source avec Zip Source avec une capture EXPLORATEUR DE FICHIERS IMAGES
Source avec Zip COMMENT TRAITER VOS DOCUMENTS TEXTES VIA LE CONTROL RICHTEXT...
Source avec Zip OCX JOURNÉES MONDIALES
Source avec Zip PUISSANCE 4.

 Sources de la même categorie

Source avec Zip TEXTBOX EN NUMÉRIQUE par 320C
Source avec Zip DÉCIMAL TO HEXDECIMAL par loulou27200
SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACT... par ALMIRA
Source avec Zip Source avec une capture EVALUER UN NOMBRE D'OBJETS AVEC UNE BALANCE ET DEUX ÉCHANTIL... par lexsty
Source avec Zip Source avec une capture PETIT LOGICIEL DE DEVIS SANS BD par lololilizozo

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) DRAG AND DROP DANS LES TREEVIEW DE DOTNET par JJDai
FAIRE GLISSER UN ÉLÉMENT DANS UNE LISTBOX FAÇON "WINAMP" par cresus18
FAIRE GLISSER UN OU PLUSIEUR FICHER DANS UNE LIST BOX par CtHuLhU50

Commentaires et avis

Commentaire de Renfield le 29/09/2006 09:34:19 administrateur CS

Oublie l'instruction End. (décharges plutot ton formulaire)

pour la 'transparence' ajoute simplement une icone dans la propriété DragIcon de la list Source. pas besoin de pictureBox 'trompOeil' supplémentaire. (une icone avec le texte de l'element pourra par exemple être générée à la volée...



Option Explicit

Private Sub Form_Load()
Dim i As Integer
    ' initialisation des controls
    With lstSource
        .AddItem "lstSource 1"
        .AddItem "lstSource 2"
        .AddItem "lstSource 3"
        .AddItem "lstSource 4"
        .AddItem "lstSource 5"
        .AddItem "lstSource 6"
        .AddItem "lstSource 7"
    End With
    
    With lstCible
        .AddItem "lstCible 8"
        .AddItem "lstCible 9"
        .AddItem "lstCible 10"
    End With
    With grdCible
        .TextMatrix(0, 0) = "grdCible"
        
        
        For i = 1 To .Cols - 1
            .ColWidth(i) = 1200
        Next
    End With
End Sub

Private Sub lstSource_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    lstSource.Drag vbBeginDrag
End Sub

Private Sub lstCible_DragDrop(Source As Control, X As Single, Y As Single)
    lstCible.AddItem Source.Text
    Source.RemoveItem Source.ListIndex
End Sub

Private Sub grdCible_DragDrop(Source As Control, X As Single, Y As Single)
    With grdCible
       .Row = .MouseRow
       .Col = .MouseCol

       If .Row >= .FixedRows And .Col >= .FixedCols Then
            .Text = Source.Text
            .CellBackColor = vbGreen

            Source.RemoveItem Source.ListIndex
        End If
    End With
End Sub

Private Sub cmdTerminer_Click()
    Unload Me
End Sub

Commentaire de asimengo le 29/09/2006 10:45:51

Super Chaibat05, Renfield comme dab plug and play.

Pour l'effet visuel celui de Chaibat05 est interessant.

Commentaire de Renfield le 29/09/2006 11:02:35 administrateur CS

Pour insertion de l'item a l'endroit ou on avait 'visé' :

Private Const LB_ITEMFROMPOINT As Long = &H1A9

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Public Function GetListItemIndexFromPoint(ByRef Obj As ListBox, ByVal X As Single, ByVal Y As Single) As Integer
Dim Coords As Long
Dim OverIndex As Long

    Coords = Obj.Parent.ScaleY(Y, Obj.Parent.ScaleMode, vbPixels) * &H10000 + Obj.Parent.ScaleX(X, Obj.Parent.ScaleMode, vbPixels)
    OverIndex = SendMessage(Obj.hwnd, LB_ITEMFROMPOINT, 0&, ByVal Coords)

    '# Si le HighWord = 0, un élément a été trouvé
    If (OverIndex \ &H10000) = 0 Then
        GetListItemIndexFromPoint = OverIndex Mod &H10000
    Else
        '# Aucun élément n'est survollé...
        GetListItemIndexFromPoint = -1
    End If
End Function

Private Sub lstCible_DragDrop(Source As Control, X As Single, Y As Single)
Dim nIndex As Long
    nIndex = GetListItemIndexFromPoint(lstCible, X, Y)
    If nIndex > -1 Then
        lstCible.AddItem Source.Text, nIndex
    Else
        lstCible.AddItem Source.Text
    End If
    Source.RemoveItem Source.ListIndex
End Sub

Commentaire de chaibat05 le 29/09/2006 18:11:15

Bonjour Renfield
Bonjour Azimengo

J' étais très content de lire vos commentaires respectifs
Pour le dernier je vais tester le code en ce moment même.
Peut être qu' il sera integré dans une prochaine mise à jour
que je finirais probablement ce soir même.Elle comportera
notament l' effet de transparence.

Merci Azimengo pour l' appréciation
Merci Renfield pour la Fonction.

Commentaire de chaibat05 le 01/10/2006 00:09:33

Bonsoir Renfield
La Fonction GetListItemIndexFromPoint()
ne marche pas avec le UC.
Merci tout de même.
Elle servira certainement une autre fois.

chaibat

Commentaire de chaibat05 le 01/10/2006 10:43:01

01/10/2006 09:30

Problème cité dans l' historique des mise à jour résolu.
Bientot une autre mise à jour ...

chaibat

Commentaire de PCPT le 01/10/2006 13:29:44 administrateur CS

salut,
tu me demandes un commentaire, alors le voici ;)
intéressant, code lisible, çà peut donc servir.
par contre un ico lors du déplacement, le manque se fait ressentir.
problème : lors du simple click sur lstSource (donc début de déplacement sans déposer), le déplacement a tout de même lieu. en fait tu ne vérifies pas la réception du usercontrol.

et pour pouvoir réutiliser le tout, tout çà sous forme de classe withevents çà serait bien pratique.
bon courage ++

Commentaire de Renfield le 02/10/2006 07:46:26 administrateur CS

GetListItemIndexFromPoint ne sert que pour les ListBoxes....
si tu veux dans un UserControl, ajoutes dans celui-ci une fonction HitTest
(comme on en trouve dans un Treeview ou listView)

Pour l'icone, comme te le suggère PCPT, il suffirait de créer une icone dynamiquement, avec le texte de l'element selectionné (ou d'utiliser une icone drag & drop standard, commune a tous les elements)
et de la placer dans la propriété DragIcon de ton controle source

Commentaire de chaibat05 le 02/10/2006 20:07:03

Bonsoir Renfield
Si je devais ajouter une icone je le ferais surle UC et pas
avec Drag Drop Standard.Avec ce dernier je n' aurais que
l' icone ou le contour et pas de texte.
Je n' ai  jamais vu de texte se déplacer avec un Drag standard.
C' est justement pour ça que j' ai choisi de le personnaliser .


chaibat

Commentaire de Renfield le 03/10/2006 07:28:00 administrateur CS

jamais vu... ne signifie pas que c'est impossible ^^

Commentaire de andrebernard le 05/09/2007 14:44:52

Bonjour RENFIELD

Alors, j'ai fait tout comme "c'est qu't'a dit",

1/ j'ai rien compris a l'histoire de l'icone a la volée, aurais tu un exemple s'il te plait ?

2/ Pourquoi quand on selectionne une ligne dans le listview on voit tout le listview qui se deplace ?

Merci de ton aide

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Const LB_ITEMFROMPOINT As Long = &H1A9

Private Sub Form_Load()
Dim i As Integer
    ' initialisation des controls
    With lstSource
        .AddItem "lstSource 1"
        .AddItem "lstSource 2"
        .AddItem "lstSource 3"
        .AddItem "lstSource 4"
        .AddItem "lstSource 5"
        .AddItem "lstSource 6"
        .AddItem "lstSource 7"
    End With
    
    With lstCible
        .AddItem "lstCible 8"
        .AddItem "lstCible 9"
        .AddItem "lstCible 10"
    End With
    With grdCible
        .TextMatrix(0, 0) = "grdCible"
        
        
        For i = 1 To .Cols - 1
            .ColWidth(i) = 1200
        Next
    End With
End Sub

Private Sub lstSource_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    lstSource.Drag vbBeginDrag
End Sub

Private Sub lstCible_DragDrop(Source As Control, X As Single, Y As Single)
    lstCible.AddItem Source.Text
    Source.RemoveItem Source.ListIndex
End Sub

Private Sub grdCible_DragDrop(Source As Control, X As Single, Y As Single)
    With grdCible
       .Row = .MouseRow
       .Col = .MouseCol

       If .Row >= .FixedRows And .Col >= .FixedCols Then
            .Text = Source.Text
            .CellBackColor = vbGreen

            Source.RemoveItem Source.ListIndex
        End If
    End With
End Sub

Private Sub cmdTerminer_Click()
    Unload Me
End Sub

Public Function GetListItemIndexFromPoint(ByRef Obj As ListBox, ByVal X As Single, ByVal Y As Single) As Integer
Dim Coords As Long
Dim OverIndex As Long

    Coords = Obj.Parent.ScaleY(Y, Obj.Parent.ScaleMode, vbPixels) * &H10000 + Obj.Parent.ScaleX(X, Obj.Parent.ScaleMode, vbPixels)
    OverIndex = SendMessage(Obj.hwnd, LB_ITEMFROMPOINT, 0&, ByVal Coords)

    '# Si le HighWord = 0, un élément a été trouvé
    If (OverIndex \ &H10000) = 0 Then
        GetListItemIndexFromPoint = OverIndex Mod &H10000
    Else
        '# Aucun élément n'est survollé...
        GetListItemIndexFromPoint = -1
    End If
End Function

Dim nIndex As Long
    nIndex = GetListItemIndexFromPoint(lstCible, X, Y)
    If nIndex > -1 Then
        lstCible.AddItem Source.Text, nIndex
    Else
        lstCible.AddItem Source.Text
    End If
    Source.RemoveItem Source.ListIndex
End Sub

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Glisser Deposer pas très au point [ par Maiku ] LutJ'essaye de faire un glisser deposer d'un bouton de commande dans le contenu sur un label.Premiere Question : Est ce que ca peut marcher ?Deux icone d'un glisser/Deposer [ par GLT ] Bonjour,voila mon problème, j'ai deux msflexGrig,et je veux faire glisser une cellule du tableau à l'autre. Le problème est que l'icone dragicon de vb Glisser deposer ... [ par yannn ] Salut a tous ... j'ai de nouveau besoin de vos lumieres ... Je voudrai savoir comment a partir d'un glissé déposé, je peux retrouver le chemin du fich copy d'un datagridview a un autre par glisser deposer [ par astouz2000k ] bonjour, A copier des valeurs d'un datagridview a un autre pas simple glisser deposer. Je precise que les 2 datagridviews ne sont pas sur la meme fo Glisser déposer démarrage application récup chemin et nom [ par rlapt ] Bonjour, Je cherche la méthode en visual studio express pour que lorsque l'on dépose un fichier sur l'icone du fichier EXE de mon application , mon a Glisser déposer des formes [ par yayap1 ] Bonjour, Je dispose de formes "msoShapeRectangle" sur une feuille excel. je cherche à faire réagir excel (en lancant du code) lors d'un glisser-dépos Faire glisser un picturebox [ par ShayW ] Bonjour Comment faire glisser un picturebox sur la form ou sur un control panel etc j'ai essayé avec le drag and drop mais [^^pirate] rien ce que je glisser listbox->treeview [ par bingo974 ] Bonjour,Je n'arrive pas à trouver un code sur vbfrance me permettant de réaliser un dragdrop entre une listbox et un treeview en utilisant OLEDRAG OLE glisser-déplacer [ par CocoMsa ] Bonjour,quelqu'un (une) aurait-il la gentillesse de m'expliquer comment fonctionne le drag-drop ??Mon problème est très simple mais je ne sais pas com comment faire un glisser deplacer avec le webbrowser ? [ par LolPiratas ] Yo ManaM oYbon voila je veux faire de mon webbrowser un ftpdonc voila une fois que mon controle affiche mes fichiers qui ce trouve sur mon ftpje sais


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,229 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales