//补充
procedure TForm1.Delete(send:Object);
begin
NodeDelete(TreeView.Selected);
treeView.Selected.delete;
end;
procedure NodeDelete(Node: TTreeNode);
var
p_Node: TTreeNode;
SQL: String;
ID: string;
begin
while Node.HasChildren do
begin
p_Node := Node.GetFirstChild;
if P_Node.HasChildRen then
NodeDelete(p_Node);//递归
delete(P_Node);
end;
ID:= TYourType(Node.Data).ID;
SQL:= 'Delete from table where ID = '''+ID+'''';
EXESQL(ADOQuery,SQL,True);
end;
procedure TForm1.Delete(send:Object);
begin
NodeDelete(TreeView.Selected);
end;
procedure NodeDelete(Node: TTreeNode);
var
p_Node: TTreeNode;
SQL: String;
ID: string;
begin
while Node.HasChildren do
begin
p_Node := Node.GetFirstChild;
if P_Node.HasChildRen then
NodeDelete(p_Node);//递归
delete(P_Node);
end;
ID:= TYourType(Node.Data).ID;
SQL:= 'Delete from table where ID = '''+ID+'''';
EXESQL(ADOQuery,SQL,True);
end;
procedure TForm1.Delete(node: TTreeNode);
var
T: TTreeNode;
SQL: String;
ID: string;
begin
ID:= TYourType(Node.Data).ID;
SQL:= 'Delete from table where id ='+ID+' or PARENT_ID = '+ID;
EXESQL(ADOQuery,SQL,True);
if node.HasChildren then
begin
t:= node.getFirstChild;
delete(t);
end;
TreeView1.Items.Delete(node);
end;
procedure deleteA(Node:TTreeNode);
begin
//删除树节点
deleteNode(Node);
//删除数据库纪录
delid:='('+Copy(delid,1,Length(delid)-1)+')';
With Tquery.Create(self) do
begin
DataBaseName:='XXXXXXXXXXXXXX'
Sql.text:='delete from xxc where id in '+delid;
ExecSql;
free;
end;
end;
procedure deleteNode(node: TTreeNode);
var
T: TTreeNode;
p:^Integer;
begin
while node.HasChildren do
begin
t:= node.getFirstChild;
deleteNode(t);
end;
p:=Node.Data;
delid:=delid+p^+','
Dispose(p);
TreeView1.Items.Delete(node);
end;
可以不用递归(当然用也是可以的):
var
ParentNode,CurrentNode: TTreeNode;
L,C: Integer;
begin
// ParentNode := ;
if not ParentNode.HasChildren then Exit;
C := 0;
CurrentNode := ParentNode.GetNext;
L := CurrentNode.Level;
while L > ParentNode.Level do
begin
Inc(C);
CurrentNode := ParentNode.GetNext;
L := CurrentNode.Level;
end;
//删除数据库中ID为ParentNode.AbsoluteIndex到 ParentNode.AbsoluteIndex+C的记录
ParentNode.Delete;
end;
procedure TForm1.Delete(node: TTreeNode);
var
T: TTreeNode;
begin
while node.HasChildren do
begin
t:= node.getFirstChild;
delete(t);
end;
TreeView1.Items.Delete(node);
end;
好象没有必要递归吧,非递归也不反对。
procedure TForm1.Delete(node: TTreeNode);
var
T: TTreeNode;
begin
if node.HasChildren then
begin
t:= node.getFirstChild;
delete(t);
end;
TreeView1.Items.Delete(node);
end;