TreeView(产品分类)

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值