![]() |
Drag & Drop vom VST zum Explorer
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:
hab das nu versucht im onmousemove zu machen und so sieht es aus:
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;
Delphi-Quellcode:
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.
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; was muss ich tun? ps. was muss eigentlich genau in mein wordarray rein? schonmal danke:) |
Re: Drag & Drop vom VST zum Explorer
Du musst nicht DoDragDrop aufrufen. Das macht er schon selber.
Du musst erstmal das Ereignis onDragAllowed verwenden und dort je nach Eintrag eben allowed auf True setzen (oder eben immer auf true setzen). Was jetzt eher dein Problem sein dürfte, wie erkennt der Explorer, dass dies eine Datei ist. |
Re: Drag & Drop vom VST zum Explorer
schonmal danke:)
aber hast recht mein problem ist jetzt wie ich dem Explorer eintrichter, das es sich um dateien handelt:( |
Re: Drag & Drop vom VST zum Explorer
Hallo,
Da es sich um ein Drag & Drop zum Windows Explorer handelt, kannst du nicht die TBaseVirtualTree.DoDragDrop verwenden. Erstelle IDropSource, IDataObject und rufe DoDragDrop() auf. Beispiel (ist anzupassen für VST) ![]() |
Re: Drag & Drop vom VST zum Explorer
Zitat:
|
Re: Drag & Drop vom VST zum Explorer
das hatte ich ja auch soweit schon alles gemacht nur leider führt das immernoch nicht zu dem gewünschten ergebnis...
drag drop zum explorer klappt nicht und wenn ich vom rechten tree in den linken verschieben will gibt es beim 1. versuch eine zugriffsverletzung und ab dann klappt es ohne probleme. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz