文档章节

学习 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.6K
14
PostgreSQL数据库日常学习笔记16-触发器函数

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

白豆腐徐长卿
2017/11/02
0
0
写在SQL注入后

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

技术小甜
2017/11/16
0
0
PL/SQL-4 动态SQL

--------------------------------------------------------------------------------------- *************************************************************************************** 第......

晨曦之光
2012/04/19
79
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

没有更多内容

加载失败,请刷新页面

加载更多

线下工坊|Blockchain Coding Day:零基础教你开发DAPP(北京)

我们的目标是通过编程学习让你更了解区块链技术。这将对区块链开发初学者一次很好的体验。这里需要强调一下,编程零基础也能学会。 我们将以小组的形式,由教练带领学员完成DAPP开发。每位学...

HiBlock
33分钟前
2
0
查看内存情况

jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。...

Canaan_
34分钟前
2
0
基于对象特征的推荐

(本实验选用数据为真实电商脱敏数据,仅用于学习,请勿商用) 在上一期基于协同过滤的的推荐场景中,我们介绍了如何通过PAI快速搭建一个基于协同过滤方案的推荐系统,这一节会介绍一些如何基...

阿里云官方博客
42分钟前
2
0
Ugly Number(leetcode263)

Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example 1: Input: 6Output: true......

woshixin
今天
2
0
深度模型从研者 眼里的 似然估计 & Hessain 海森矩阵 & Fisher Information (费雪信息)

深度模型的训练的基本依据是最小化模型拟合数据的误差。旨在不仅知其然(如何构建和训练一个深度模型),还应知其所以然(为什么这样训练,可以做哪些优化)。我们就会发现,有很多研究者,在...

刘小米_思聪
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部