加载多级部门代码
来源:互联网 发布:win7系统优化教程 编辑:程序博客网 时间:2024/05/16 19:04
//======================================
//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;
//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;
- 加载多级部门代码
- MySql数据库查询多级部门及其下的所有用户信息
- .net 无限级 部门维护(多级部门员工的显示)
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- [MySQL] 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- [MySQL] 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- [MySQL] 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- ORACLE 数据库的级联查询 一句sql搞定(例:部门多级,类型多级)
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- MySQL 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
- 多级树行控件加载
- 同时加载多级关联实体
- struts动态加载多级菜单
- 多级分布加载树节点
- ImageLoader多级列表图片加载
- 编译unexpected end of file while looking for precompiled header directive的问题
- 关于Babytree盈利模式探讨
- VoIP 技术究竟是什么?
- 关于网站体验营销
- 国内B2B电子商务网站经营模式比较与分析
- 加载多级部门代码
- 轰动全球的十大营销理念
- 慧聪、铭万对冲阿里巴巴
- Bye-- Czech golden generation
- 加密技术在企业数据安全中的应用
- 先锋缓存类(极度加速ASP和提高执行效率)
- 加密算法中私钥的安全性
- 哪有那么多云计算
- 泛型编程与STL核心要素