喫茶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 の設定でクラシック表示にしている。
>
> なのか ?
> さぁて,


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


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


DEKO さんありがとうございます.お疲れ様です.

しかし,SetWindowTheme 以前の話をしているのにややこしいことを.
テーマに関する知識がないんですね.
ボタン等の描画デザインで判定できるのに.

折角 OS が [V][>] にしているだからそれでいいと思うよ.
私も思わずサンプル記事書いてしまったけど.


[12965] Re2:人をバカにしてるの ?返信 削除
2019/7/10 (水) 23:48:46 Mr.XRAY
> テーマに関する知識がないんですね.
> ボタン等の描画デザインで判定できるのに.


まさかとは思いますが,
bds.exe のプロパティの [互換性] タブの [視覚テーマを無効にする] をチェックしているとか.
ただし,これは IDE での実行時のみ
作成した EXE のプロパティを設定すれば [+] [-] になるが,
新規プロジェクト作成だから,可能性はない.


[12966] Re3:人をバカにしてるの ?返信 削除
2019/7/11 (木) 00:06:57 Mr.XRAY
▼ Mr.XRAYさん
> > テーマに関する知識がないんですね.
> > ボタン等の描画デザインで判定できるのに.


> まさかとは思いますが,

もう 1 つ.

ただし,これも IDE での実行時のみ
作成した EXE のプロパティを設定すれば [+] [-] になるが,
管理者権限の起動になるし,新規プロジェクト作成だから,可能性はない.


[12967] クラシック表示-デスクトップテーマ返信 削除
2019/7/11 (木) 01:31:26 Mr.XRAY
参考に.
Windows 7 における表示です.
EXE は Delphi XE(UP1) Pro で作成しています.
上の画像は一般的なテーマ (Aero 有効).下がクラシック表示です.
TTreeview に表示している内容は違います

国宝級の方の PC はおそらく下の画像のようになっていると追われますが,
本人からの確実な情報がないので・・・


[12969] Re:クラシック表示-デスクトップテーマ返信 削除
2019/7/11 (木) 13:09:41 Mr.XRAY
>国宝級の方の PC はおそらく下の画像のようになっていると追われますが,
>本人からの確実な情報がないので・・・


この状態で『Window7+Delphi2010の環境の場合と同じように』
と言われてもねぇ.信じられませんがな.完璧な『おま環』だべ.

# 開発したアプリの納入先の Windows 7 はどうなっているんだろう ?
# 開発者の環境だけがクラシック ?

クラシック表示はちょっと貧相です.
同じ Aero 無効でも Windows 7 ベーシックなら下図のようになります.


[12971] Re2:クラシック表示-デスクトップテーマ返信 削除
2019/7/12 (金) 16:21:11 Mr.XRAY
https://www.freeml.com/delphi-users/5203/latest

> >国宝級の方の PC はおそらく下の画像のようになっていると追われますが,
> >本人からの確実な情報がないので・・・
>
> この状態で『Window7+Delphi2010の環境の場合と同じように』
> と言われてもねぇ.信じられませんがな.完璧な『おま環』だべ.


確定です.クラシック表示でした.
これは彼にとっては大きな収穫だと思います.
アプリの納入先の Windows 7 とは違う環境 (状態) でテストしていたことが
明らかになったのですから.
テーマに関する知識も少しは得られたことでしょう.

それにしても,どういう思考回路になっているのか分かりませんが,
理解の仕方というか,何かがズレているんですよね.


[12978] Re3:クラシック表示-デスクトップテーマ返信 削除
2019/7/14 (日) 11:01:06 Mr.XRAY
> テーマに関する知識も少しは得られたことでしょう.

ちなみに,プロジェクトのオプションで設定する (チェックボックス)
[ランタイムテーマ] というのは,
ランタイム (Runtime),つまり実行時にテーマを有効にするかの設定です.
[ランタイムテーマ] というテーマの名前ではありません.


[12981] Re4:クラシック表示-デスクトップテーマ返信 削除
2019/7/15 (月) 13:44:37 Mr.XRAY
> ランタイム (Runtime),つまり実行時にテーマを有効にするかの設定です.

このテーマというのは,Windows 7 ではデスクトップテーマというものです.

[ Windows 7 のデスクトップテーマ ]
http://mrxray.on.coocan.jp/Delphi/Others/000-001.htm

上のリンクの記事で
世の中のほとんどの PC の Windows 7 が 1 番目と思われます.
(「Windows 7 の PC (パソコン・コンピュータ) のテーマ」ではなく
 ,PC で起動している Windows 7 のテーマです)

2 番目のクラシックは非力な PC で使われることがあります.
Windows 2000 のフォームのデザインに似ていますが,
Windows 2000 互換で動作するわけではありません.
テーマのデザインの一種です.

3 番目のベーシックは Aero が無効になっている状態です.
システムの設定,あるいはビデオボードの性能によっては,標準的なテーマを
設定しても,この Aero が無効の状態になることがあります.
(実際には標準的なテーマが設定できないようになっている ?)


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