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;
어떻게 하면 되는지 고수님들의 지도편달 부탁드립니다.
아래와 같이 해보세요...
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;
>
> 어떻게 하면 되는지 고수님들의 지도편달 부탁드립니다.