树操作的简便过程
来源:互联网 发布:网吧服务器攻击软件 编辑:程序博客网 时间:2024/04/29 23:01
为了使繁杂的树操作变得简单,特此写了以下这个单元。为了节省时间,这个单元没有面向对象,而仅仅是通过过程来实现的,它可以被使用在任何版本的Delphi,从而完成简便的树操作
unit TreeCtrls;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ComCtrls;
function NodeMoveUp(TreeNode: TTreeNode): boolean;
function NodeMoveDown(TreeNode: TTreeNode): boolean;
function NodeDelete(TreeNode:TTreeNode;Hint,Title:string;Form:TForm):boolean;
function NodeAddLast(Tree:TTreeview;NodeName:string):boolean;
function NodeAddFirst(Tree:TTreeview;NodeName:string):boolean;
function NodeAddChildLast(Tree:TTreeview;NodeName:string):boolean;
function NodeAddChildFirst(Tree:TTreeview;NodeName:string):boolean;
function GetAllChild(TreeNode:TTreeNode;Item:TStrings):boolean;
implementation
//结点向上移
function NodeMoveUp(TreeNode: TTreeNode): boolean;
begin
if TreeNode=nil then
begin
result:=false;
exit;
end;
//如果已是最上面的结点
if TreeNode.getPrevSibling = nil then
begin
result := false;
exit;
end;
//如果上一个结点是父结点
if treenode.GetPrev=treenode.Parent then
begin
result:=false;
exit;
end;
//正常情况
treenode.MoveTo(treenode.getPrevSibling,nainsert);
result:=true;
end;
//结点向下移
function NodeMoveDown(TreeNode: TTreeNode): boolean;
var
TempNode:TTreeNode;
begin
if TreeNode=nil then
begin
result:=false;
exit;
end;
//如果已是最后一个结点
if TreeNode.getNextSibling = nil then
begin
result := false;
exit;
end;
//如果是倒数第二个结点
if treenode.getNextSibling.getNextSibling=nil then
begin
TempNode:=treenode.getNextSibling;
NodeMoveUp(TempNode);
result:=true;
exit;
end;
//正常情况
Treenode.MoveTo(treenode.getNextSibling.getNextSibling,nainsert);
result:=true;
end;
//删除结点
function NodeDelete(TreeNode:TTreeNode;Hint,Title:string;Form:TForm):boolean;
var
Res:integer;
begin
if TreeNode=nil then
begin
result:=false;
exit;
end;
//如果包含子结点
if treenode.HasChildren=true then
begin
messagebox(form.Handle,'该目录包含有子目录,不能删除','提示',MB_OK);
result:=false;
exit;
end;
RES:=messagebox(form.Handle,pchar(hint),pchar(title),MB_YESNO);
if Res=6 then
begin
treenode.Delete;
result:=true;
end
else
begin
result:=false;
end;
end;
//添加(父)同级结点到末尾
function NodeAddLast(Tree:TTreeview;NodeName:string):boolean;
begin
try
tree.Items.Add(tree.Selected,NodeName);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//添加(父)同级结点到首位
function NodeAddFirst(Tree:TTreeview;NodeName:string):boolean;
begin
try
tree.Items.AddFirst(tree.Selected,NodeName);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//添加(子)同级结点到末尾
function NodeAddChildLast(Tree:TTreeview;NodeName:string):boolean;
begin
try
tree.Items.AddChild(tree.Selected,NodeName);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//添加(子)同级结点到首位
function NodeAddChildFirst(Tree:TTreeview;NodeName:string):boolean;
begin
try
tree.Items.AddChildFirst(tree.Selected,NodeName);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//遍历所有子结点
function GetAllChild(TreeNode:TTreeNode;Item:TStrings):boolean;
var
ND:TTreeNode;
ChildNum:integer;
i:integer;
begin
if TreeNode=nil then
begin
result:=false;
exit;
end;
if TreeNode.HasChildren=true then
begin
ChildNum:=treenode.Count;
ND:=treenode.getFirstChild;
for i:=1 to ChildNum do
begin
item.Add(nd.Text);
nd:=nd.getNextSibling;
end;
result:=true;
end
else
result:=false;
end;
end.
- 树操作的简便过程
- 树操作的简便过程
- Eclipse的一些简便操作
- select级联操作的简便方法
- 2. 极其简便的Mysql操作
- 获取所有SQL Server 2005存储过程的简便方法
- ubuntu 简便操作
- 快速、简便的使用AJAX技术操作的三部曲
- 快速、简便的使用ajax技术操作的三部曲
- 快速、简便的使用AJAX技术操作的三部曲
- 介绍快速简便的使用AJAX技术的操作
- MFC实现CListCtrl子项可编辑的简便操作
- MFC实现CListCtrl子项可编辑的简便操作
- 用户考虑的是什么?简单,简便,易操作
- 在Win7下去掉快捷方式箭头的简便手动操作
- 操作简便的JPG图片转为PDF转换器
- 请教c#多线程操作更新控件的简便方法
- oracal登录和导入导出的简便操作
- 忆龙2009:Brew FAQ-常见问答(2)
- 谈话节目点播
- office 2010 安装,提示无法打开注册表项 error 1402
- 忆龙2009:Brew FAQ-常见问答(1)
- CUDA起点
- 树操作的简便过程
- 找回误删并清除了回收站的文档
- 修改注册表 去除Win7系统快捷方式箭头
- #Pragma 指令
- 小数据量的Key-Value查找类的实现
- delphi的万能数据库操作
- 忆龙2009:Brew 后台应用开发
- 图表 控件 MSChart
- 忆龙2009:BREW平台应用开发入门