OK, verstehe. Hatte das ohne Ableitung versucht, weil ich dachte, das kommt aufs Gleiche raus.
Jetzt kompiliert das Ganze, aber getauscht werden die Knoten dennoch nicht.
Delphi-Quellcode:
procedure TForm1.VSTDragDrop(Sender: TBaseVirtualTree; Source: TObject;
DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState;
Pt: TPoint; var Effect: Integer; Mode: TDropMode);
var
AttachMode : TVTNodeAttachMode;
lNewData : PTreeData;
lNode : PVirtualNode;
begin
case Mode of
dmAbove: AttachMode := amInsertBefore;
dmBelow: AttachMode := amInsertAfter;
dmOnNode: begin
lNode:= VST.FocusedNode;
lNewData := VST.GetNodeData(Sender.DropTargetNode);
TVirtualStringTreeEx(VST).ReplaceNodeData(lNode, lNewData);
//AttachMode := amInsertAfter;
end;
else
exit;
end;
//ohne diese Zeile verschwindet der gezogene Knoten einfach - evtl. liegt hier der Fehler
Sender.ProcessDrop(DataObject, lNode, Effect, AttachMode);
end;
Ich habe mal ein neues Projekt aufgesetzt, das nur zum Testen von diesem Problem gedacht ist (VST + Button).
Es befindet sich im Anhang. Vielleicht hilft das ja zum Nachvollziehen des Fehlers und erspart das Aufsetzen eines neuen Projektes.
Vielen Dank für die Hilfe!