![]() |
Copy statt Move zwischen zwei VSTs
Ich habe schon reichlich gegoogelt, habe aber noch keine befriedigende Lösung gefunden...
Auf einer Form habe ich zwei VirtualExplorerListViewEx Komponenten, die unterschiedliche Ordner anzeigen. Wenn Drag&Drop aktiviert ist, lassen sich Dateien zwischen den Ordnern verschieben. Soweit so gut. Ich möchte nun aber Dateien kopieren, ohne auf der Tastatur [Strg] zu drücken. Dazu habe ich im Ereignis onDragOver Effect:= DROPEFFECT_COPY; gesetzt. Trotzdem findet immer ein Move statt. Auch wenn ich im Ereignis onDragDrop manuell kopiere...
Delphi-Quellcode:
.. wird anschließend von den VSTs noch das Move ausgeführt.
procedure TForm1.VST1DragDrop(
Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode); begin // Effect:= DROPEFFECT_COPY; if (Sender = VST1) and (Source = VST2) then begin Caption:= (VST2.SelectedPaths[0]); CopyFileTo(VST2.SelectedPaths[0], VST1.RootFolderCustomPath + '\' + VST2.SelectedFiles[0]); end; end; Was habe ich vergessen??? :gruebel: |
Re: Copy statt Move zwischen zwei VSTs
Hallo,
Was passiert, wenn Effect := DROPEFFECT_NONE gesetzt wird ? |
Re: Copy statt Move zwischen zwei VSTs
Jooo! das war ein guter Tipp!
Wenn im onDragDrop Event Effect auf DROPEFFECT_NONE eingestellt wird, klappt es auch mit dem Kopieren per selbst definierter Routine, bzw das anschließende Move unterbleibt. Genau so soll es sein. Vielen Dank Toms!
Delphi-Quellcode:
procedure TForm1.VST1DragDrop(
Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode); begin if (Sender = VST1) and (Source = VST2) then begin Caption:= (VST2.SelectedPaths[0]); CopyFileTo(VST2.SelectedPaths[0], VST1.RootFolderCustomPath + '\' + VST2.SelectedFiles[0]); end; Effect:= DROPEFFECT_NONE; VST1.Active:= false; VST1.Active:= true; end; procedure TForm1.VST1DragOver( Sender: TBaseVirtualTree; Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode; var Effect: Integer; var Accept: Boolean); begin Accept:= true; end; procedure TForm1.VST2DragOver(Sender: TBaseVirtualTree; Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode; var Effect: Integer; var Accept: Boolean); begin Accept:= true; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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 by Thomas Breitkreuz