掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewのListItemの順番を入れかえるには? (ID:3699)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Halbow です。 > ListViewのListItemの順番を入れかえたいのですが、 > スマートな方法を探しています。 スマートじゃない方法ではうまくいっているのですね。 わたしが思いつくのは、Insert - Assign - Delete のサイクルです。 スマートじゃないですが、以下にコードを載せておきます。 type TForm1 = class(TForm) ListView1: TListView; btnUpper: TButton; btnLower: TButton; procedure FormCreate(Sender: TObject); procedure btnUpperClick(Sender: TObject); procedure btnLowerClick(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin ListView1.ViewStyle := vsReport; ListView1.RowSelect := true; for i := 0 to 2 do with ListView1.Columns.Add do begin width := 100; Caption := Format('Column %d',[i]); end; for i := 0 to 10 do with ListView1.Items.Add do begin Caption := Format('Caption %.2d',[i]); SubItems.Add(Format('SubItem1 %.2d',[i])); SubItems.Add(Format('SubItem2 %.2d',[i])); end; ListView1.Selected := ListView1.Items[5];; end; procedure TForm1.btnUpperClick(Sender: TObject); var SelIndex:integer; LI:TListItem; begin SelIndex := ListView1.Selected.Index; if SelIndex > 0 then begin LI := ListView1.Items.Insert(SelIndex-1); LI.Assign(ListView1.Items[SelIndex+1]); ListView1.Items.Delete(SelIndex+1); ListView1.Selected := ListView1.Items[SelIndex-1]; ListView1.ItemFocused := ListView1.Selected; end; ListView1.SetFocus; end; procedure TForm1.btnLowerClick(Sender: TObject); var SelIndex:integer; LI:TListItem; begin SelIndex := ListView1.Selected.Index; if SelIndex < ListView1.Items.Count-1 then begin LI := ListView1.Items.Insert(SelIndex+2); LI.Assign(ListView1.Items[SelIndex]); ListView1.Items.Delete(SelIndex); ListView1.Selected := ListView1.Items[SelIndex+1]; ListView1.ItemFocused := ListView1.Selected; end; ListView1.SetFocus; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.