文档章节

学习 TTreeView [4] - TTreeNode 类的常用属性与 TTreeView 类的 OnChange 事件

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 459
阅读 9
收藏 0
本例效果图:


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Nodes: TTreeNodes;
  node: TTreeNode;
begin
  {初始化 TreeView1}
  TreeView1.Align := alLeft;
  Nodes := TreeView1.Items;
  node := Nodes.Add(nil, '一连长');
  node := Nodes.AddChild(node, '一排长');
  node := Nodes.AddChild(node, '一班长');
  node := Nodes.AddChild(node, '战士1');
  Nodes.Add(node, '战士2');
  Nodes.Add(node, '战士3');
  Nodes.Add(node, '战士4');
  node := node.Parent;
  Nodes.Add(node, '二班长');
  Nodes.Add(node, '三班长');
  node := node.Parent;
  Nodes.Add(node, '二排长');
  Nodes.Add(node, '三排长');
  node := node.Parent;
  Nodes.Add(node, '二连长');
  Nodes.Add(node, '三连长');

  {初始化 StringGrid1}
  with StringGrid1 do begin
    Align := alClient;
    FixedRows := 0;
    ColCount := 2;
    ColWidths[0] := 78;
    ColWidths[1] := 50;
    DefaultRowHeight := 18;
    RowCount := 15;
    Cells[0,0]  := '当前选择';
    Cells[0,1]  := '序号';
    Cells[0,2]  := '所在级别';
    Cells[0,3]  := '在兄弟中排行';
    Cells[0,4]  := '下级总数';
    Cells[0,5]  := '上级元素';
    Cells[0,6]  := '上一个';
    Cells[0,7]  := '下一个';
    Cells[0,8]  := '上一个兄弟';
    Cells[0,9]  := '下一个兄弟';
    Cells[0,10] := '上一个可见';
    Cells[0,11] := '下一个可见';
    Cells[0,12] := '第一个下级';
    Cells[0,13] := '最后一个下级';
    Cells[0,14] := '总数';
  end;
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  with StringGrid1 do begin

    {清除第二列的数据}
    StringGrid1.Cols[1].Clear;

    {当前选择}
    Cells[1,0] := Node.Text;

    {序号; AbsoluteIndex 是绝对序号}
    Cells[1,1] := IntToStr(Node.AbsoluteIndex);

    {所在级别}
    Cells[1,2] := IntToStr(Node.Level);

    {在兄弟中排行}
    Cells[1,3] := IntToStr(Node.Index);

    {下级总数}
    Cells[1,4] := IntToStr(Node.Count);

    {上级元素}
    if Boolean(Node.Parent) then Cells[1,5] := Node.Parent.Text;

    {上一个}
    if Boolean(Node.GetPrev) then Cells[1,6] := Node.GetPrev.Text;

    {下一个}
    if Boolean(Node.GetNext) then Cells[1,7] := Node.GetNext.Text;

    {上一个兄弟}
    if Boolean(Node.getPrevSibling) then Cells[1,8] := Node.getPrevSibling.Text;

    {下一个兄弟}
    if Boolean(Node.getNextSibling) then Cells[1,9] := Node.getNextSibling.Text;

    {上一个可见}
    if Boolean(Node.GetPrevVisible) then Cells[1,10] := Node.GetPrevVisible.Text;

    {下一个可见}
    if Boolean(Node.GetNextVisible) then Cells[1,11] := Node.GetNextVisible.Text;

    {第一个下级}
    if Node.HasChildren then Cells[1,12] := Node.getFirstChild.Text;

    {最后一个下级}
    if Node.HasChildren then Cells[1,13] := Node.GetLastChild.Text;

    {总数}
    Cells[1,14] := IntToStr(Node.Owner.Count);
  end;
end;

end.

 
 
 
 
 

 

 

  

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

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
govcl 1.1.3 版本更新,GO 语言 UI 组件库

更新内容: TTreeView增加TTVAdvancedCustomDrawEvent、TTVAdvancedCustomDrawItemEvent事件 TListView增加TLVAdvancedCustomDrawEvent、TLVAdvancedCustomDrawItemEvent、TLVAdvancedCustom......

不在乎y
01/04
1K
8
GO 语言 UI 组件库 - govcl

由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的想法Delphi(Lazarus)有些许多优秀的VCL(LCL)组件,不拿来使用太可惜了。所以就索性做了一套。目前支...

不在乎y
2017/10/10
6.9K
17
依据数据集 进行 树 的构造(treeview & dataset) 方法一

type PDepData=^DepData; DepData = record ID: Integer; DepID: string; DepName: string; end; procedure FreeTV(tv: TTreeview); var i: Integer; begin for i := 0 to tv.Items.Count - ......

vga
2015/11/14
0
0
govcl v1.0.4 释出,GO 语言 UI 组件库

1、增加了TListView、TTreeView、TPageControl几个事件; 2、增加了TListView、TTreeView排序过程; 3、修复了New控件时使用CheckPtr增加安全检测; 4、增加了TListView、TTreeView排序,图像...

不在乎y
2017/12/21
2.4K
14
input标签获取图片文件尺寸

思路分析 (2)在onchange事件中使用读取选取文件的信息 (3)使用一个img标签来显示获取的图片(如果不需要显示可以设置hidden隐藏) (4)通过img标签的和获取图片的尺寸 效果演示 完整代码...

u013263917
2017/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
11分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
18分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
21分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
31分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
36分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部