掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewのvsReport形式でチェックボックスをチェックなし、あり、不可(グレー)にしたい (ID:38115)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ListViewのチェックボックスの状態は、StateIndexを使って管理されています。 (MSDNによると1がUncheckedで2がCheckedだとか) さらに、VCLもCheckedとStateIndex値の値を別々にキャッシュしているので、話がややこしくなっています。 結局、それぞれが干渉し合って正しく状態が更新されないようですね。 いっそCheckBoxesは外して、StateIndexだけ使って自前で管理するのが良いのではないでしょうか。 ついでに今後問題になりそうなところ: ・OnCustomDrawItemは、状態が変わった「結果」として再描画のため呼び出されるものなので、そこで状態を変えるべきではありません。 ・Changedはリスト項目の状態が変わるとその都度呼び出されます(例えば、リストの選択を変更するだけでも数回続けて呼ばれます)。 なので、SubItemとかCheckedが変更された時だけ呼び出されると仮定するのは危険。 また、その内部でCheckedなどの状態を変更すると、無限呼び出しに陥る可能性があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.