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 ...
随机推荐
- JSP题库
一. 填空题 一个完整的JSP页面是由普通的HTML标记.JSP指令标记.JSP动作标记. 变量声明 与方法声明 .程序片 .表达式 . 注释 7种要素构成. JSP页面的基本构 ...
- iOS 多线程及其他补充
NSOperation NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类 NSInvocationOperation 如果直接执行NSInvocationOperatio ...
- August 12th 2016 Week 33rd Friday
Everything is good in its season. 万物逢时皆美好. Every dog has its day. You are not in your best condition ...
- SQLServer视图
视图简介:通过定义 SELECT 语句以检索将在视图中显示的数据来创建视图.SELECT 语句引用的数据表称为视图的基表.在SQL Server 2005系统中,可以把视图分为3种类型,即标准视图,索 ...
- SQLSERVER查询连接数
SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN (SELECT [DBID]FROM [Master].[dbo].[SYSDA ...
- poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30529 Accep ...
- golang heap container balance request
package mainimport ( "container/heap" "fmt" "log" "math/rand" ...
- JavaScript - 引用类型
对象在JavaScript中被称为引用类型的值. 引用类型和传统面向对象设计中的类相似,但实现不同. Object是一个基础类型,其他所有类型都从Object继承了基本的行为. Array类型,Dat ...
- hdu 4291 2012成都赛区网络赛 矩阵快速幂 ***
分析:假设g(g(g(n)))=g(x),x可能非常大,但是由于mod 10^9+7,所以可以求出x的循环节 求出x的循环节后,假设g(g(g(n)))=g(x)=g(g(y)),即x=g(y),y也 ...
- RTP RTCP在音视频传输与同步方面的使用
转自:http://blog.csdn.net/kof98765/article/details/17733701 1 音视频实时传输 1.1 Jrtplib库介绍 本系统采用开源库Jrtplib进行 ...