掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewのvsReport形式でチェックボックスをチェックなし、あり、不可(グレー)にしたい (ID:38118)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>ImageListをStateImagesに設定し、StateIndexを操作すれば可能なことを知り、やってみました。 >表示された自作画像のチェックボックスをクリックすると、チェックなし→ありと変化... StateImagesに指定したImageListの中の自作画像が以下のようになっているとして、 0番目:チェックなし 1番目:チェックあり 2番目:グレー(チェックなし) 3番目:グレー(チェックあり) 自前の画像でチェックボックスを表示する場合、Checkboxesプロパティは Falseにして、以下のコードでチェックを切り換えればいい。 なお、Checkedプロパティはチェックの有無の判定には使えないので、StateIndexの値で判定する。 type TListView = class(ComCtrls.TListView) private procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; end; type TForm1 = class(TForm) ListView1: TListView; ...... end; var Form1: TForm1; implementation {$R *.DFM} const ResultSII = 3; M_Kanou = '可能'; // チェック ON/OFF変更可 M_Fuka = '不可'; // グレー (ON/OFFはそのまま) // チェックのON/OFF procedure TListView.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Item: TListItem; begin inherited; Item := GetItemAt(X, Y); if Item = nil then exit; if Item.SubItems[ResultSII] = M_Kanou then begin if htOnStateIcon in GetHitTestInfoAt(X, Y) then begin if Item.StateIndex = -1 then Item.StateIndex := 0; Item.StateIndex := 1 - Item.StateIndex; end; end; end; ※ 各ItemのStateIndexは、項目設定時にあらかじめセットしておくこと。 ※「可能」から「不可」にするには、Item.StateIndex := Item.StateIndex or 2; ※「不可」から「可能」にするには、Item.StateIndex := Item.StateIndex and 1;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.