Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Drag and Drop Anders Melander TreeList (https://www.delphipraxis.net/203679-drag-drop-anders-melander-treelist.html)

oakley 11. Mär 2020 22:44

Drag and Drop Anders Melander TreeList
 
Hallo zusammen,

ich habe hier eine TreeList mit einer Verzeichnisstruktur und ziehe Dateien aus dem Explorer mit folgendem Code hinein:

Code:
procedure TCSITEFORM.WMDROPFILES(var Msg: TMessage);
var
  DropH: HDROP;
  DroppedFileCount: Integer;
  FileNameLength: Integer;
  FileName: string;
  I: Integer;
  DropPoint: TPoint;
  AnItem : TcxTreeListNode;
begin
  case Msg.Msg of

    WM_DROPFILES : begin
        DropH := Msg.WParam;
        try
          DragQueryPoint(DropH, DropPoint);


          AnItem := DOCTREELIST.GetNodeAt(DropPoint.X, DropPoint.Y) ;
          if AnItem <> nil then
          begin
            DroppedFileCount := DragQueryFile(DropH, $FFFFFFFF, nil, 0);
            for I := 0 to Pred(DroppedFileCount) do
            begin
              FileNameLength := DragQueryFile(DropH, I, nil, 0);
              SetLength(FileName, FileNameLength);
              DragQueryFile(DropH, I, PWideChar(FileName), FileNameLength + 1);
              CreateNodefromDrop(AnItem, String(PWideChar(FileName)));
            end;
          end;
        finally
          DragFinish(DropH);
        end;
        Msg.Result := 0;
    end;
    else OldLBWindowProc(Msg);
  end;
end;
Das funktioniert einwandfrei nur möchte ich jetzt auch wie Dateien (Nodes) aus der Treelist in den Explorer zurück ziehen.
Ich habe mir dazu die Komponente von Anders Melander angeschaut und versucht die "Source Demo" an zu passen. Hier wird einfach eine Datei aus einer Liste in den Explorer gezogen (kopiert).
Ich habe eine FileDragSource aber ich bekomme das nicht so angepasst, denn ich benötige die Treelist sowohl als source als auch als target. Target mit dem Code oben um Dateien von außen hinein zu ziehen und in der Treelist zu "verschieben" und Source um Dateien in den Explorer zurück zu ziehen.
Ich nutze die vorhandenen Events wie onDragDrop zum "verschieben" der Dateien in die Verzeichnisse innerhalb der TreeList.
Die FileDropSource von anders Melander bringt das aber leider durcheinander und erlaubt das kopieren innerhalb der Treelist, was ich aber nicht möchte.
Ich dachte mir jetzt ich könnte die FileDropSource von Anders Melander erst beim Verlassen der TreeList aktivieren aber sobald ich einen Node ziehe feuet onExit und onMouseLeave sofort.
Geht also nicht.

LG

Mirko

oakley 13. Mär 2020 15:20

AW: Drag and Drop Anders Melander TreeList
 
Wäre es eventuell günstiger auf die "Standardevents" zu verzichten und nur die Komponenten von Anders Melander zu verwenden?

Wenn ja, wie kann ich dann die Dateien in "Untervezeichnissen" der TreeList verschieben?

LG

Mirko


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz