高分求代码,将数据库中的数据显示在listview中,谢谢了
表1:
dwdm dwmc
10 aa
11 bb.......
表2:
dwdm bmdm bmmc
10 01 aaa
10 02 aaaa
11 01 bbb
11 02 bbbb
11 03 bbbbb.....
如何让数据显示成这个结果,谢谢了,分不够再加,急.在线等.......
aa
aaa
aaaa
bb
bbb
bbbb
bbbbb
问题点数:100、回复次数:10Top
1 楼qdmis(爱上你我很快乐)回复于 2004-09-03 11:51:10 得分 0
对不起,错了,应该是treeview中Top
2 楼pandengzhe(无为之为 之 混迹苍生)回复于 2004-09-03 11:58:28 得分 0
与不用数据库一样Top
3 楼pandengzhe(无为之为 之 混迹苍生)回复于 2004-09-03 11:59:20 得分 10
unit fraTree;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, ImgList, Db, ComCtrls, ToolWin, ExtCtrls, frameSubRight,
fraDetail,PubVar;
type
TFrameTree = class(TFrame)
Splitter1: TSplitter;
Panel1: TPanel;
Tree: TTreeView;
Panel2: TPanel;
FrameDetail1: TFrameDetail;
private
public
procedure LoadTree(treeDB:TDBDataSet);//初始化树
procedure UpdateTree(curNode:TTreenode; nodeTxt:string; state:string);//更新树
function GetNodeLevel(sFormat,sCode:string):integer;
//获得节点层数
end;
implementation
{$R *.DFM}
procedure TFrameTree.LoadTree(treeDB:TDBDataSet);//初始化树
var curID,nodeTxt:string;
level,chindex,cnode,num:integer;
mynode:array[0..6] of TTreenode;
begin
//初始化变量
Screen.Cursor:=crHourGlass;
tree.Enabled:=True;
tree.Items.Clear;
level:=0 ;
num:=1;
tree.items.clear;
//设置根节点
mynode[level]:=tree.items.add(Tree.Topitem,cTreeRootTxt);
mynode[level].ImageIndex:=1;
//遍历数据表,利用编码字段记录排序规律,依次添加树节点
with treeDB do
begin
try
if not Active then open;
first;
while not Eof do
begin
curID:=trim(FieldByName('dwbm').AsString);
nodeTxt:=curID+'-'+trim(FieldByName('dwqc').AsString);
level:=GetNodeLevel(cTreeCodeFormat,curID);
//这里返回代码的层次数
if level>0 then
begin
//增加下一节点时,用添加子节点的方法可轻松实现节点间的层次关系
//注意:这里的父节点是用当前节点的上一级节点mynode[level-1]
mynode[level]:=
tree.items.addchild(mynode[level-1],nodeTxt);
mynode[level].ImageIndex:=2;
end;
next;//下一条记录
end;
finally;
close;
End;
mynode[0].expand(False);
Screen.Cursor:=crHourGlass;
end;
end;
function TFrameTree.GetNodeLevel(sFormat,sCode:string):integer;
var i,level,iLen:integer;
begin
level:=-1 ;
iLen:=0;
if (sFormat<>'') and (sCode<>'') then
for i:=1 to Length(sFormat) do //分析编码格式,找出当前代码层次
begin
iLen:=iLen+StrToInt(sFormat[i]);
if Length(sCode)=iLen then
begin
level:=i;
break;
end;
end;
result:=level;
end;
//以下过程在新增、删除、修改记录时,同步更新树形结构
procedure TFrameTree.UpdateTree(curNode:TTreenode; nodeTxt:string; state:string);
Begin
if state='add' then
begin
curNode:=tree.items.addchild(curNode,nodeTxt);
curNode.ImageIndex:=2;
end;
if state='del' then curNode.delete;
if state='edi' then curNode.Text:=nodeTxt;
end;
end.Top
4 楼myheartzhang(乔乔)回复于 2004-09-03 12:10:47 得分 10
procedure TForm1.createTree( anode:TTreeNode; pid:string) ;
var
sname:string;
currname:string;
id:string;
currid:string;
begin
ADODataSet1.Active := false;
adodataset1.CommandText := 'select idno,previdno,idname from TdgTest1 where previdno=' +
QuotedStr(pid);
adodataset1.active := true;
while not adodataset1.Eof do
begin
sname := adodataset1.fieldbyname('idname').asString;
currname :=trim(sname);
ANode :=Treeview1.items.addchild(anode,currname);
id :=adodataset1.fieldbyname('idno').AsString;
currid := id;
createTree(Anode,id);
ANode :=ANode.parent;
adodataset1.active := false;
adodataset1.commandtext :=
'select * '#13#10 +
'from TdgTest1 '#13#10 +
'where previdno=' + QuotedStr(pid);
adodataset1.active := true;
adodataset1.locate('idno',currid,[locaseinsensitive]);
adodataset1.next;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
t:TTreeNode;
id:string;
begin
t := nil;
id := '001';
TreeView1.Items.Clear;
createTree(t,id);
TreeView1.SetFocus;
end;
end.
idno,previdno,idname
002 001 部门
003 002 人员
004 003 张,
你可以参照一个,以前做的,没有时间改你的,
Top
5 楼hotzhu(天下无妞)回复于 2004-09-03 12:48:17 得分 40
短信中给我留个email吧, 我把一个详细应用发给你Top
6 楼qdmis(爱上你我很快乐)回复于 2004-09-03 13:38:17 得分 0
能不能说个完整的代码
谢谢了Top
7 楼budded(All By Myself)回复于 2004-09-03 14:48:19 得分 0
在ListView 的 OnData 事件中处理,简单方便Top
8 楼qdmis(爱上你我很快乐)回复于 2004-09-03 15:02:06 得分 0
好了,不过:
edit2.text:=tree.Selected.Parent.Text;
edit1.text:=tree.selected.text;
这个的语句选中的是父节点,则程序出错,应该怎么写?Top
9 楼jinjazz(近身剪)回复于 2004-09-03 15:11:50 得分 40
if tree.selected<>nil then edit1.text:=tree.selected.text;
if tree.selected.parent<>nil then edit2.text:=tree.Selected.Parent.Text;
Top
10 楼qdmis(爱上你我很快乐)回复于 2004-09-03 15:20:31 得分 0
谢谢Top




