Einzelnen Beitrag anzeigen

itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#1

Drag & Drop vom VST zum Explorer

  Alt 9. Sep 2008, 15:29
Hi

ich hab da 2 VST auf meiner Form
der linke ist dazu da um eine Ordnerstruktur innerhalb des programmordners anzuzeigen
der rechte zeigt mir dateien(vorgänge\anfragen) an und dazugehörige reaktionen(antworten Kontrollnachrichten)

jetzt kam die anforderung das man per Drag&Drop die Dateien von der Dateianzeige zb auf den Desktop Droppen kann.

allerdings komm ich mit dem DoDragDrop vom Tvirtualtree nicht zurecht.

in der virtualtree unit steht:
Delphi-Quellcode:
procedure TBaseVirtualTree.DoDragDrop(Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
  Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);

begin
  if Assigned(FOnDragDrop) then
    FOnDragDrop(Self, Source, DataObject, Formats, Shift, Pt, Effect, Mode);
end;
hab das nu versucht im onmousemove zu machen und so sieht es aus:

Delphi-Quellcode:
procedure TForm10.treeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
const
  Threshold = 5;
var
  SelFileList: TStrings;
  i: Integer;
  DataObject: IDataObject;
  KOORDINATE: TPoint;
  Effect, Effect2: integer;
  node: pvirtualnode;
  daten: ptreedata;
  wordarray: tformatarray;
begin
  setlength(wordarray, tree.selectedcount);
  koordinate.X := x;
  koordinate.Y := y;
  with Sender as TVirtualStringtree do
  begin
    if (SelectedCount > 0) and (csLButtonDown in ControlState) then
      begin
      SelFileList := TStringList.Create;
      try
        SelFileList.Capacity := SelectedCount;
        node := tree.GetFirstSelected;
        for i := 0 to SelectedCount - 1 do
        begin
          wordarray[i] := i;
          while (tree.GetNodeLevel(node) > 0) and (node <> nil) do
          begin
            node.Parent;
          end;
          daten:= tree.GetNodeData(node);
          if Selected[node] then SelFileList.Add(daten.Dateiname);
          node := tree.GetNextSelected(node);
        end;
        DataObject := GetFileListDataObject(dragquelle, SelFileList);
      finally
        SelFileList.Free;
      end;

      Effect:= DROPEFFECT_COPY;
      DoDragDrop(sender, DataObject, wordarray, shift, koordinate, Effect, dmBelow);
    end;
  end;
end;
nu kann ich zwar noch wie gewollt die dateien in andere ordner reinziehen wenn ich die in der Ordneranzeige droppe allerdings kann ich ausserhalb von meiner form nichts droppen.

was muss ich tun?

ps. was muss eigentlich genau in mein wordarray rein?


schonmal danke
  Mit Zitat antworten Zitat