Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Moving items in TreeView

350 views
Skip to first unread message

Fons

unread,
Feb 22, 2008, 1:46:42 PM2/22/08
to
This "works":

procedure TFormTestTreeView.TreeViewDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Sender is TTreeView then Accept := True;
end;

procedure TFormTestTreeView.TreeViewDragDrop(
Sender, Source: TObject; X, Y: Integer
);
var TargetNode, SourceNode, NewNode : TTreeNode;
begin
TargetNode := TTreeView(Sender).GetNodeAt(X,Y);
SourceNode := TTreeView(Sender).Selected;
if TargetNode = nil then
TTreeView(Sender).EndDrag(False)
else
SourceNode.MoveTo(TargetNode, naAddChild);
end;

It moves the textitem but not the ImageIndex and StateIndex. The image
doesn't move with it. Why not ? And how about the
TTreeNode.Data-pointer? Although I only need the StateIndex.

Fons.

Fons

unread,
Feb 22, 2008, 4:17:39 PM2/22/08
to
Solution (same as with "Redraw TreeView"):

procedure ToggleState(TreeNode : TTreeNode);
var StateIndex : integer;
begin
StateIndex := TreeNode.StateIndex;
TreeNode.StateIndex := -1;
TreeNode.StateIndex := StateIndex;
end;

procedure ToggleStates(TreeView : TTreeView);
var T : integer;
begin
for T := 0 to TreeView.Items.Count - 1 do
ToggleState(TreeView.Items[T]);
end;

procedure MoveTreeNodeTo(TreeNode, Destination : TTreeNode; Mode :
TNodeAttachMode);
begin
TreeNode.MoveTo(Destination, naAddChild);
ToggleStates(TTreeView(TreeNode.TreeView));
TreeNode.TreeView.Invalidate;
end;

Fons.

0 new messages