Q&A

  • TListView에서 Item의 위치 바꾸기
TListView에서 리스트로 데이터를 보여주고 이 데이터의 순서를 바꾸려 합니다.

즉, ListView1.Items[1]과 ListView1.Item[2]를 바꾸려하는 것이죠...

포인터를 사용해서 해봤는데, 잘 안되여...

2  COMMENTS
  • Profile
    껄떡쇠 2000.11.21 21:24
    MoveTo라는 프로퍼티가 있어요.



    원래노드.MoveTo(바꿀곳에 있는노드, AttachMode);

    도움말을 보시면 잘 나와있어요.



    트리뷰상에서만 바뀝니다.

    만약다른 데이터랑 연결되어 있다면 적절히 코딩을 해줘야하겠죠?



    아래는 형제노드들끼리 drag&drop으로 바꿔주는 부분입니다.

    전에 봤었던 내용인데 응용하시면 될겁니다.



    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;

  • Profile
    오장균 2000.11.24 21:37
    여기서 답변쓰면 메일로 날아가지 않네... ^^;

    껄떡쇠님 답변 감사합니다.



    그러나 제가 말한것은 리스트뷰입니다. 트리뷰가 아닙니다.

    리스트뷰에는 MoveTo가 없어요... T.T



    껄떡쇠 wrote:

    > MoveTo라는 프로퍼티가 있어요.

    >

    > 원래노드.MoveTo(바꿀곳에 있는노드, AttachMode);

    > 도움말을 보시면 잘 나와있어요.

    >

    > 트리뷰상에서만 바뀝니다.

    > 만약다른 데이터랑 연결되어 있다면 적절히 코딩을 해줘야하겠죠?

    >

    > 아래는 형제노드들끼리 drag&drop으로 바꿔주는 부분입니다.

    > 전에 봤었던 내용인데 응용하시면 될겁니다.

    >

    > 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;