掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewのListItemの順番を入れかえるには? (ID:3702)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちょっと大げさですが、CustomSortを使うのはどうでしょう。 .Dataプロパティがあいていれば、次のようになります。 あいていなくても、Dataプロパティに持たせる値をclassのオブジェクトなり、構造体なりにして、順序を保持できればOKです。 for i := 0 to 9 do begin Item := ListView1.Items.Add; Item.Caption := 'TEST-' + IntToStr(i); Item.Data := Pointer(i); end; *上のように、Item.Dataに順序を入れてあるとする。順序は重複しないものとする function SortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall; var idx1, idx2: Integer; begin idx1 := Integer(Item1.Data); idx2 := Integer(Item2.Data); if idx1=idx2 then Result := 0; if idx1<idx2 then Result := -1; if idx1>idx2 then Result := 1; end; procedure TForm1.Button2Click(Sender: TObject); var idx1, idx2: Integer; tmp: Pointer; begin idx1 := StrToIntDef(Edit1.Text, -1);//交換したいItemその1 idx2 := StrToIntDef(Edit2.Text, -1);//交換したいItemその2 //位置交換(順序を入れ替えるだけ) tmp := ListView1.Items[idx1].Data; ListView1.Items[idx1].Data := ListView1.Items[idx2].Data; ListView1.Items[idx2].Data := tmp; //ソート ListView1.CustomSort(@SortProc, 0); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.