加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – TTreeView – 更改展开和折叠图像?

发布时间:2020-12-15 04:28:34 所属栏目:大数据 来源:网络整理
导读:是否可以使用标准TTreeView更改展开和折叠图像? 我不是指Node图像,我的意思是带有子节点的节点旁边的小箭头,如下所示: 理想情况下,我希望箭头显示为和 – 符号,如Delphi组件结构树: 如果可以改变这个,我该怎么做呢? 基于David的答案的工作演示 unit Unit
是否可以使用标准TTreeView更改展开和折叠图像?

我不是指Node图像,我的意思是带有子节点的节点旁边的小箭头,如下所示:

理想情况下,我希望箭头显示为和 – 符号,如Delphi组件结构树:

如果可以改变这个,我该怎么做呢?

基于David的答案的工作演示

unit Unit1;

interface

uses
  Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ComCtrls,Themes,uxTheme;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TMyTreeView = class(TTreeView)
  protected
    procedure CreateWnd; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyTreeView }

procedure TMyTreeView.CreateWnd;
begin
  inherited;
  if ThemeServices.Enabled and CheckWin32Version(6,0) then
    SetWindowTheme(Handle,nil,nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  MyTree: TMyTreeView;
  Node: TTreeNode;
begin
  MyTree := TMyTreeView.Create(nil);
  with MyTree do
  begin
    Parent  := Self;
    Height  := 100;
    Width   := 100;
    Left    := 30;
    Top     := 30;

    Node := Items.Add(nil,'Item');
    Items.AddChild(Node,'Item');
    Node := Items.AddChild(Node,'Item');
  end;
end;

end.

结果:

解决方法

后Vista中的树视图有两个不同的主题.您想要避免的主题称为资源管理器主题.您想使用标准主题.控件必须选择加入以获取资源管理器主题.它通过 SetWindowTheme API实现. VCL树视图控件将其调用为opt-in.它在CreateWnd方法的末尾执行此操作.

您可以通过撤消这样的更改来恢复到标准主题:

type
  TMyTreeView = class(TTreeView)
  protected
    procedure CreateWnd; override;
  end;

procedure TMyTreeView.CreateWnd;
begin
  inherited;
  if StyleServices.Enabled and TOSVersion.Check(6) and StyleServices.IsSystemStyle then
    SetWindowTheme(Handle,nil);
end;

此代码是为XE2编写的.如果你有一个早期的Delphi,那么我认为你想要这样:

if ThemeServices.Enabled and CheckWin32Version(6,nil);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读