title: VirtualTreeView copy tree with data
body: <p>How to copy all nodes from one VirtualTreeView to another?
  I tried to use CopyTo-function, but the Data was empty, why?
  Data contains reference to record (as usual).</p>
  
  <p>I've also tried to use the <code>OnNodeCopying</code> event as @Cosmin Prund suggested in his now deleted answer this way, but it crashes:</p>
  
  <pre><code>procedure TDataBaseForm.SourceTreeViewNodeCopying(Sender: TBaseVirtualTree; 
    Node, Target: PVirtualNode; var Allowed: Boolean); 
  var 
    SourceNodeData, DestNodeData: PNodeDataForCompare; 
  begin 
    SourceNodeData := Sender.GetNodeData(Node); 
    DestNodeData := VirtualStringTree1.GetNodeData(Target); 
    if Assigned(SourceNodeData) then 
    begin 
      DestNodeData^ := SourceNodeData^; 
    end; 
    Allowed := true; 
  end;
  </code></pre>