如
Table1的结构:
字段名 类型 长度
ID integer //当前记录的ID号
Name String 10 //当前记录的名称,显示在Treeview中
PID integer //父节点ID号Table1的内容:
ID Name PID
1 a 0
2 b 1
3 c 1
4 d 0
对应TreeView1应为:|--a
| |--b
| |--c
|
|--d
我已经写了一个正确的从表到树的过程:
procedure TForm1.table2tree(var nod: ttreenode; var id: integer);
var
New_id:integer;
New_name:string;
bookmk:TBookMark;
begin
table1.filtered:=false;
table1.filter:='PID='+inttostr(Id);
table1.filtered:=true;
while not table1.Eof do
begin
New_name:=table1.FieldByName('name').AsString ;
Nod:=Tree1.Items.AddChild(Nod,New_name);
New_id:=table1.FieldByName('ID').AsInteger;
bookmk:=table1.GetBook;
Tb2Tr(Nod,New_id);
Nod:=Nod.Parent;
table1.filter:='PID='+inttostr(Id);
if Table1.BookValid(bookmk) then
begin
table1.GotoBook(bookmk);
table1.FreeBook(bookmk);
end;
table1.next;
end;
end;调用:
procedure TForm1.Button1Click(Sender: TObject);
var
snode: TTreenode;
sid: integer;
begin
snode:=nil;
sid:=0;
tb2tr(snode,sid);
table1.Filtered:=false;
end;
--------------------------
现在想请大家写一段处理代码:删除某一树节点,同时删除数据表中对应的记录内容。
Table1的结构:
字段名 类型 长度
ID integer //当前记录的ID号
Name String 10 //当前记录的名称,显示在Treeview中
PID integer //父节点ID号Table1的内容:
ID Name PID
1 a 0
2 b 1
3 c 1
4 d 0
对应TreeView1应为:|--a
| |--b
| |--c
|
|--d
我已经写了一个正确的从表到树的过程:
procedure TForm1.table2tree(var nod: ttreenode; var id: integer);
var
New_id:integer;
New_name:string;
bookmk:TBookMark;
begin
table1.filtered:=false;
table1.filter:='PID='+inttostr(Id);
table1.filtered:=true;
while not table1.Eof do
begin
New_name:=table1.FieldByName('name').AsString ;
Nod:=Tree1.Items.AddChild(Nod,New_name);
New_id:=table1.FieldByName('ID').AsInteger;
bookmk:=table1.GetBook;
Tb2Tr(Nod,New_id);
Nod:=Nod.Parent;
table1.filter:='PID='+inttostr(Id);
if Table1.BookValid(bookmk) then
begin
table1.GotoBook(bookmk);
table1.FreeBook(bookmk);
end;
table1.next;
end;
end;调用:
procedure TForm1.Button1Click(Sender: TObject);
var
snode: TTreenode;
sid: integer;
begin
snode:=nil;
sid:=0;
tb2tr(snode,sid);
table1.Filtered:=false;
end;
--------------------------
现在想请大家写一段处理代码:删除某一树节点,同时删除数据表中对应的记录内容。
解决方案 »
- 求一个D7上能用的垂直进度条控件的下载地址
- 第五个百分贴....明天. 继续 ...
- 大家帮我看看
- 怎么取得系统中CPU和内存的占用情况?
- 急。。关于对表的值进行修改 而发生的错误
- Idtcpclient 连接游戏服务器问题
- 100分找delphi6的控件,让程序界面更好看,功能更强大。
- 很菜的问题,帮我看一下!
- 在使用IntToHex时出现错误,提示是“This is no overload version of 'IntToHex' that can be called with these argumets',请问是什么意
- 兄弟们啊,怎样改变标题栏的颜色(比如说由红色渐变到白色)?
- 如何统计一个表的记录总数??在线等待!!!
- 求助:求一个函数我过程,实现根据传入string实现createForm,结果为Tform?
删除节点时删除对应表中的记录时可能方便些
begin
Selected.Delete;
//--> 执行'delete * from table where ID = Selected.data中的值
end
else
//----> 提示?
ID和Name间一般是用空格这类的符号搁开,
删除DBGRID的记录时:只有记下ID去遍李树了。
选种接点时:记下ID去找DBGIRD了。
你是可以记录这个节点与Table对应的记录的,(否则你是怎么生成树的呢?)
从表中删除这条数据,再重新生成树就可以了.注意:
若有子点, 要先把所有子点删除.
为了方便,你可以写一个Treeload函数进行树的重载.