文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 419
阅读 10
收藏 0
先给 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.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/03/16/1108046.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
来自极客标签10款最新设计素材-系列十四

来源:GBin1.com 本周我们推荐来自极客标签社区带来的10款免费设计素材,大家可以在这里免费下载你需要的内容。如果你也有更好的作品,欢迎分享到社区中来,在得到帮助的同时,也能与更多人分...

gbin1
2013/08/21
104
0
iOS系统3DTouch全解析

概述 iOS10系统登录中国,在系统中对3D Touch的使用需求更频繁,所以对iOS9中便引入的3D Touch功能做一些了解是很有必要的 在日常开发中,我们经常需要使用3D Touch中的两个功能 在主屏幕上对应...

秦无炎
2016/11/14
9
0
ChemDraw Prime 15主要工具有哪些

ChemDraw 15之所以能够比其他同类化学绘制工具出色最重要的原因当然是功能多,ChemDraw Prime 15作为新版ChemOffice组件中的基础版也有众多工具栏,渗透到各个绘制功能当中。常用的Chemdraw工...

学术研究软件
2016/04/14
46
0
Windows 7 任务栏开发 之 覆盖图标(Overlay Icon)

当第一次使用Windows 7 时,任务栏(Taskbar)的改变可以说让我眼前一亮。在以前版本Windows 桌面功能的基础上,Windows 7 任务栏为我们增添了许多其他功能:Jump Lists,Window Preview,P...

junwong
2012/03/09
497
0
WPF编游戏系列 之二 图标效果

本篇将要实现图标的两个效果:1. 显示图标标签,2. 图标模糊效果。在上一篇中提到Image没有HTML 的Title属性(在MSDN中也没找到类似的属性),所以本篇将自行制作一个标签,它的功能是当鼠标...

junwong
2012/03/09
166
0

没有更多内容

加载失败,请刷新页面

加载更多

用Redis实现“秒杀”系统

导论 曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。 秒杀系统的架构设计 秒杀系统,是典型...

小刀爱编程
14分钟前
2
0
GO redis 相关操作

在gopath 目录下安装 go get github.com/garyburd/redigo/redis package mainimport ("fmt""github.com/garyburd/redigo/redis")//定义一个全局链接池变量var pool *redis.Pool//......

汤汤圆圆
52分钟前
12
0
java8性特性,常用的lambda表达式

1、抽取多个对象中的某个属性,用数组接收 List<Student> students = new ArrayList<>(); List<String> names =students.stream().map(Student::getName).collect(Collectors.toList()); 2、......

Boss-x
53分钟前
18
0
flutter 子组件与父组件

无论是子组件还是父组件,任何时候initState()只执行一次,如果需要判断 就在build里面进行,不然无效的。

大灰狼wow
55分钟前
4
0
Rancher Labs引入全球首个多集群、多租户的Prometheus支持!

近日,Rancher Labs宣布加强对Prometheus的支持,提高Kubernetes集群的可见度。Rancher也因此成为唯一一个在多集群、多租户环境中支持Prometheus的解决方案。 Prometheus正迅速成为监控云原生...

RancherLabs
57分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部