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