我的程序中是重数据库中将数据表的名称调出,显示出来,如果想看该表中数据的详细记录,再将记录中name一栏展开到treeview的相应表下,在展开之前的初始化中,想做到先将该节点下的子节点内容删除,再展开。我现在是判断treeview.selected.haschildren 之后在展开。不只有没有别的好的方法,求教。
-----表1
|
-----表2
|
-----表3-------name1
|
---name2
|
---name3
-----表1
|
-----表2
|
-----表3-------name1
|
---name2
|
---name3
解决方案 »
- LVM_SETBKCOLOR、LVM_SETTEXTBKCOLOR消息是哪个单位声明明的?
- 关于全局临时表修改记录的问题
- 请问,二进制文件怎么打开请大家帮忙
- 请问delphi或C++Builder中的按钮如何使用xp风格的32bit(含8bit alpha)图标?
- 各位,帮忙看一段代码?谢谢!
- 求助~这个delphi第三方控件叫什么?
- 主從報表如何設計
- 急!!!!Delphi中利用COM通讯的问题(只有24分的可用分,请见谅,下次可用分多了一点多加点!)
- 我的csdn结拜兄弟姐妹快来帮忙?(关于webbrowser控件)
- 请推荐一本关于DELPHI网络编程的书!
- help!急!在线等待!
- 急求一个控件,能够使页面自动缩放。(在线等待)
create table pjtype
(
class int, //树的层次
hipjcod int, //上一个节点id
pjtype char(100), //该节点在treeview中显示的名称
cnt int, //该节点上所拥有对象数量
typecod int primary key//该节点id
)
create unique index pjtype_idx on pjtype(class,hipjcod,pjtype){*********************
删除配件类型(数据库中记录)
*********************}
procedure del_pjtype(in_int:integer);
//删除当前项下所有类型
var
query:tquery;
procedure del_pjtypechilditem(parent_int:integer);
//递归调用删除子项
var
query:tquery;
begin
query:=tquery.Create(application);
query.SQL.Clear;
try
with query do
begin
databaseName:='auto';
sql.add('select pjtype,typecod,cnt from pjtype');
sql.add('where hipjtype=:H_hipjtype');
unprepare;
prepare;
ParamByName('H_hipjtype').asinteger:=parent_int;
open;
while not eof do
begin
if (fieldbyname('cnt').asinteger<>0) then
raise Exception.Create(fields[0].asstring+'项下有汽配零件,删除失败!');
del_pjtypechilditem(fields[1].asinteger);
next;
end;
sql.clear;
sql.add('delete from pjtype where typecod=:H_typecod ');
unprepare;
prepare;
ParamByName('H_typecod').asinteger:=parent_int;
ExecSQL;
end;
finally
query.free;
end;
end;
begin
query:=tquery.Create(application);
query.SQL.Clear;
try
with query do
begin
databaseName:='auto';
sql.add('select pjtype,cnt from pjtype ');
sql.add('where typecod=:H_typecod');
unprepare;
prepare;
ParamByName('H_typecod').asinteger:=in_int;
open;
if (fields[1].AsInteger>0) then
raise Exception.Create(fields[0].asstring+'项下有汽配零件,删除失败!');
del_pjtypechilditem(in_int);
sql.clear;
sql.add('delete from pjtype where typecod=:H_typecod ');
unprepare;
prepare;
ParamByName('H_typecod').asinteger:=in_int;
ExecSQL;
end;
finally
query.free;
end;
end;以下代码调用上面的过程
try
beginwork;
del_pjtype(ppjdesc(tv_pjtype.selected.data)^.typecod);
tv_pjtype.selected.Delete;
if tv_pjtype.Items.Count=0 then
begin
b_newsub.Enabled:=false;
b_del.Enabled:=false;
end;
Commit;
except
rollback;
raise;
end
var
t:ttreenode;
begin
t:=treeview1.Selected;
treeview1.items.Delete(t);
end;end.
不管怎么样只要选中的都删