首先建立树节点所用的记录类型

type

HXL_TNode = record

name:string;

desc:string;

BRoot:Boolean;

定义该类型指针

pHXL_TNode = ^ HXL_TNode;

然后在virtualstringtree所在的frame或者form的create函数中,初始化你的virtualtree

添加列:vrtlstrngtr1.Header.Columns.Add

设置第n列的名称vrtlstrngtr1.Header.Columns[n].Text := '名字';

设置第n列的宽度:vrtlstrngtr1.Header.Columns[n].Width := 120;

设置折叠在第n列进行:vrtlstrngtr1.Header.MainColumn := n;

设置树节点所占的空间大小:vrtlstrngtr1.NodeDataSize := SizeOf(HXL_TNode);

假设你所定义的virtualstringtree为vrtlstrngtr1

p_node: pHXL_TNode;

p_node1, p_node2: PVirtualNode;

建立父节点:

p_node1 := vrtlstrngtr1.AddChild(nil);

p_node := vrtlstrngtr1.GetNodeData(p_node1);

p_node^.name := ‘绿茶’;

p_node^.desc := ‘不发酵的茶’;

p_node^.BRoot := True;

注意:不是用p_node1.parent是不是为空来判断是不是父节点,p_node1的父节点不是空节点,而是vrtlstrngtr1.RootNode.如果你想自己控制,则可以自己定义BRoot成员,来判断是不是根节点。

添加子节点

p_node2 := vrtlstrngtr1.AddChild(p_node1);

p_node := vrtlstrngtr1.GetNodeData(p_node2);

p_node^.name := '西湖龙井';

p_node^.desc := ‘产地西湖的名茶’;

p_node^.BRoot := False;

如果要显示,则需要在Events中点击OnGetText右面的空白出,自动生成vrtlstrngtr1GetText函数:

procedure 树所在的frame或者form的类.vrtlstrngtr1GetText(Sender: TBaseVirtualTree;

Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;

var CellText: WideString);

var

p_node: pHXL_TNode;

begin

p_node := Sender.GetNodeData(Node);

case Column of

0: CellText := p_node.name;

1: CellText := p_node.desc;

end;

end;

点击virtual string tree要做处理,则需要在events中点击OnClick右面的空白处,就会自动生成一个vrtlstrngtr1Click(Sender: TObject)函数

这里添加你要做的处理

获取所点击的节点

p_node := vrtlstrngtr1.FocusedNode;如果点击的地方不在节点出,则会返回空,做处理时,需要加以判断。

如果你想设置某节点p_node1以高亮形式显示给用户:

首先设置该节点被选中,vrtlstrngtr1.Selected[p_node1] := True;此时该节点的背景色是灰色,如果想设置其它颜色,则在属性中设置:properties->colors->UnfocusedSelectionColor中设置.如果你想起父节点也能在当前树的窗体中显示出来,则只需vrtlstrngtr1.FocusedNode := p_node1父节点;

将树完全折叠起来用vrtlstrngtr1.FullCollapse(nil);

将树在节点p_node处展开用vrtlstrngtr1.Expanded[p_node] := True;

树节点用的比较多的属性:ChildCount,NextSibling,PrevSibling,Parent,FirstChild,LastChild.

Delphi Virtual String Tree 基本用法的更多相关文章

  1. 什么是virtual string tree?

    Virtual stringtree(以后简称VST)是一个提供源码的免费的第三方插件,支持DELPHI和C++builder,可在http://www.soft-gems.net/下载到最新的版本. ...

  2. delphi中Application.MessageBox函数用法详解

    delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...

  3. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  4. Delphi中String类型原理介绍

    Delphi中字符串的操作很简单,但幕后情况却相当复杂.Pascal传统的字符串操作方法与Windows不同,Windows吸取了C语言的字符串操作方法.32位Delphi中增加了长字符串类型,该类型 ...

  5. Delphi中 StrToIntDef函数的用法

    Delphi中 StrToIntDef函数的用法:比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strtoi ...

  6. sstream头文件-getline 函数 和 stringstream函数 和string的常见用法

    2017-08-12 19:50:50 writer:pprp getline函数可以读入一行的字符,不论有没有空格 第一个参数,流 第二个参数 ,将流读入的地方 第三个参数,当读到某个字符的时候停止 ...

  7. 详解 SWT 中的 Browser.setUrl(String url, String postData, String[] headers) 的用法

    http://hi.baidu.com/matrix286/item/b9e88b28b90707c9ddf69a6e ———————————————————————————————————————— ...

  8. 汉字与区位码互转(天天使用Delphi的String存储的是内码,Windows记事本存储的文件也是内码),几个常见汉字的各种编码,utf8与unicode的编码在线查询,附有读书笔记 good

    汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ 汉(记住它,以后碰到内存里的数值,就会有敏 ...

  9. Delphi中 TStringList 的详细用法 good

    TStringList 类是在Delphi使用最厂的一个对像,我们这里一起来看看 TStringList 的详细用法. 先把要讨论的几个属性列出来:1.CommaText2.Delimiter &am ...

随机推荐

  1. CodeForces 407B Long Path (DP)

    题目链接 题意:一共n+1个房间,一个人从1走到n+1,如果第奇数次走到房间i,会退回到房间Pi,如果偶数次走到房间i,则走到房间i+1,问走到n+1需要多少步,结果对1e9+7取模. 题解:设dp[ ...

  2. 在JAVA中如何跳出当前的多重嵌套循环

    可以使用return,但使用return后,会跳出整个函数,多重循环后面的代码无法执行. public static void main(String[] args) { // TODO Auto-g ...

  3. August 10th, 2016, Week 33rd, Wednesday

    The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...

  4. Nodejs的第一个页面

    nodejs安装后如何查看和安装其他工具 网上nodejs的文章已经很多,这里只是写下自己的小小心得,如果能帮到别人当然更好. 安装nodejs这里就不叙述了,直接上nodejs官网下载就好了,初学者 ...

  5. JUnit笔记

  6. Python中读取csv文件内容方法

    gg 224@126.com 85 男 dd 123@126.com 52 女 fgf 125@126.com 23 女 csv文件内容如上图,首先导入csv包,调用csv中的方法reader()创建 ...

  7. vpn,可以连接上,但是不能访问局域网内共享的文件怎么办

    不选用VPN的上网关,就可以识别域用户访问共享文件的权限了,在VPN连接的属性里双击TCP/IP协议-高级-去掉勾选"在远程网络上使用默认网关".

  8. 《C#本质论》读书笔记(14)支持标准查询操作符的集合接口

      14.2.集合初始化器 使用集合初始化器,程序员可以采用和数组相似的方式,在集合的实例化期间用一套初始的成员来构造这个集合. 如果没有集合初始化器,就只有在集合实例化后才能显示添加到集合中--例如 ...

  9. Shell编程基础教程4--控制流结构

    4.控制流结构    4.1.控制结构            4.2.if then else语句        格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...

  10. Pyqt 音视频播放器

    在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别.  图像灰度处理 . 播放视频等,强 ...