文档章节

学习 TTreeView [7] - Insert、Delete

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 368
阅读 7
收藏 0
本例效果图:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Grids, ExtCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Nodes: TTreeNodes;
  node: TTreeNode;
begin
  TreeView1.Align := alLeft;
  Nodes := TreeView1.Items;
  node := Nodes.Add(nil, '一连长');
  node := Nodes.AddChild(node, '一排长');
  node := Nodes.AddChild(node, '一班长');
  node := Nodes.AddChild(node, '战士1');
  Nodes.Add(node, '战士2');
  Nodes.Add(node, '战士3');
  Nodes.Add(node, '战士4');
  node := node.Parent;
  Nodes.Add(node, '二班长');
  Nodes.Add(node, '三班长');
  node := node.Parent;
  Nodes.Add(node, '二排长');
  Nodes.Add(node, '三排长');
  node := node.Parent;
  Nodes.Add(node, '二连长');
  Nodes.Add(node, '三连长');
end;

{初始化}
procedure TForm1.Button1Click(Sender: TObject);
begin
  TreeView1.Items.Clear;
  FormCreate(nil);
  TButton(Sender).Caption := '初始化';
end;

{删除}
procedure TForm1.Button2Click(Sender: TObject);
var
  node: TTreeNode;
begin
  if not Boolean(TreeView1.Items) then Exit; {如果 TreeView1 无内容}
  if TreeView1.SelectionCount = 0 then Exit; {如果无选择}
  node := TreeView1.Selected;
  node.Delete;

  TButton(Sender).Caption := '删除';
end;

{删除它的所有下级}
procedure TForm1.Button3Click(Sender: TObject);
var
  node: TTreeNode;
begin
  if not Boolean(TreeView1.Items) then Exit;
  if TreeView1.SelectionCount = 0 then Exit;
  node := TreeView1.Selected;
  if node.HasChildren then node.DeleteChildren
  else ShowMessage(node.Text + ' 没有下级');

  TButton(Sender).Caption := '删除下级';
end;

{用 TTreeNodes 删除}
procedure TForm1.Button4Click(Sender: TObject);
var
  node: TTreeNode;
begin
  if not Boolean(TreeView1.Items) then Exit;
  if TreeView1.SelectionCount = 0 then Exit;
  node := TreeView1.Selected;
  TreeView1.Items.Delete(node);

  TButton(Sender).Caption := '用 TTreeNodes 删除';
end;

{插入, 只能通过 TTreeNodes}
procedure TForm1.Button5Click(Sender: TObject);
var
  node: TTreeNode;
begin
  if not Boolean(TreeView1.Items) then Exit;
  if TreeView1.SelectionCount = 0 then Exit;
  node := TreeView1.Selected;
  TreeView1.Items.Insert(node, '新成员');

  TButton(Sender).Caption := '插入';
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/03/12/1102663.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
govcl v1.0.4 释出,GO 语言 UI 组件库

1、增加了TListView、TTreeView、TPageControl几个事件; 2、增加了TListView、TTreeView排序过程; 3、修复了New控件时使用CheckPtr增加安全检测; 4、增加了TListView、TTreeView排序,图像...

不在乎y
2017/12/21
2.4K
14
PostgreSQL数据库日常学习笔记16-触发器函数

PostgreSQL触发器是一组动作或数据库回调函数,用于表或视图等执行指定数据库事件,即INSERT,UPDATE,DELETE或TRUNCAT等语句时自动运行。触发器用于验证输入数据,执行业务规则,保持审计跟...

白豆腐徐长卿
2017/11/02
0
0
依据数据集 进行 树 的构造(treeview & dataset) 方法一

type PDepData=^DepData; DepData = record ID: Integer; DepID: string; DepName: string; end; procedure FreeTV(tv: TTreeview); var i: Integer; begin for i := 0 to tv.Items.Count - ......

vga
2015/11/14
0
0
PL/SQL-4 动态SQL

--------------------------------------------------------------------------------------- * 第四部分:动态SQL ---------------------------------------------------------------------......

晨曦之光
2012/04/19
73
0
写在SQL注入后

1. 查询语句后只能直接调用函数,不能直接调用存储过程,例如:select function() from dual可以,select procedure() from dual不行; 2. 查询语句中无法执行DML或DDL操作,也就是说如果被调...

技术小甜
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
24分钟前
0
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
47分钟前
3
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
54分钟前
1
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
22
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部