小弟想用DELPHI里面win32\treeview 树型控件做一个向下面这样结构的树型菜单,但是部门与人员都要从数据库里读取,因为部门及人员太多,无法用手工录入。信息产业部-
刘龙
王茜
赵建涛生产运行部-
王伟
顾平
吴立静计划财务处-
赵敏
李宇峰
肖鹏树型菜单做成以后,单击某个人员会显示他的基本信息。希望各位兄弟帮帮忙,最好有现成的例子或是关于这方面的资料。
刘龙
王茜
赵建涛生产运行部-
王伟
顾平
吴立静计划财务处-
赵敏
李宇峰
肖鹏树型菜单做成以后,单击某个人员会显示他的基本信息。希望各位兄弟帮帮忙,最好有现成的例子或是关于这方面的资料。
解决方案 »
- 使用GMFBridge可以平滑的连接播放2个视频文件,但怎么连接2个内存中的视频文件呢?
- 怎样获得RaveSolo.dll文件,有没有网址下载,各位老大帮帮忙吧
- delphi的dll在VB里调用不对?
- 问一个关于字符串的问题!
- 100分求助,数据导出问题。。。
- 请问各位,在win95和winnt4下是否能实现balloon tips?要怎么实现?win98,win2k我可以做到。 谢谢了,急着要。
- ####怎么在sqlserver中打印表结构?
- 怎样在程序中显示一个来自网上的GIF图象和flash文件
- 用delphi创建菜单,使菜单平时只显示最近刚用过的菜单项
- 怎么实现类似winamp视觉插件的变幻图象效果
- 急救!!socket问题!!
- OpenDialog的小问题
SecNode: TTreeNode;
begin
Tree.Items.Clear;
TopNode := Tree.AddChildObject(nil, '信息产业部',TObject('信息产业部'));
SecNode := Tree.AddChildObject(TopNode,'刘龙',TOjbect('刘龙'));
...
end;
procedure TFrm_KMDM.treeIter(IDStr:String='');
var
Qry_KMDM:TADOQuery;
L
:integer;
begin
Qry_KMDM:=TADOQuery.Create(nil);
try
With Qry_KMDM do
begin
Connection:=Con_KMDM;
Close;
SQL.Clear;
SQL.Add('Select 科目代码,科目名称,是否有子集 From 科目表');
Open;
if RecordCount<=0 then
begin
TV_KMDM.Items.Clear; //无记录清空树
end
else
begin
TV_KMDM.Items.Clear;
TV_KMDM.Items.Add(nil,'科目代码'+'----'+'科目名称');
TV_KMDM.Selected:=TV_KMDM.Items.GetFirstNode;
L:=length(Fields[0].Value); //取第一级科目代码的长度
While not Eof do
begin
if (copy(Fields[0].Value,0,L)=copy(IDStr,0,L)) OR (IDStr='') then //如果为根节点或代码匹配
begin
TV_KMDM.Items.AddChild(TV_KMDM.Selected,Fields[0].Value+' '+Fields[1].Value); //添加子节点(代码+空格+名称)
TV_KMDM.Selected:=TV_KMDM.Selected.GetLastChild; //获取刚添加的节点
if Fields[2].value=0 then //为叶节点
TV_KMDM.Selected:=TV_KMDM.Selected.Parent //返回父节点
else
IDStr:=TV_KMDM.Selected.Text;
end
else
begin
if Length(Fields[0].Value)=L then
begin
TV_KMDM.Selected:=TV_KMDM.Items.GetFirstNode;
TV_KMDM.Items.AddChild(TV_KMDM.Selected,Fields[0].Value+' '+Fields[1].Value);
TV_KMDM.Selected:=TV_KMDM.Selected.GetLastChild; //获取刚添加的节点
if Fields[2].value=0 then //为叶节点
TV_KMDM.Selected:=TV_KMDM.Selected.Parent //返回父节点
else
IDStr:=TV_KMDM.Selected.Text;
end;
end;
Next;
end;
end;
end;
finally
Qry_KMDM.Free;
end;
end;
Node: TTreeNode;
begin
with adoQuery1 do
begin
close;
SQL.Text := 'select 部门 from table1';
Open;
while not Eof do
begin
Node := treeview1.Items.Add(nil, FieldByName('部门').AsString);
with adoQuery2 do
begin
close;
SQL.Text := 'select 人员 from table2 where 部门=' + QuotedStr(adoQuery1.FieldByName('部门').AsString);
Open;
while not eof do
begin
treeview1.Items.AddChild(Node, FieldByName('人员').AsString);
Next;
end;
Close;
end;
Next;
end;
Close;
end;
end;
var Node:TTreeNode;
NoDepName:string;
beginwhile not form1.ADODataSet1.Eof do
begin
Node:=form1.TreeView1.Items.Add(nil,ADODataSet1.FieldByName('DepName').AsString);
NoDepName:=QuotedStr(ADODataSet1.FieldByName('DepName').AsString);
form1.ADODataSet2.Connection:=ADOConnection1;
form1.ADODataSet2.CommandText:='select * from v_oa_sys_department_account where DepName = ''+NoDepName+''';
form1.ADODataSet2.Active:=True;
while not form1.ADODataSet2.Eof do
begin
treeview1.Items.AddChild(Node,ADODataSet2.FieldByName('TrueName').AsString);
form1.ADODataSet2.Next;
end;
form1.ADODataSet1.Next;
end次段代码只能显示第一层部门的菜单,但是显示不出来人员,不知道为什么,请各位帮忙看看谢谢