Hallo,
will in einem Treeview Knoten verschieben, was auch ganz gut klappt, das Problem ist das an jedem Knoten bei mir im Data property ein Pointer auf ein selbstdefinirten Record zeigt, und ich nicht weiss wie ich diesen mit verschiebe.
Zum verschieben benutze ich folgende Routinen.
Delphi-Quellcode:
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
ToDeleteItem, DropItem, CurrentItem, NextItem: TTreeNode;
ChildCount, Childrun: Integer;
begin
if Sender = Source then
begin
DropItem := TreeView1.GetNodeAt(X, Y);
CurrentItem := TreeView1.Selected;
ToDeleteItem := CurrentItem;
NextItem := TreeView1.Items.Insert(DropItem, CurrentItem.Text);
DropItem := NextItem;
ChildCount := TreeView1.Selected.Count;
for Childrun := 1 to ChildCount do
begin
CurrentItem := TreeView1.Selected.GetFirstChild;
NextItem := TreeView1.Items.AddChild(DropItem, CurrentItem.Text);
TreeView1.Items.Delete(CurrentItem);
end;
ToDeleteItem.Delete;
end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Sender = TreeView1;
end;
mfg lordcroc