Ich würde gerne beim Drag and Drop eines Knotens auf einen anderen die beiden Knoten (samt jeweiliger Unterknoten) vertauschen.
Vermutlich wäre es das beste, deren Pointer zu vertauschen. Leider gelingt mir dies nicht.
Ich dachte, ich versuche das mal so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type PTreeData = ^TTreeData; TTreeData = record end;
procedure TForm1.VSTDragDrop(Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode); var tmpData, DataN1, DataN2 : PTreeData; begin DataN1 := VST.GetNodeData(Sender.DropTargetNode); DataN2 := VST.GetNodeData(Sender.FocusedNode); GetMem(tmpData, SizeOf(PTreeData));
tmpData^ := DataN1^; DataN1^ := DataN2^; DataN2^ := tmpData^; end; |
Bei der Zuweisung
tmpData^ := DataN1^; kommt dann eine Zugriffsverletzung.
Ehrlich gesagt, weiß ich aber gar nicht, ob mein Ansatz überhaupt so richtig ist.
Kann mir bitte jemand dabei helfen? Würde mich sehr freuen!