delphi中TreeView使用笔记分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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 中指向的内存空间。

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档