TreeView控件如何添加删除节点?在线等给分。过期散分

okzrz 2005-12-22 09:46:55
如何添加删除 根/子 节点? 最好能加简短说明 新手先谢过了
...全文
161 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kittydolphin 2005-12-29
  • 打赏
  • 举报
回复
type
TNodeData = record
Index: integer;
Caption: string;
end;
PNodeData = ^TNodeData; //写在这里对么?总是提示 unexpected token:PNodeData
zsyp 2005-12-23
  • 打赏
  • 举报
回复
nil 是为空的意思
deansroom 2005-12-23
  • 打赏
  • 举报
回复
这是一个小子写的一个创建节点的类 是利用递归算法用表结构创建节点的 里面最后一个过程是创建节点的方法 你自己好好体会一下吧
deansroom 2005-12-23
  • 打赏
  • 举报
回复
unit TreeFillThrd;

interface

uses
Classes, ComCtrls, ADODB, SysUtils;

type
TNodeData = record
Index: integer;
Caption: string;
end;
PNodeData = ^TNodeData;
TTreeFill = class(TThread)
TV: TTreeView;
TableName: string;
FieldIndex: string;
FieldPID: string;
FieldCaption: string;
RootText: string;
Conn: TADOConnection;
Ptr: PNodeData;
constructor Create(ATreeView: TTreeView; AConn: TADOConnection;
ATable: string; ARootText: string = '我的目录';
AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
AFieldCaption: string = 'Caption');
private
procedure AddTree(Node: TTreeNode; PN: PNodeData);
protected
procedure Execute; override;
end;

implementation
//------------------------------------------------------------------------------
constructor TTreeFill.Create(ATreeView: TTreeView; AConn: TADOConnection;
ATable: string; ARootText: string = '我的目录';
AFieldIndex: string = 'ID'; AFieldPID: string = 'PID';
AFieldCaption: string = 'Caption');
begin
FieldIndex := AFieldIndex;
FieldPID := AFieldPID;
FieldCaption := AFieldCaption;
TV := ATreeView;
TableName := ATable;
RootText := ARootText;
Conn := AConn;
New(Ptr);
inherited Create(False);
end;
//------------------------------------------------------------------------------
procedure TTreeFill.Execute;
var
Node: TTreeNode;
begin
FreeOnTerminate := True;
TV.Items.Clear;
Ptr^.Index := 0;
Ptr^.Caption := RootText;
Node := TV.Items.AddObject(nil, RootText, Ptr);
Node.ImageIndex := 0;
Node.SelectedIndex := 0;
AddTree(Node, Ptr);
TV.FullExpand;
end;
//------------------------------------------------------------------------------
procedure TTreeFill.AddTree(Node: TTreeNode; PN: PNodeData);
var Query: TADOQuery;
nNode: TTreeNode;
PNode: PNodeData;
begin
try
Query := TADOQuery.Create(nil);
Query.Connection := Conn;
Query.SQL.Text := 'Select * from ' + TableName + ' where ' + FieldPID + ' =' + IntToStr(PN^.Index);
if Query.Active then
Query.Close;
Query.Open;
while Query.Eof = False do
begin
New(PNode);
PNode^.Caption := Query.FieldByName(FieldCaption).AsString;
PNode^.Index := Query.FieldByName(FieldIndex).AsInteger;
nNode := TV.Items.AddChildObject(Node, PNode^.Caption, PNode);
nNode.ImageIndex := 1;
nNode.SelectedIndex := 2;
AddTree(nNode, PNode);
Query.Next;
end;
finally
Query.Free;
end;
end;
//------------------------------------------------------------------------------
end.

okzrz 2005-12-23
  • 打赏
  • 举报
回复
解决了 用AddChild 就可以了谢谢大家 :)
okzrz 2005-12-23
  • 打赏
  • 举报
回复
仓库甲
仓库甲A
仓库甲B
仓库甲C


var node:ttreenode;
begin
node:=treeview1.Selected;
treeview1.Items.Add(node,'子节点名字');
end;

如果选中 仓库甲 然后添加,添加到与 仓库甲 同级别的Item 我想做的选中 仓库甲 添加 到与 仓库甲A 仓库甲B ... 一个级别的

还有nil什么意思 多次看到
okzrz 2005-12-23
  • 打赏
  • 举报
回复
太长了没看明白 能不能给个简单的

实现下面的功能就可以了
okzrz 2005-12-23
  • 打赏
  • 举报
回复
谢谢:) 麻烦你了 我英文实在太差了-_-!
coreblood 2005-12-23
  • 打赏
  • 举报
回复
:)
英语差,不是借口,多看看就明白了
deansroom 2005-12-22
  • 打赏
  • 举报
回复
我经常用的是add addchild addobject addchildobjyect 这几个添加的方法
具体的使用你可以参考帮助 也可以搜索一些资料 因为我在家 明天我去单位可以给你一些比较好的例子你看一下就懂了
deansroom 2005-12-22
  • 打赏
  • 举报
回复
nil的地方原本应该放置根结点的
但是由于目的是添加根结点 也就是说根结点的根节点应该设置为nil 这样的话你创建的节点就是根节点了
deansroom 2005-12-22
  • 打赏
  • 举报
回复
其实不用的 你就看treeview的方法就行了
输入treeview.items.add相关的都是添加节点的
里面有多种不同的方法
你自己选择用 再有不明白的可以有针对地搜索一下就成了
okzrz 2005-12-22
  • 打赏
  • 举报
回复
仓库甲
仓库甲A
仓库甲B
仓库甲C


var node:ttreenode;
begin
node:=treeview1.Selected;
treeview1.Items.Add(node,'子节点名字');
end;

如果选中 仓库甲 然后添加,添加到与 仓库甲 同级别的Item 我想做的选中 仓库甲 添加 到与 仓库甲A 仓库甲B ... 一个级别的

还有nil什么意思 多次看到
okzrz 2005-12-22
  • 打赏
  • 举报
回复
哦 我没定义变量 -_-!
okzrz 2005-12-22
  • 打赏
  • 举报
回复
谢谢 能否再多说点常用的基本属性 方法啊 书上都不说 晕死了:(

treeview1.Items.Add(node,Edit1.Text);

编译出错:
[Error] Unit4.pas(44): Undeclared identifier: 'node'
[Fatal Error] Project1.dpr(9): Could not compile used unit 'Unit4.pas'
deansroom 2005-12-22
  • 打赏
  • 举报
回复
var node:ttreenode;
begin
node:=treeview1.Items.Add(nil,'根节点名字');
treeview1.Items.Add(node,'子节点名字');
end;
treeview1.Selected.Delete;//删除被选择节点

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧