Delphi Virtual String Tree 基本用法
首先建立树节点所用的记录类型
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 基本用法的更多相关文章
- 什么是virtual string tree?
Virtual stringtree(以后简称VST)是一个提供源码的免费的第三方插件,支持DELPHI和C++builder,可在http://www.soft-gems.net/下载到最新的版本. ...
- delphi中Application.MessageBox函数用法详解
delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- Delphi中String类型原理介绍
Delphi中字符串的操作很简单,但幕后情况却相当复杂.Pascal传统的字符串操作方法与Windows不同,Windows吸取了C语言的字符串操作方法.32位Delphi中增加了长字符串类型,该类型 ...
- Delphi中 StrToIntDef函数的用法
Delphi中 StrToIntDef函数的用法:比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strtoi ...
- sstream头文件-getline 函数 和 stringstream函数 和string的常见用法
2017-08-12 19:50:50 writer:pprp getline函数可以读入一行的字符,不论有没有空格 第一个参数,流 第二个参数 ,将流读入的地方 第三个参数,当读到某个字符的时候停止 ...
- 详解 SWT 中的 Browser.setUrl(String url, String postData, String[] headers) 的用法
http://hi.baidu.com/matrix286/item/b9e88b28b90707c9ddf69a6e ———————————————————————————————————————— ...
- 汉字与区位码互转(天天使用Delphi的String存储的是内码,Windows记事本存储的文件也是内码),几个常见汉字的各种编码,utf8与unicode的编码在线查询,附有读书笔记 good
汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ 汉(记住它,以后碰到内存里的数值,就会有敏 ...
- Delphi中 TStringList 的详细用法 good
TStringList 类是在Delphi使用最厂的一个对像,我们这里一起来看看 TStringList 的详细用法. 先把要讨论的几个属性列出来:1.CommaText2.Delimiter &am ...
随机推荐
- CodeForces 407B Long Path (DP)
题目链接 题意:一共n+1个房间,一个人从1走到n+1,如果第奇数次走到房间i,会退回到房间Pi,如果偶数次走到房间i,则走到房间i+1,问走到n+1需要多少步,结果对1e9+7取模. 题解:设dp[ ...
- 在JAVA中如何跳出当前的多重嵌套循环
可以使用return,但使用return后,会跳出整个函数,多重循环后面的代码无法执行. public static void main(String[] args) { // TODO Auto-g ...
- August 10th, 2016, Week 33rd, Wednesday
The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...
- Nodejs的第一个页面
nodejs安装后如何查看和安装其他工具 网上nodejs的文章已经很多,这里只是写下自己的小小心得,如果能帮到别人当然更好. 安装nodejs这里就不叙述了,直接上nodejs官网下载就好了,初学者 ...
- JUnit笔记
- Python中读取csv文件内容方法
gg 224@126.com 85 男 dd 123@126.com 52 女 fgf 125@126.com 23 女 csv文件内容如上图,首先导入csv包,调用csv中的方法reader()创建 ...
- vpn,可以连接上,但是不能访问局域网内共享的文件怎么办
不选用VPN的上网关,就可以识别域用户访问共享文件的权限了,在VPN连接的属性里双击TCP/IP协议-高级-去掉勾选"在远程网络上使用默认网关".
- 《C#本质论》读书笔记(14)支持标准查询操作符的集合接口
14.2.集合初始化器 使用集合初始化器,程序员可以采用和数组相似的方式,在集合的实例化期间用一套初始的成员来构造这个集合. 如果没有集合初始化器,就只有在集合实例化后才能显示添加到集合中--例如 ...
- Shell编程基础教程4--控制流结构
4.控制流结构 4.1.控制结构 4.2.if then else语句 格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...
- Pyqt 音视频播放器
在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别. 图像灰度处理 . 播放视频等,强 ...