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 ...
随机推荐
- LightOJ1336 Sigma Function(约数和为偶数的个数)
Sigma Function Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- Web上的支持的图片格式以及它们之间的区别
一.GIF(图形交换格式) GIF格式的图片最多只能保存256中颜色,该格式支持透明色,支持动画效果. 二.JPEG(联合图像专家组) JPEG格式不支持透明色及动画,颜色可达1670种. 三.PNG ...
- moogodb3.x总结
搞了三天了,从阿里云服务器,到linux,再到mongodb数据库,只有一个感觉就是,头都要炸了,这篇是对mongodb做一个总结吧,也算有一个成果了 mongodb在linux下的安装 mongod ...
- XMPP框架下微信项目总结(1)环境配置
xmpp介绍 xmpp基于模块开发的 无须自己写请求 (登陆,注册,获取好友列表,添加/删除好友等) ------>简介 ------------------------- ----->工 ...
- jpg Test
- "稀奇古怪的"delete this
myClass::foo(){ delete this; } .. void func(){ myClass *a = new myClass(); a->foo(); ...
- 困难的串(dfs)
困难的串 题意: 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的串”.例如, BB.ABCDABCD都是容易的串,而D.DC.ABDAD ...
- C++ STL string
要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...
- NYOJ题目436sum of all integer numbers
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr0AAAHKCAIAAACBiWRrAAAgAElEQVR4nO3dP1LjSts34G8T5CyEFB
- selenium--python如何定位一组元素并返回文本值
from selenium import webdriverimport time a=[] #创建一个空列表用于存储查询到的元素组driver = webdriver.Firefox()driver ...