【发布时间】:2011-12-06 20:48:01
【问题描述】:
是否可以使用标准的 TTreeView 来更改展开和折叠图像?
我不是指节点图像,我指的是有子节点旁边的小箭头,如下所示:
理想情况下,我希望箭头显示为 + 和 - 符号,如 Delphi 组件结构树:
如果可以改变这一点,我将如何去做?
基于大卫回答的工作演示
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.
结果:
【问题讨论】: