Hallo @all !
Code von:
http://www.swissdelphicenter.ch/torr...de.php?id=1830
Problem = erledigt !
Ich habe vor einen Knoten von 5->3 auf 4->3 zu verschieben - klappt !
Ich will nicht das es möglich ist z.B. 1->1 auf 1 zu verschieben, denke hierzu müsste ich die Ebene abfragen, komme hier aber nicht weiter ?
Mit dem Code ist es zudem auch nicht möglich ein Item an den Knoten 0 anzuhängen.
Danke für Eure Hilfe !
user0815
Delphi-Quellcode:
//------------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
var
Node : TTreeNode;
i,j : Integer;
begin
TreeView1.DragMode := dmAutomatic;
Node := TreeView1.Items.Add(nil, IntToStr(0));
for i := 1 to 5 do
begin
Node := TreeView1.Items.Add(nil, IntToStr(i));
for j := 1 to i do
begin
TreeView1.Items.AddChild(Node, IntToStr(i) + ' -> ' + IntToStr(j));
end;
end;
end;
//------------------------------------------------------------------------------
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;
}
// Änderung - so funktioniert es wie ich will
if Sender = Source then
begin
DropItem := TreeView1.GetNodeAt(X, Y);
CurrentItem := TreeView1.Selected;
if CurrentItem.Level > 0 then
begin
ToDeleteItem := CurrentItem;
if DropItem.Level > 0
then TreeView1.Items.Insert(DropItem, CurrentItem.Text)
else if DropItem.Level = 0
then TreeView1.Items.AddChild(DropItem, CurrentItem.Text);
ToDeleteItem.Delete;
end;
end;
end;
//------------------------------------------------------------------------------
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Sender = TreeView1;
end;
//------------------------------------------------------------------------------