掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewの選択された複数行を削除するには? (ID:12973)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Countが少ない場合を考えてみるとわかりやすいと思います。 たとえばCountが5としますと、 for i := 0 to Count-1 do は、iが0から4まで変化します。 もし、iが1のとき List.Items.Item[i].Selected がTrueになったとしたら、 List.Items.Delete(i); でそのアイテムが削除され、List.Items.Countは4になります。 この状態でforループの制御変数iが4になったとき、どういうことになるでしょうか? List.Items.Item[i].Selected すなわち List.Items.Item[4].Selected は無効なアイテムを参照していることになりませんか? 1つ削除されたので、アクセス可能なアイテムは List.Items.Item[0] List.Items.Item[1] List.Items.Item[2] List.Items.Item[3] ですから。 for i := Count-1 downto 0 do についてはご自分で考えてみてください。 後ろから削除していけば問題ないことは、すぐに理解できると思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.