[..] Drag and drop et détection objet source

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 400
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

[..] Drag and drop et détection objet source

#1

Message par scorp84 »

Bonjour à tous,

Je vous ai fait quelques infidélités en essayant de développer sous Delphi pour mon boulot mais il n'y a pas à dire, on revient toujours à ses premières amours :-)

Voici mon problème : j'ai une GUI avec plusieurs composants pour lesquels j'autorise le drag and drop (ici 2 labels) :
#include <Array.au3>

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 255, 215, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX,$WS_THICKFRAME), BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Label1 = GUICtrlCreateLabel("Label1", 40, 16, 180, 73)
GUICtrlSetBkColor(-1, 0x99B4D1)
Global $Label2 = GUICtrlCreateLabel("Label2", 40, 96, 180, 89)
GUICtrlSetBkColor(-1, 0x00FFFF)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $gaDropFiles[1]

GUICtrlSetState($Label1, $GUI_DROPACCEPTED)
GUICtrlSetState($Label2, $GUI_DROPACCEPTED)

; Détection drag and drop
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")


While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

   Case $GUI_EVENT_DROPPED

         _ArrayDisplay($gaDropFiles)

 EndSwitch
WEnd


Func WM_DROPFILES_FUNC($hwnd, $msgID, $wParam, $lParam)

    Local $nSize, $pFileName
    Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)
    For $i = 0 To $nAmt[0] - 1
        $nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
        $nSize = $nSize[0] + 1
        $pFileName = DllStructCreate("char[" & $nSize & "]")
        DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
        ReDim $gaDropFiles[$i + 1]
        $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
        $pFileName = 0
    Next
EndFunc   ;==>WM_DROPFILES_FUNC

J'aimerai arriver à détecter quel est l'objet sur lequel à été déposé le drag and drop (label 1 ou label 2).

Dans mon code, ce sont des listviews.

Merci d'avance pour votre aide.

Cordialement.

BM
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Drag and drop et détection objet source  

#2

Message par walkson »

Bonjour,
dans la boucle avec
         Case $GUI_EVENT_DROPPED

            Switch @GUI_DropId
               Case $idLabel1
               GUICtrlSetData($idLabel1, @GUI_DragFile)
               MsgBox(0,@GUI_DropId,"label1")
               Case $idLabel12
               GUICtrlSetData($idLabel12, @GUI_DragFile)
               MsgBox(0,@GUI_DropId,"label2")
            EndSwitch
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 400
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Drag and drop et détection objet source

#3

Message par scorp84 »

Bonjour Walkson,

Merci beaucoup pour votre aide.

Cordialement.

BM
Répondre