热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

delphi10.2treeview基本用法

unitUnit2;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Varia

unit Unit2;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls;

type
TForm2 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
treeview1.Items.AddFirst(nil,Edit1.text);
end;

procedure TForm2.Button2Click(Sender: TObject);
var nownode :TTreenode;
begin
nownode:=treeview1.Selected;
treeview1.Items.AddChild(nownode,edit2.Text);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
//treeview1.Items.Add(1);
end;

end.

 

 

以下是参考的内容

 

Treeview用于显示按照树形结构进行组织的数据。   
    
  Treeview控件中一个树形图由节点(TreeNode)和连接线组成。TtreeNode是TTreeview的基本组成单元。   
  一个树的节点又包含文本(Text)和数据(Data)。Text为String类,Data则为无定形指针(Untyped   Pointer),   
  可以指向一个与节点相联系的数据结构。   
       
  每一个节点下子节点形成这一节点的Items属性,当前节点有一个唯一的Index(TreeNode的Index属性),   
  用于说明子节点在Items中的位置,每一个节点下的子节点是顺序编号的,第一个是0,第二个是1,依次类推。   
  用IndexOf方法获得子节点的顺序,绝对顺序(AbsoluteIndex)则是指从Treeview第一个项开始的顺序值,   
  第一个是0,如此推下去。Item属性则根据Index的值返回当前节点的第Index个子节点。Count则表明属于   
  此项的所有子节点的数量。用MoveTo方法将Item由一个位置移到另一个位置。   
    
  Expanded属性表明是否所有的子项都全部展开(包括子项的子项),为True表示全部展开。   
  IsVisible属性表明一个项是否在树中能被看到,如果树全部展开那么这个Item是肯定可以   
  被看到。   
    
  HasChildren属性表明一个项是否有子项。   GetFirstChild,   GetLastChild,   GetPrevChild,  
  and   GetNextChild分别返回当前项子项的第一个、最后一个和前一个、后一个项。   
    
  GetNextSibling   and   GetPrevSibling则返回在同一Level下的下一个和上一个项。   
  GetNextVisible   and   GetPrevVisible则返回能看得到的下一个和上一个项。如果一个节点   
  有Parent,则HasAsParent方法返回True.   Parent为当前项的父项。Focused属性确定焦点是  
  否落在此节点上,被Focus时会一个标准的方框围住。很显然,只有一个节点会被聚焦。     
    
  Selected属性表明一个节点是否被选中,同样只有一个节点会被选中。   
    
  DropTarget属性表明节点在拖动操作中是源还是目标。   
    
  .1.添加、删除、修改节点:   
  静态的方法可以在设计时通过Items的编辑器设置各节点的内容。   
  在添加和删除前必须保证有节点被选中(Treeview.Selected   =   nil)   
  用AddFirst,   AddFirstChild,   AddChild等先添加根节点,如Treeview.Items.AddFirst(   nil,   \'Root\');   
  然后以此为基础,添加此项的子节点。   
    
  删除节点   
  Treeview.Selected.Delete   
    
  编辑节点内容   
  Treeview.Selected.EditText   
    
  注意:由于根节点没有父节点   (TTreeNode.Parent=   nil)   
  此外,在大批量添加数据到Treeview中时最好使用   
    TreeView.Items.BeginUpdate;   
    添加节点   
    TreeView.Items.EndUpdate   
  这样能加快显示速度。   
    
  2.在节点上添加图象   
  Treeview中几个与图象相关的属性:   
    SelectedIndex:当节点被选中时在TimageList   中选什么样的图象   
    OverlayIndex:选那副图象作为掩图(一幅图象透明地显示在另一幅图象的前面),   
  比如一个节点不可用时加一副X图象在其前面。   
    ImageIndex:在常态时选用的图的序号   
    StateIndex:   在StateImages这个ImageList中对应的序号,-1时不显示图象   
    比较典型的,象在文件管理器中的所显示的一样,Treeview控件在节点之前也可以   
  显示图象。在Form中放置一ImageList控件,加入几个图片,分别被Index为0,1,…   
  在Treeview的Image属性项填入你所加入的ImageList的控件名称。TreeNode的ImageIndex   
  表示节点未被选中时(Selected=nil)的图片序号,SelectedIndex表示节点被选中时图片序号。   
    
  3.关于Level   
  Level的概念可以用下图表示:   
  Level0     Level1   Level2   
    
  4.排序   
  SortType决定什么时候进行排序;   
  TreeView.AlphaSort对节点进行排序,如果不能满足要求,你可以定义自己的CustomSort方法。   
    
  5.Drag&Drop操作,与标准的拖放操作使用方法一样   
    
  ----------------------------------------------------------------------------   
  TreeView的使用方法     
    
    
  基本信息:   
  TreeView   是一个显示树型结构的控件,每一个节点都是一个新类,   
  使用具有代表性   
  每个节点都有四个值:   
  TEXT:显示文字   Image   Index:显示图形序号   
  Selected   Index:   
  State   Index:   
    
  (1)建立目录项(本例中使用的TREEVIEW名称为:TvwTips)   
    
  增加根目录下的节点:(节点)   
 
  var  
  CatNode   :   TTreeNode;   //先建立一个TREEVIEW使用的子对象  
  begin  
  TvwTips.SetFocus;   //将焦点置到这个TREEVIEW控件上  
  {   在根标题下建立一个新的子标题   }  
  CatNode   :=   TvwTips.Items.AddChild(    
  TvwTips.Items.GetFirstNode,\'New   Category\'   );  
  CatNode.ImageIndex   :=   1;  
  CatNode.SelectedIndex   :=   2;  
  CatNode.EditText;   {   允许用户改变这个标题   }  
  end; 
 
    
  增加下一级目录(内容):   
 


  var  
  ParentNode,   TipNode   :   TTreeNode;   //先建立TREEVIEW使用  
  的子对象  
  VersionNum   :   Integer;  
  begin  
  TvwTips.SetFocus;   //将焦点置到这个TREEVIEW控件上  
  VersionNum   :=   TMenuItem(   Sender   ).Tag;   {   Ver   num   of   new   tip   }  
  ParentNode   :=   TvwTips.Selected;   {   取出当前的选中节点   }  
  if   ParentNode.Level   =   nlTip   then{   Parent   cannot   be   a   tip   node   }  
  ParentNode   :=   TvwTips.Selected.Parent;  
   
  TipNode   :=   TvwTips.Items.AddChildObject(   ParentNode,\'New    
  Subject\',Pointer(   VersionNum   )   );  
  TipNode.ImageIndex   :=   3;   {   Normal   tip   bitmap   }  
  TipNode.SelectedIndex   :=   4;   {   Highlighted   tip   bitmap   }  
  TipNode.MakeVisible;   {   Move   new   tip   node   into   view   }  
  TipNode.EditText;   {   Immediately   allow   user   to   edit   subject   }  
  EnableTreeViewFunctions(   TipNode.Level   );  
  RtfTip.Clear;  
  RtfTip.Modified   :=   False;  
  end; 
   
    
  (2)说明   
  TvwTips.Items.GetFirstNode   返回TREEVIEW的第一个节点,函数类型为   
  :TTreeNode     
  TvwTips.Items.Count   返回当前TreeView的全部节点数,整数   
  TvwTips.Selected.Level   返回当前选中节点的在目录树中的级别,   
  根目录为0   
  TvwTips.Selected.Parent   返回当前选中节点上级节点,函数类型为   
  :TTreeNode
特别提示: Expand(False)不展开其子孙结点,   Expand(True)全部展开


推荐阅读
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • WPF之Binding初探
      初学wpf,经常被Binding搞晕,以下记录写Binding的基础。首先,盗用张图。这图形象的说明了Binding的机理。对于Binding,意思是数据绑定,基本用法是:1、 ... [详细]
  • ExcelApp#启动excel程序ExcelAppCreateOleObject(“Excel.Application”);#加载文件但不显示文件内容(true表 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 本篇文章笔者在上海吃饭的时候突然想到的这段时间就有想写几篇关于返回系统的笔记,所以回家到之后就奋笔疾书的写出来发布了事先在网上找了很多方法,发现有 ... [详细]
author-avatar
倒骑毛驴笑看人生gnWC_659
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有