Q&A

  • Listview의 item의 순서를 변경하는 방법??
listview에서 두개의 아이템 인덱스를 서로 바꾸려고 하는데

그게 맘대로 잘 안되는군요..



예를 들면 1번 아이템을 2번으로 내리고 2번은 1번으로

올릴려고 합니다.



그런데 이게 subitem이 좀 많아서 일일이 subitem을 다 복사하지 않고

tListitem의 포인터를 사용해 서로 바꾸는 방법으로 할려고 했는데..



그게 C처럼 맘대로는 안되는군요..



간단한 소스로..



procedure TForm1.swap;

var

myitem : tlistitem;



begin

myitem := ListView1.Items[1];

ListView1.Items[1] := ListView1.Items[2];

ListView1.Items[2] := myitem;

end;

이렇게 하니까 안되는군요...



포인터도 마찬가지로 실패..

procedure TForm1.swap;

var

pt: pointer;



begin

pt := ListView1.Items[1];

ListView1.Items[1] := ListView1.Items[2];

ListView1.Items[2] := pt;

end;



어떻게 하면 되는지 고수님들의 지도편달 부탁드립니다.

1  COMMENTS
  • Profile
    최용일 2001.09.27 20:48
    안녕하세요. 최용일입니다.



    아래와 같이 해보세요...



    procedure TForm1.swap;

    var

    Temp: TListItem;

    begin

    Temp := TListItem.Create(ListView1.Items);

    Temp.Assign(ListView1.Items[0]);

    ListView1.Items[0].Assign(ListView1.Items[1]);

    ListView1.Items[1].Assign(Temp);

    Temp.Free;

    end;



    ^^ 항상 즐코하세요...



    도와줘요 wrote:

    > listview에서 두개의 아이템 인덱스를 서로 바꾸려고 하는데

    > 그게 맘대로 잘 안되는군요..

    >

    > 예를 들면 1번 아이템을 2번으로 내리고 2번은 1번으로

    > 올릴려고 합니다.

    >

    > 그런데 이게 subitem이 좀 많아서 일일이 subitem을 다 복사하지 않고

    > tListitem의 포인터를 사용해 서로 바꾸는 방법으로 할려고 했는데..

    >

    > 그게 C처럼 맘대로는 안되는군요..

    >

    > 간단한 소스로..

    >

    > procedure TForm1.swap;

    > var

    > myitem : tlistitem;

    >

    > begin

    > myitem := ListView1.Items[1];

    > ListView1.Items[1] := ListView1.Items[2];

    > ListView1.Items[2] := myitem;

    > end;

    > 이렇게 하니까 안되는군요...

    >

    > 포인터도 마찬가지로 실패..

    > procedure TForm1.swap;

    > var

    > pt: pointer;

    >

    > begin

    > pt := ListView1.Items[1];

    > ListView1.Items[1] := ListView1.Items[2];

    > ListView1.Items[2] := pt;

    > end;

    >

    > 어떻게 하면 되는지 고수님들의 지도편달 부탁드립니다.