Jak skopiować Node z VirtualStrngTree do drugiego VirtualStringTree?

0

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.

0

Witam,

Czy udało Ci się znaleźć rozwiązanie? Też próbuję przenosić - kopiować nody między dwoma drzewami i dostaję powyższy komunikat :/ Komuś się udało?

Pozdrawiam

0

@yabolik - zobacz tutaj (rozwiązanie jest zweryfikowane).

1 użytkowników online, w tym zalogowanych: 0, gości: 1