Drag & Drop von Datei in TreeView

  • Hallo zusammen,

    ich möchte gerne Dateien in einen bestehendes TreeView ziehen, deren Name dann auch dort an der entsprechenden Stelle erscheint. Dabei sollen die einzelnen TreeView Items vorher nicht selected werden.
    Mit D&D bin ich über WM_NOTIFY nicht wirklich weitergekommen. Und mit der Methode die TreeView Itemnamen über die Cursorposition zu ermitteln komme ich auch nicht vorwärts.
    Habt Ihr evtl. einen kurzen Beispielcode wie ich das realisieren könnte?

    • Offizieller Beitrag

    Hallo,

    poste uns deinen Beispielcode und wir schauen was falsch ist!

  • Also prinzipiell erstmal folgendes Beispiel. Der TreeView ist nicht im Ursprungspunkt der Gui und ich möchte nun gerne via Mousecursor den Itemtext der Parent- bzw. Childelemente des TreeViews angezeigt bekommen. Die entsprechende Funktion kann im Beispiel über Enter aufgerufen werden, sodass man mit der Maus über die jeweiligen TreeView Items gehen kann.
    Problem A: Mit den Cursorkoordinaten stimmt was nicht, denn ich bekomme in meinem Beispiel keine Handles für die letzten Elemente im TreeView
    Problem B: Ich bekomme keinen Itemtext

    • Offizieller Beitrag

    Hallo,

    die Mauskoordinaten noch auf die TreeView-Koordinaten umgerechnet werden und der Aufruf von _GUICtrlTreeView_GetText ist falsch.

  • Ah ok. Danke schonmal.
    Gibt es eine Möglichkeit die Koordinaten / Position des TreeView programmatisch zu ermitteln, sodass ich die Koordinaten nicht von Hand eintragen muss?

    • Offizieller Beitrag

    Ja!

    AutoIt
    $aCGP = ControlGetPos($Gui, "", $idTreeView)
    $iXRand = _WinAPI_GetMousePosX(true, $Gui) - $aCGP[0]  ; Startposition TreeView (links)
    $iYRand = _WinAPI_GetMousePosY(true, $Gui) - $aCGP[1]  ; Startposition Treeview (oben)
  • Vielen Dank!
    Um die ursprüngliche Frage nochmal aufzugreifen...
    Ich habe jetzt den Umweg über die Funktion genommen. Wenn ich eine Datei ins TreeView "droppe" soll diese Funktion ausgeführt werden, die den Namen des Treeviewitems ausgibt.
    Aktuell mache ich das über

    AutoIt
    GUISetOnEvent($GUI_EVENT_DROPPED, "_DropFileToTreeView")


    Ich habe gestern bereits eine ganze Weile versucht das ganze via WM_NOTIFY zu realisieren


    So etwas wie $TVN_DROP gibt es allerdings nicht, ich habe nur $TVN_BEGINDRAG als DragDrop-Event gefunden. Gibt es ein Event mit dem ich das "Loslassen" der Datei erfassen kann?

    • Offizieller Beitrag

    Ich selbst benutze Drag&Drop nur selten, aber hier wird beschrieben wie Drag&Drop mit TreeView funktioniert -> Drag and Drop Operations.