gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:57:18 33 4
gpt4 key购买 nike

是否可以使用标准 TTreeView 来更改展开和折叠图像?

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

enter image description here

理想情况下,我希望箭头显示为 + 和 - 符号,就像 Delphi 组件结构树一样:

enter image description here

如果可以改变这一点,我将如何去做?

基于 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');
Items.AddChild(Node, 'Item');
end;
end;

end.

结果:

enter image description here

最佳答案

Vista 之后的 Windows 中的 TreeView 有两个替代主题。您想要避免的主题称为资源管理器主题。您想使用标准主题。控件必须选择加入才能获取资源管理器主题。它通过 SetWindowTheme 执行此操作API。 VCL TreeView 控件调用此选项来选择加入。它在其 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, nil);
end;

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

  if ThemeServices.Enabled and CheckWin32Version(6, 0) then
SetWindowTheme(Handle, nil, nil);

关于delphi - TTreeView - 更改展开和折叠图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406621/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com