掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
チェックボックスのノードに3ステートの無効(中間)を付けるには? (ID:30778)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
真琴:「ねぇ、カイトさん、"無効(中間)"って、チェックボックスを淡色の灰色にしたいのよね?」 海都:「ソコのところがイマイチよく分からないけど、もし、そういうコトなら…」 TreeView1.StateImages := ImageListChkBox; 海都:「ImageListを貼り付けて、↑このように ImageListChkBoxの名前でTreeView1のStateImagesに設定しておいて…」 真琴:「中身は空のままでいいの?」 海都:「いや、このBMPファイルから Imageをあらかじめ追加しておく、それで…」 procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const MASK_CHECK = $0006; MASK_ENABLE = $0001; var Node: TTreeNode; function Grayed: Boolean; begin result := (Node.StateIndex and MASK_ENABLE <> 0); end; begin with TTreeView(Sender) do begin Node := GetNodeAt(X, Y); if Node = nil then exit; if htOnStateIcon in GetHitTestInfoAt(X, Y) then begin // チェックボックスがクリックされた if (ssLeft in Shift)and(not Grayed) then Node.StateIndex := Node.StateIndex xor MASK_CHECK; if ssRight in Shift then Node.StateIndex := Node.StateIndex xor MASK_ENABLE; Selected := Node; end; end; end; 海都:「チェックボックスの所を右クリックすると、有効と無効が切り換わる」 真琴:「あ、無効の時は、左クリックしても ON/OFFが切り換わらないようになってるのね」 海都:「そうだよ」 真琴:「カイトさん、これって、SetWindowLongを使ってないよね、ナンで?」 海都:「ジツは、SetWindowLongでCheckBoxを付けるのは、StateImagesを設定するのと同じなんだよ」 真琴:「えっ、そうなんだ」 海都:「SetWindowLongの場合の表示はOSが用意したImageだけど、StateImages設定では自前のImageだから自由に変えられる」 広海:「だけどぉ、このImage、自分で作らなきゃダメってコトだろ?カイトくん」 真琴:「そうよね〜、それも面倒っていうか大変よねぇ」 海都:「はいはい、センパイ方のおっしゃること、マコトにごもっとも…」 真琴:「あの〜^^、もしかしてぇ、イマの、おやじギャグ?」 広海:「だよねぇ」 海都:「ワカッタ?^^; …これは、以前オレが作ってココ↓にUPしておいたImage、それをDLしてImageListChkBoxに入れたんだ」 http://kaito.es.land.to/lime/lime.cgi?chkbox 真琴:「それって、ダレでもDLして使ってイイの?」 海都:「ぅん、イイんじゃない?」
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.