CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

高分求代码,将数据库中的数据显示在listview中,谢谢了

楼主qdmis1(yhy)2004-09-03 11:46:16 在 Delphi / VCL组件开发及应用 提问

表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

相关问题

  • 代码创建数据库
  • 如何用代码把access2000数据库转成access97数据库
  • 如何用代码压缩数据库。
  • vb代码里访问sql数据库
  • 如何用代码生成数据库?
  • 求救~~~~~~~!!连数据库代码错误
  • 数据库查询代码的问题?
  • 再求数据库恢复代码
  • 求助数据库链接代码!!!!!!!!!!!!!!!!!!
  • 求delphi操作数据库代码

关键词

  • nodetxt
  • curnode
  • adodataset
  • ttreenode
  • 初始化
  • sformat
  • scode
  • sname
  • tree
  • 树

得分解答快速导航

  • 帖主:qdmis1
  • pandengzhe
  • myheartzhang
  • hotzhu
  • jinjazz

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo