procedure Te_cpzl_fm.AddClass(AId: integer;FatherNode:TTreeNode);
var
QryTmp:TADOQuery;
myNode:TTreeNode;
myLabel:TLabel;
treeNode: TTreeNode;
begin
QryTmp:=TADOQuery.Create(self);
QryTmp.Connection:=dm_fm.conn;
QryTmp.SQL.Add('select * from cpdl');
QryTmp.SQL.Add('where FatherId='+inttostr(AId));
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname('CName').AsString);
//创建标签,caption存放各分支的AutoId表识
myLabel:=TLabel.Create(self);
myLabel.Visible:=false;
myLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString;
myNode.Data:=myLabel;
AddClass(QryTmp.fieldbyname('AutoId').AsInteger,myNode); //递归调用过程
QryTmp.Next;
end;
QryTmp.Free;
//展开第一个结点/
TreeView1.HideSelection:=false;
treeNode:=TreeView1.Items.Item[0];
while treeNode.getFirstChild <> nil do
treeNode:=treeNode.getFirstChild;
treeNode.Selected:=true;
end;
procedure Te_cpzl_fm.AddDataToDB(CurrNode,FatherNode: TTreeNode);
var
myLabel:TLabel;
AId:integer;
begin
if not assigned(FatherNode) then
AId:=0
else if not assigned(FatherNode.Data) then
AId:=0
else
AId:=strtoint(TLabel(FatherNode.Data).caption);
with dm_fm.Query_cpdl do
begin
close;
sql.Clear;
SQL.Add('select * from cpdl');
SQL.Add('where FatherId='+inttostr(AId));
Open;
Append;
end;
dm_fm.Query_cpdl['FatherId']:=AId;
dm_fm.Query_cpdl['CName']:=CurrNode.Text;
dm_fm.Query_cpdl.Post;
//创建记录currNode的AutoId表识标
myLabel:=TLabel.Create(self);
myLabel.Visible:=False;
MyLabel.Caption:=dm_fm.Query_cpdl.fieldbyname('AutoId').AsString;
CurrNode.Data:=myLabel;
end;
procedure Te_cpzl_fm.N1Click(Sender: TObject);
var
strName:string;
myNode:TTreeNode;
begin
if treeview1.Selected.Text='产品分类' then
begin
showmessage('此分类不能增加同级分类');
end
else
begin
strName:=inputbox('新增同级分类','请输入分类名称: ','');
strName:=trim(strName);
if strName='' then
exit;
myNode:=treeview1.Items.Add(treeview1.Selected,strName);
myNode.ImageIndex :=0;
myNode.SelectedIndex :=1;
if assigned(treeview1.Selected) then
AddDataToDB(myNode,treeview1.Selected.Parent)
else
AddDataToDB(myNode,nil);
myNode.selected:=true;
end;
end;
procedure Te_cpzl_fm.N2Click(Sender: TObject);
var
strName:string;
myNode:TTreeNode;
begin
strName:=inputbox('新增下级分类','请输入分类名称: ','');
strName:=trim(strName);
if strName='' then
exit;
myNode:=treeview1.Items.AddChild(treeview1.Selected,strName);
myNode.ImageIndex :=0;
myNode.SelectedIndex :=1;
AddDataToDB(myNode,treeview1.Selected);
myNode.selected:=true;
end;
procedure Te_cpzl_fm.N3Click(Sender: TObject);
var
QryTmp:TADOQuery;
strName:string;
begin
if treeview1.Selected.Text='产品分类' then
begin
showmessage('此分类不能修改');
end
else
begin
if not assigned(treeview1.Selected) then
exit;
strName:=inputbox('修改','请输入新的分类名称: ','');
strName:=trim(strName);
if (strName='') or (strName='产品分类') then
exit;
//删除下级别分类
QryTmp:=TADOQuery.Create(self);
QryTmp.Connection:=dm_fm.Conn;
QryTmp.SQL.Add('update cpdl set CName='+''''+strName+'''');
QryTmp.SQL.Add('where AutoId='+TLabel(Treeview1.Selected.data).Caption);
QryTmp.ExecSQL;
Treeview1.Selected.Text:=strName;
end;
end;
procedure Te_cpzl_fm.N4Click(Sender: TObject);
var
QryTmp:TADOQuery;
begin
if treeview1.Selected.Text='产品分类' then
begin
showmessage('此分类不能删除');
end
else
begin
if not assigned(treeview1.Selected) then
exit;
if application.MessageBox('是否删除分类及下级分类?','提示',mb_yesno+mb_iconquestion)=idno then
exit;
//删除下级别分类
QryTmp:=TADOQuery.Create(self);
QryTmp.Connection:=dm_fm.Conn;
QryTmp.SQL.Add('delete from cpdl');
QryTmp.SQL.Add('where FatherId='+TLabel(Treeview1.Selected.data).Caption);
QryTmp.ExecSQL;
QryTmp.SQL.Clear;
QryTmp.SQL.Add('delete from cpdl');
QryTmp.SQL.Add('where AutoId='+TLabel(Treeview1.Selected.data).Caption);
QryTmp.ExecSQL;
Treeview1.Selected.Delete;
end;
end;
procedure Te_cpzl_fm.FormShow(Sender: TObject);
begin
treeview1.Items.Clear;
AddClass(0,nil);
end;
procedure Te_cpzl_fm.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected<>nil then
begin
if treeview1.Selected.Text='产品分类' then
begin
with dm_fm.Query_cpzl do
begin
Close;
SQL.Clear;
SQL.Text:='select * from cpzl';
Open;
end;
end
else
begin
with dm_fm.Query_cpzl do
begin
Close;
SQL.Clear;
SQL.Text:='select * from cpzl where cpdl_dl='''+treeview1.Selected.Text+'''';
Open;
end;
end;
end;
end;