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)全部展开

delphi 10.2 ---treeview 基本用法的更多相关文章

  1. Delphi 10.1 Berlin UTF8String Test

    Delphi 10.1 Berlin UTF8String Test procedure TForm1.Button1Click(Sender: TObject); var s: UTF8String ...

  2. Delphi 10.1 Berlin 官方未列之修正

    Delphi 10.1 Berlin 官方修正列表: Bug fix list for RAD Studio 10.1 Berlin Delphi 10.1 Berlin 官方未列之修正: 修正 iO ...

  3. Delphi 10 Seattle Update 1 修复 iOS HTTP 协定需求

    在 iOS 9 Apple 加入了 HTTP 协议,还好有 TMS 提供快速修复工具,得以能顺利上架到 App Store. 现在 Delphi 10 Seattle Update 1 提供了这个设定 ...

  4. delphi 10 seattle 安卓服务开发(三)

    delphi 10 里面的安卓服务有四种,上面的一篇文章里面的图有介绍. 今天做一个remote service 的例子.(里面一部分代码是抄别人的,如果不太清楚,自行恶补) remote servi ...

  5. delphi 10 seattle 安卓服务开发(二)

    关于delphi 10 移动服务开发的几张图

  6. delphi 10 seattle 中 解决IOS 9 限制使用HTTP 服务问题

    IOS 9 于17号早上正式开始推送,早上起来立马安装,这次升级包只有1G, 安装空间也大大降低(想起IOS 8 升级时,几乎把手机里面的东西删光了,满眼都是泪). 虽然安装后,网上几乎是铺天盖地的吐 ...

  7. delphi 10.1 berlin最新的开发框架:咏南中间件+咏南开发框架,购买后提供全部的源码

    咏南中间件+咏南开发框架支持最新的delphi 10.1(berlin),老用户提供免费升级. 购买提供:中间件源码 附带福利(赠送): CS开发框架源码BS开发框架源码移动APP源码中间件集群源码二 ...

  8. Delphi 10.1 Berlin Starter Edition

    Delphi 10.1 Berlin Starter Edition Embarcadero® Delphi 10.1 Berlin Starter is a great way to get sta ...

  9. Where is the ActiveX Project Type for Delphi 10.1 Berlin

    n 10.1 Berlin the ActiveX project types are missing from the New Items Window under Delphi. They are ...

随机推荐

  1. UITextFeild银行卡/身份证/电话号任意分割.

    日常开发中可能有个需求, 1.银行卡每4位添加一个空格  2.电话号:3 4 4 比如(138 8888 8888)3.身份证(411111 20171213 1314) 看了网上许多方法都是输入的时 ...

  2. springboot与消息(rabbtiMQ)

    1.大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力 1.1异步通信 1.2解耦 1.3削峰 2.消息服务中两个重要概念:       消息代理(message broker)和目的地 ...

  3. python多线程编程5: 条件变量同步-乾颐堂

    互斥锁是最简单的线程同步机制,Python提供的Condition对象提供了对复杂线程同步问题的支持.Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还 ...

  4. app开发中如何利用sessionId来实现服务端与客户端保持回话

    app开发中如何利用sessionId来实现服务端与客户端保持回话 这个问题太过于常见,也过于简单,以至于大部分开发者根本没有关注过这个问题,我根据和我沟通的开发者中,总结出来常用的方法有以下几种: ...

  5. VS2010+SVN

    小乌龟版本用1.6,用1.8时老报错SVN是2.06, SVN Server是2.1.9

  6. Oracle学习笔记(六)

    八.函数 1.函数的作用 (1)方便数据的统计 (2)处理查询结果,让数据显示更清楚 2.函数分类(提供很多内置函数,也可自定义函数) (1)数值函数 平均值,四舍五入 a.四舍五入 表达式 roun ...

  7. Mysal表类型的区别-MyISAM,InnoDB

    1/ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源.I ...

  8. Spring配置bean的方法(工厂方法和Factorybean)

    通过工厂方法配置bean 通过调用静态工厂方法创建bean 通过静态工厂方法创建bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不关心创建对象的细节. 要声 ...

  9. swift 动画

    // //  ViewController.swift //  Anamation // //  Created by su on 15/12/9. //  Copyright © 2015年 tia ...

  10. Python作图笔记

    感谢莫烦大神,附带他的个人网站链接:https://morvanzhou.github.io/ 再带上官方的文档,多看文档啊!不然参数忘了就没地方查了:https://matplotlib.org/a ...