Einzelnen Beitrag anzeigen

oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#1

Drag and Drop Anders Melander TreeList

  Alt 11. Mär 2020, 22:44
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

Geändert von oakley (11. Mär 2020 um 23:45 Uhr)
  Mit Zitat antworten Zitat