- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TreeView 使用笔记
TreeView 由节点构成,建树通过对TreeView.items 属性进行操作。Items 是一个 TTreeNodes 对象,这是一个 TTreeNode
集。
一、针对 TTreeNodes,也就是 TreeView.Items,有这些属性: 1、count,节点个数。
2、item[index] ,通过index 得到节点。
二、针对 TTreeNodes,也就是 TreeView.Items,常用的添加节点的操作有:
AddFirst 添加第一个根节点。由此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。该函数返回新添加的节点。
AddChildFirst 添加第一个子节点,要求有父节点作为其参数。返回新添加的节点。
AddChild 添加一个子节点,要求有父节点作为其参数。返回新添加的节点。
Add 添加一个兄弟节点,要求有兄弟节点作为其参数。返回新添加的节点。
三、针对 TTreeNodes,也就是 TreeView.Items,常用的得到节点的操作有: GetFirstNode() 得到根节点。
然后配合 TTreeNode.GetNext(),就可以访问所有的节点。四、建树举例:
var root_node,cur_node:TTreeNode; begin
root_node:=treeview1.Items.AddFirst(nil, 根 节 点 1); cur_node:=treeview1.Items.addChildfirst(root_node,根节点 1_child1); treeview1.Items.add(cur_node, 根 节 点 1_child2); root_node:=treeview1.Items.Add(nil,根节点 2);
treeview1.Items.AddChildFirst(root_node,根节点 2_child1); end;
五、事件触发:
当从一个节点跳到另一个节点,会触发 TTreeView.OnChange 事件。该事件中,将传递 node,即当前被选中的节点。当修改一个节点的 text 时,会触发TTreeView.onEdit 事件。
六、将节点和节点所对应的数据联系起来
对于每个 TTreeNode,有个Data 属性,可以存放一个指针。我们可以利用这个域来存放与节点对应的自己的数据。
我们先定义一个数据结构,作为记录我们要记录的数据。如: type
PMyData=^TMyData;
TMyData=Record
sFName:string; sLName:String; nIndex:integer; end;
然后,创建数时,将节点和节点数据联系起来: procedure TForm1.Button1Click(Sender: TObject); var
myshuju: PMyData cur_node:TTreeNode; begin
New(MyRecPtr); //记住,一定要先分配内存。有几个节点,就要分配几次内存。myshuju^.FName:=Edit1.Text;
Myshuju^.LName := Edit2.Text; TreeViewIndex := StrToInt(Edit3.Text); with TreeView1 do
begin cur_node:=items.AddFirst(nil,first); cur_node.data:=myshuju;
end; end;
当我们选中一个节点时,就可以使用我们的数据了。
procedure TForm1.TreeView1Change(Sender:TObject;Node:TTreeNode); begin
if node.datanil then self.label1.caption:=pmyData(node.data)^.Fname+pmyData(node.data)^.Lname end;
七、一般使用流程:
1、添加全局变量:
b_first:boolean; //记录是否是第一次访问节点,因为此时数据还未准备好,而一旦访问节点就会触发OnChange 事件,在此事件处理函数中也许会出错。
2、在 FormCreate 中,
a、设置 b_first:=true;
b. 创建数并将节点与数据联系。
3、在 FormShow 中
设置 b_first:=false;
在事件OnChange 中处理节点被选中事件。
在Edit 中处理节点被修改Text 事件。并调用 OnChange.
在 TreeView.Destory 中
释放 Data 中指向的内存空间。
您可能关注的文档
最近下载
- 最新版音标教学.ppt VIP
- 宽QRS波心动过速鉴别-郭继鸿.ppt VIP
- 风电场风电机组调试方案.docx
- 二年级表内乘除法口算题(每页100题).pdf VIP
- 人教版高中生物必修一全套课件(406张精美PPT).docx VIP
- 第四单元+疾病预防与安全应急《定期体检,预防常见病》教学课件+2025-2026学年人教版初中体育与健康七年级全一册.pptx VIP
- 2024年荆州市城市发展控股集团有限公司人员招聘笔试备考题库及答案解析.docx VIP
- 23S516混凝土排水管道基础及接口图集.pdf VIP
- 中国地图(行政区空白填空).doc VIP
- 2023年荆州市城市发展控股集团有限公司人员招聘考试参考题库及答案解析.docx VIP
文档评论(0)