Witam,
Mam kod:
procedure TfrmMenu.VSTDragDrop(Sender: TBaseVirtualTree; Source: TObject;
DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState;
Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
pSource, pTarget: PVirtualNode;
attMode: TVTNodeAttachMode;
begin
pSource := TVirtualStringTree(Source).FocusedNode;
SourceRepoData := VST.GetNodeData(pSource);
pTarget := Sender.DropTargetNode;
case Mode of
dmNowhere: attMode := amNoWhere;
dmAbove: attMode := amInsertBefore;
dmOnNode, dmBelow: attMode := amInsertAfter;
end;
Sender.MoveTo(pSource, pTarget, attMode, False);
end;
procedure TfrmMenu.VSTDragOver(Sender: TBaseVirtualTree; Source: TObject;
Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode;
var Effect: Integer; var Accept: Boolean);
begin
Accept := Source = frmRepository.VST; // VirtualStringTree innego okna
end;
Ale po próbie przeciągnięcia nody z drzewa znajdującego się w innym oknie do docelowego drzewka dostaję komunikat:
First chance exception at $749D0F22. Exception class EAssertionFailed with message 'The source tree must contain the source node. (E:#Programowanie#Komponenty\VirtualTreeviewV5.3.0\Source\VirtualTrees.pas, line 31602)'. Process ActionScript.exe (6548)
Powyższy przykład działa, jeżeli przenoszę węzły w tym samym nodzie a ja potrzebuję kopiować je z innego drzewa.