加载多级部门代码

//======================================
//procedure TreeAddChild(Node:TTreeNode;DataSet:TDataSet;KeyName,TextName:string;Sign:integer;ImageIndex,SelectIndex,StateIndex:integer);
//功  能:在树视图中增加主子节点
//参  数:Node:增加到节点
//        DataSet:数据集
//        KeyName:主键名称
//        TextName:显示的字段名称
//        Sign:节点标志
//        ImageIndex:节点默认图标索引
//        SelectIndex:节点选中图标索引
//        StateIndex:节点状态图标索引
//返回值:无
//======================================
procedure TreeAddChild(TV:TTreeView;Node:TTreeNode;DataSet:TDataSet;KeyName,TextName:string;Sign:integer;ImageIndex,SelectIndex,StateIndex:integer);
var
  AddNode:TTreeNode;
  NodeText:String;
  i:Integer;
  NodePtr:PNodeIntKey;
  TempNode:array of TTreeNode;
  NodeNum:integer;
  DeptNO:string;
begin
  if Node = nil then
  begin
    NodeNum:=0;
    with DataSet do
    begin
      Dataset.Filter:='MasterID=0';
      while not Eof do
      begin
        New(NodePtr);
        NodePtr^.KeyID:=FieldByName(KeyName).AsInteger;
        NodePtr^.Sign:=Sign;
        NodePtr^.SignType:=0;
        if KeyName='DeptID' then
        begin
          DeptNO:=Trim(FieldByName('DeptNO').AsString);
          NodeText:='['+DeptNO+']'+Trim(FieldByName(TextName).AsString);
        end
        else
          NodeText:=Trim(FieldByName(TextName).AsString);
        AddNode:=TV.Items.AddObject(nil,NodeText,NodePtr);
        AddNode.ImageIndex:=ImageIndex;
        AddNode.SelectedIndex:=SelectIndex;
        AddNode.StateIndex:=StateIndex;
        NodeNum:=NodeNum+1;
        SetLength(TempNode,NodeNum);
        TempNode[NodeNum-1]:=AddNode;
        Next;
      end;
    end;
    for i:=0 to NodeNum-1 do TreeAddChild(TV,TempNode[i],DataSet,KeyName,TextName,Sign,ImageIndex,SelectIndex,StateIndex);
  end
  else begin
    if not Node.HasChildren then
    begin
      with DataSet do
      begin
        Dataset.Filter:='MasterID='+IntTostr(PNodeIntKey(Node.Data)^.KeyID);
        while not Eof do
        begin
          New(NodePtr);
          NodePtr^.KeyID:=FieldByName(KeyName).AsInteger;
          NodePtr^.Sign:=Sign;
          NodePtr^.SignType:=0;
          if KeyName='DeptID' then
          begin
            DeptNO:=Trim(FieldByName('DeptNO').AsString);
            NodeText:='['+DeptNO+']'+Trim(FieldByName(TextName).AsString);
          end
          else
            NodeText:=Trim(FieldByName(TextName).AsString);
          AddNode:=Node.Owner.AddChildObject(Node,NodeText,NodePtr);
          AddNode.ImageIndex:=ImageIndex;
          AddNode.SelectedIndex:=SelectIndex;
          AddNode.StateIndex:=StateIndex;
          Next;
        end;
      end;
    end;
    for i:=0 to Node.Count-1 do   TreeAddChild(TV,Node.Item[i],DataSet,KeyName,TextName,Sign,ImageIndex,SelectIndex,StateIndex);
  end;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值