こんばんは。nagaoです。
>これってDelphi2010じゃないですよね。(ユニット名のプレフィクスは
>XE2からだったはずなので)
>Windows 7 + Delphi 2010 の環境でのテストのことなんですが・・・・
私の最初の発言が不適切であったので、皆様を混乱させてしまったようで
申し訳ありませんが、私のWindows 7 + Delphi 2010 のAパソコンでは、
TreeViewの展開ボタンが[+][-]表示であるのに対して、Windows 10 +
Delphi 10.1 BerlinのBパソコンでは当初は矢印表示でした。
このBパソコンも[+][-]表示にさせたいというのが私の希望している
ことでした。
ですから、[delphi-users:5230]のテストプログラムは、この希望が叶え
られることを確認するためにBパソコンで作成し、そして希望が叶えられ
ることを確認しました。
念のためWindows 7 + Delphi 2010 のAパソコンでも、下記のテスト
プログラムを作成してみました。
そして、[表示]-[デスクトップの配置]の所は、Classic Unlocked と
Default Layoutの2つの選択肢、そして[プロジェクト]-[オプション]
-[アプリケーション]-[ランタイムテーマを有効にする(R)]の所は
チェックマークを付ける場合と付けない場合の2つの選択肢で、
計4つのケースで動作テストしたのですが、
SetWindowTheme(TreeView1.Handle, nil, nil);
を無効にしているにも拘わらず、動作結果はすべて[+][-]表示でした。
これに対して、Bパソコンでは,[delphi-users:5230]のテストプログラムの
SetWindowTheme(TreeView1.Handle, nil, nil);
の行を無効にして動作テストしたところ、[ランタイムテーマの有効]に
チェックマークを付けた時は、[クラシック(ドッキングなし)]の場合も
[デフォルトレイアウト]の場合も矢印表示であり、[ランタイムテーマの有効]
にチェックマークを付けないた時は、[クラシック(ドッキングなし)]の場合
も[デフォルトレイアウト]の場合も[+][-]表示でした。
『Delphi 2007 以降,この仕様に関する動作は全て同じ』とのことですが、
上記の通り、なぜか私のAパソコンとBパソコンは違う動きをします。
<Aパソコン用テストプログラム>
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R *.dfm}
//uses uxTheme;
procedure TForm1.FormCreate(Sender: TObject);
var
LRoot : TTreeNode;
LNode : TTreeNode;
LLoopI : integer;
LLoopJ : integer;
LLoopK : integer;
begin
// SetWindowTheme(TreeView1.Handle, nil, nil);
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;
end.