Q&A

  • treeview에서 형제들간의 위치 바꾸는 방법좀 ?
TreeNode 를 드래그 하여



형제들간의 위치 바꾸거나 다른 부모로 옮길려고 하는데



잘 안되네요 ? 어떻게 해야 합니까 ?



한수 부탁 드립니다.





1  COMMENTS
  • Profile
    윤형남 2000.07.11 07:37
    원영준 wrote:

    > TreeNode 를 드래그 하여

    >

    > 형제들간의 위치 바꾸거나 다른 부모로 옮길려고 하는데

    >

    > 잘 안되네요 ? 어떻게 해야 합니까 ?

    >

    > 한수 부탁 드립니다.

    >

    >

    Treeview의 이벤트에 있는 DragOver와 DragDrop을 아래와 같이 설정하면

    될 것입니다. 그리고 Treeview 속성에 있는 DragMode는 자동(dmAutomatic)

    으로 놓으세요.



    procedure Ttreef.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;

    State: TDragState; var Accept: Boolean);

    begin

    Accept := Source is TTreeView;

    end;



    procedure Ttreef.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);

    Var

    srcNode: TTreeNode;

    AnItem: TTreeNode;

    AttachMode: TNodeAttachMode;

    HT: THitTests;

    Begin

    srcNode:= TreeView1.Selected;

    HT:= TreeView1.GetHitTestInfoAt(X, Y);

    AnItem:= TreeView1.GetNodeAt(X, Y);

    If (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) Then

    begin

    If (htOnItem in HT) Or (htOnIcon in HT) then

    if SrcNode.Level = AnItem.Level Then AttachMode:= naAddChild Else

    AttachMode := naInsert;



    srcNode.MoveTo(AnItem, AttachMode);

    end;

    end;