您的位置:首页 > 其它

学习 TTreeView [14] - StateIndex(状态图标)、OverlayIndex(叠加图标)

2008-03-16 00:42 344 查看
先给 ImageList1 添加图标如下:



关于 OverlayIndex 的提示:

在给一个节点指定 OverlayIndex 以前, 需要先用 ImageList1.Overlay 指定可用的 OverlayIndex 号.

测试效果图:



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ImgList, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
TreeView1: TTreeView;
ImageList1: TImageList;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Edit2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
node: TTreeNode;
begin
{指定 ImageList}
TreeView1.Images      := ImageList1;
TreeView1.StateImages := ImageList1;

{设定 OverlayIndex, 最多 4 个}
ImageList1.Overlay(3,0); {参数1是 ImageList 中的序号; 参数2是指定可选的 OverlayIndex}
ImageList1.Overlay(4,1);
ImageList1.Overlay(5,2);
ImageList1.Overlay(6,3);

Label1.Caption := 'StateIndex:';
Label2.Caption := 'OverlayIndex:';

Edit1.Text := '-1';
Edit2.Text := '-1';

Button1.Caption := '初始化';

{给 TreeView1 填充}
with TreeView1 do begin
Align := alLeft;
Items.Add(nil, 'AAA');
Items.Add(nil, 'BBB');
Items.Add(nil, 'CCC');
Items.Add(nil, 'DDD');
Items.Add(nil, 'EEE');
Items.AddChild(Items[4], '111');
Items.AddChild(Items[4], '222');
Items.AddChild(Items[4], '333');
Items.AddChild(Items[4], '444');
end;

{指定图标状态}
for node in TreeView1.Items do
begin
node.ImageIndex := 0;    {默认图标为第 0 个}
node.SelectedIndex := 1; {选择图标为第 1 个}
node.StateIndex := -1;   {状态图标暂无}
end;
end;

{Edit1 控制 StateIndex}
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
c: Char;
edit: TEdit;
begin
edit := TEdit(Sender);
c := Chr(Key);
if c in ['0'..'6'] then edit.Text := c else edit.Text := '-1'; {字符限制}

TreeView1.Selected.StateIndex := StrToInt(edit.Text);          {作用于 TreeView}
end;

{Edit2 控制 OverlayIndex}
procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
c: Char;
edit: TEdit;
begin
edit := TEdit(Sender);
c := Chr(Key);
if c in ['0'..'3'] then edit.Text := c else edit.Text := '-1'; {字符限制}

TreeView1.Selected.OverlayIndex := StrToInt(edit.Text);        {作用于 TreeView}
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
Edit1.Text := IntToStr(Node.StateIndex);
Edit2.Text := IntToStr(Node.OverlayIndex);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.Items.Clear;
FormCreate(nil);
end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: