喫茶XRAYトップページ

[スレッド全体
]

[12925] TTreeView の展開ボタンのアイコン返信 削除
2019/6/20 (木) 16:56:39 Mr.XRAY
TTreeView のノードのアイコンを [+], [-] にする例です.
VCL Style で変更する手も考えられます.

EXE 作成は Windows 7 U64(SP1) + Delphi XE5(UP2) Pro VCL-32
vclide150.bpl 内の以下の画像を使用しています.
VT_XPBUTTONMINUS.bmp
VT_XPBUTTONPLUS.bmp

http://mrxray.on.coocan.jp/Delphi/zip/DelphiML_5203_TTreeView_NodePlusMinus.zip
(EXE のみです.画像は利用者が用意してください)

参考記事
[ カスタム描画における TCanvas ( 入門者用 ) ]
http://mrxray.on.coocan.jp/Delphi/Others/A_UltraIntro02.htm

※ コードは最初の掲載時から少し変更しています.

procedure TForm1.FormCreate(Se
procedure TForm1.FormCreate(Sender: TObject);
var
 LRoot  : TTreeNode;
 LNode  : TTreeNode;
 LLoopI : integer;
 LLoopJ : integer;
 LLoopK : integer;
begin
  for LLoopJ:=0 to 4 do begin
    LRoot:=TreeView1.Items.Add(nil,IntToStr(LLoopJ));
    for LLoopI:= 0 to 2 do begin
      LNode := TreeView1.Items.AddChild(LRoot, Format('Child %d.%d',[LLoopJ,LLoopI]));
      if LLoopI = 1 then begin
        for LLoopK := 1 to 3 do begin
          TreeView1.Items.AddChild(LNode, Format('Child-Child %d',[LLoopK]));
        end;
      end;
    end;
  end;
end;

procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
  var PaintImages, DefaultDraw: Boolean);
var
  LLeft   : Integer;
  LTop    : Integer;
  LBitmap : TBitmap;
begin
  DefaultDraw := True;
  if Stage <> cdPostPaint then Exit;
  if not Node.IsVisible then Exit;

  LLeft := Node.DisplayRect(True).Left + Treeview1.Indent - 33;
  LTop  := Node.DisplayRect(False).Top + 6;

  LBitmap := TBitmap.Create;
  try
    if Node.HasChildren then begin
      if Node.Expanded then begin
        try
          LBitmap.LoadFromFile('VT_XPBUTTONMINUS.bmp');
          TreeView1.Canvas.Draw(LLeft, LTop, LBitmap);
        except
        end;
      end else begin
        try
          LBitmap.LoadFromFile('VT_XPBUTTONPLUS.bmp');
          TreeView1.Canvas.Draw(LLeft, LTop, LBitmap);
        except
        end;
      end;
    end;
  finally
    FreeAndNil(LBitmap);
  end;
end;



[12943] Re:TTreeView の展開ボタンのアイコン返信 削除
2019/7/3 (水) 23:30:13 Mr.XRAY
[ TreeView1の表示の仕方を変更することはできませんか?]
https://www.freeml.com/delphi-users/5203/latest

あ〜あ〜,
やっぱりレスするんじゃなかった・・・ 反省.

参考までに,テーマによる描画がサポートされたのは Delphi 2007 からです.
下図は Windows 7 U64(SP1) + Delphi 2007-R2 の結果です.

※ nagao 氏によれば Delphi 2010 では展開折りたたみのボタンは [+] [-]
ということですね.
私の Windows 7 か Delphi 2010 が壊れているか,
はたまた nagao 氏のが壊れているかですね.なんてね (笑)

# あきれた,アキレス腱,桃中軒雲右衛門っと・・・


[12945] Re2:TTreeView の展開ボタンのアイコン返信 削除
2019/7/4 (木) 06:54:02 Mr.XRAY
> ※ nagao 氏によれば Delphi 2010 では展開折りたたみのボタンは [+] [-]
> ということですね.


喫喫茶XRAY のお客様には説明するまでもないですが,要因は

(1) プロジェクトのランタイムテーマを無効にしている
(2) Windows 7 の Aero (エアロ) 機能を無効にしている

と思います.
ただし,昨日の彼の書き込みではどちらかの判定はできません.私は

> 新規にプロジェクトを作成して TTreeView (ティー・ツリービュー) を配置

と「新規」と書いていますが,過去の経験から「新規」でテスト
している可能性が低いからです.
いずれにしても (1) を確認するのが優先ですね.
原因が (1) であれば話は簡単です.
「・・・と同じように」したいと言うのですから.
でも,もうレスする予定はありません.

> Mr.XRAYさんのWindows 7 + Delphi 2010 の環境のパソコンでは
> 矢印 (三角形) なのでしょうか?


何と失礼な !
自助努力 0 のあんたと違って確認しないでレスなんかしませんよ.
全国的に,いや地球規模,宇宙規模でそうなるんです !!
(1) (2) の場合を除いて.


[12950] また自己嫌悪になるかも返信 削除
2019/7/6 (土) 14:13:29 Mr.XRAY
> でも,もうレスする予定はありません.

と思っていたのですが,レスするかも知れません.
どういうレスにするか考えているところです.
また,自己嫌悪におちいるかも知れません.


[12951] Re:また自己嫌悪になるかも返信 削除
2019/7/7 (日) 15:36:23 Mr.XRAY
> どういうレスにするか考えているところです.

新規のプロジェクトを作成してテストして頂くのは本当に困難が伴います.
山で困難な岸壁のルートを登攀するみたいに.

昔,igy さんが新規でやってみてください.
というレスをした方が,やったけど同じ.
で,更に聞き直しても同じ.

かなりスレッドが延びてから,質問者から
「新規にプロジェクトを作成してテストしたらそのようになりました」
というのがありました.


私は,彼の国宝級の方に
「新規にプロジェクトを作成してテストする必要があるんですか ?」
と訊き返されたことがあります.


何なんでしょうね.
「お前なんかに指図されたくない」
という感情なのでしょうか ?


[12952] Re2:また自己嫌悪になるかも返信 削除
2019/7/7 (日) 21:09:45 SO
▼ Mr.XRAYさん
 
> 何なんでしょうね.
> 「お前なんかに指図されたくない」
> という感情なのでしょうか ?


他のコードやプロパティの設定が影響しないという、
思い込みなんでしょうね。。。

[12953] 疲れた返信 削除
2019/7/8 (月) 14:26:45 Mr.XRAY
▼ SOさん

> 他のコードやプロパティの設定が影響しないという、
> 思い込みなんでしょうね。。。


う〜ん,何かバカにされている気がすることがあるんですよね.

> Mr.XRAYさんのWindows 7 + Delphi 2010 の環境のパソコンでは
> 矢印 (三角形) なのでしょうか?


このフレーズも何回か見たことがありますが,これもバカにされている気がします.
そうなるからレスしているのに,何で訊き返すの ?
自分がそうだから相手もそうだと思うの ?

たった二回だけのレスなのに疲れた.
もうレスする気力がない.

アッ チョウチョ チョウチョダ チョウチョダ
ママ チョウチョガ スズメヲタベテルヨ

花は桜木 山なら富士よ 浪花節なら桃中軒


[12954] ヤル気なし返信 削除
2019/7/9 (火) 13:34:41 Mr.XRAY
https://www.freeml.com/delphi-users/5225

>Mr.XRAYさん、dachoさん、こんにちは。nagaoです。
>色々と教えて頂きありがとうございました。


何だコリャ.

> 新規にプロジェクトを作成して TTreeView (ティー・ツリービュー) を配置

んなもの 10 分もかからないと思うんですけどね.
ヤル気なしですな.

(1) Delphi 2010 のデフォルト確認 (三角形の矢印になる)
(2) 既存の Delphi 2010 で作成した [+] [-] プログラムの違いの確認と説明

と思っていたのですが残念です.


[12955] 救いの神返信 削除
2019/7/9 (火) 15:47:35 Mr.XRAY
> と思っていたのですが残念です.

救いの神が現れていたんですね.
レスしておきました.
質問した方以外の方も見て,あるいは読んでいますから,
参考になることも書いておかないと.


[12956] Re:救いの神返信 削除
2019/7/9 (火) 21:17:56 Mr.XRAY
https://www.freeml.com/delphi-users/5203/latest

あっ,DEKO さんが現れた !!
う〜ん,いいとこ取りされたな〜 (笑)

nagao さんも幸せ者だね〜.
って,本人は読まないから関係ないか.

> そういった事情から、SetWindowTheme() を使って TreeView の
> 展開ボタンを [+][-] にするのは個人的にはオススメしません。


「ご利用は計画的に」ですね.
https://ht-deko.com/ft1301.html#130122_02


[12957] Re2:救いの神返信 削除
2019/7/10 (水) 08:29:52 SO
▼ Mr.XRAYさん

「おま国」はよく目にしていましたが、
「おま環」は初めて目にしました(笑)

場合によりますが、同じ環境を整えるのって大変ですよね。。。

[12958] Re3:救いの神返信 削除
2019/7/10 (水) 08:48:06 Mr.XRAY
▼ SOさん

> 「おま環」は初めて目にしました(笑)

私も.ハハハッ
ところで,

>>間違いなく「新規にプロジェクトを作成」してテストしたんですよね ?
>はい。新規にプロジェクトを作成して下記のテストプログラムでテストしました。


ということです.
えっ〜 !? びっくり仰天.
Delphi 2010 アンインストールしてしまったし.
そのようになる設定があるのか,あるいは,

・Windows 7 の設定でクラシック表示にしている。

なのか ?
さぁて,


[12959] 人をバカにしてるの ?返信 削除
2019/7/10 (水) 10:38:41 Mr.XRAY
> >>間違いなく「新規にプロジェクトを作成」してテストしたんですよね ?
> >はい。新規にプロジェクトを作成して下記のテストプログラムでテストしました。
>
> ということです.
> えっ〜 !? びっくり仰天.
> Delphi 2010 アンインストールしてしまったし.
> そのようになる設定があるのか,あるいは,
>
> ・Windows 7 の設定でクラシック表示にしている。
>
> なのか ?
> さぁて,


ガクッ,よくコードをみたら・・・
しかし,まあ,何という,
完全に人をオチョクッているな.


[12962] Re:人をバカにしてるの ?返信 削除
2019/7/10 (水) 20:28:08 Mr.XRAY
> ガクッ,よくコードをみたら・・・
> しかし,まあ,何という,
> 完全に人をオチョクッているな.


それではですね,現在の国宝級の方の心境を代弁すると,

『しつこいんだよ MrXRAY ってやつは.黙って教えりゃいいんだよ.
出し惜しみなんかしやがって,
Delphi 2010 の動作なんか関係ないだろうが.
俺のパソコンのことでガタガタ文句言うんじゃーねえよ.さっさと消えろよな.
自分を何様だと思ってんだ !! 』

といったところでしょうか.
ごもっともでございます m(_ _)m


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82