当前位置:首页 » 多媒体相关

找TreeView的应用事例.UP有分


怎样实现treeview读数据库循环显示:  
  如:顶级地区,上级地区,地区分枝.....  
  还有当点某一节点时候再按添加可以鼠标焦点处加入地区.  
  最好有事例,我刚学delphi,现在项目太紧张了.

推荐阅读

  • 超大彩屛MV长气王!256MB799还送线控 [详细内容]
  • 200万像素三星SPH-V4900拍照效果赏 [详细内容]
  • “肌肉型”猛将!索爱音乐手机W52S南京 [详细内容]
  • 蓝魔再出低价 256M MP3只要399元! [详细内容]
  • 解决应为上网导致的内存减少 [详细内容]
  • 回马枪 摩托罗拉MPX市场售价1980元南京 [详细内容]
  • TSOP封装256M显存 蓝宝石X550显卡599 [详细内容]
  • 网友回答:
    网友:rehuo

    unit   sc_sbtj;  
       
      interface  
       
      uses  
          windows,   messages,   sysutils,   variants,   classes,   graphics,   controls,   forms,  
          dialogs,   comctrls,   extctrls,   grids,   stdctrls,   toolwin;  
       
      type  
          tshebeileibie   =   class(tform)  
              panel1:   tpanel;  
              sbtreeview:   ttreeview;  
              sbstringgrid1:   tstringgrid;  
              toolbar1:   ttoolbar;  
              toolbutton1:   ttoolbutton;  
              toolbutton4:   ttoolbutton;  
              toolbutton2:   ttoolbutton;  
              toolbutton3:   ttoolbutton;  
              toolbutton5:   ttoolbutton;  
              toolbutton6:   ttoolbutton;  
              procedure   formcreate(sender:   tobject);  
              procedure   sbtreeviewclick(sender:   tobject);  
              procedure   toolbutton1click(sender:   tobject);  
              procedure   toolbutton2click(sender:   tobject);  
              procedure   toolbutton3click(sender:   tobject);  
              procedure   toolbutton5click(sender:   tobject);  
          private  
              {   private   declarations   }  
                procedure   mysbdggc(node:ttreenode;id:integer);  
          public  
              {   public   declarations   }  
          end;  
       
      var  
          shebeileibie:   tshebeileibie;  
          mykzbl:boolean;  
          mysbarray:array   of   array[0..3]   of   variant;  
          mysbcount:integer;  
          //定义数据存储  
          type  
              pmysbpro=^tmysbpro;  
              tmysbpro   =   record  
                  fid:integer;  
                  ffuid:integer;  
                  ftaizhangmoban:string;  
          end;  
      implementation  
       
      uses   sc_sjmk,   sc_shebeiedit;  
       
      {$r   *.dfm}  
      //递归过程调用  
      procedure   tshebeileibie.mysbdggc(node:ttreenode;id:integer);  
      var  
          i:integer;  
          myboolean:boolean;  
          mysbprodata:   pmysbpro;  
      begin  
          for   i:=0   to   mysbcount-1   do  
              begin  
                  if   mysbarray[i,2]=id   then  
                      begin  
                          new(mysbprodata);  
                          pmysbpro(mysbprodata)^.fid:=mysbarray[i,0];  
                          pmysbpro(mysbprodata)^.ffuid:=mysbarray[i,2];  
                          pmysbpro(mysbprodata)^.ftaizhangmoban:=mysbarray[i,3];  
                          if   myboolean=false   then   node:=sbtreeview.items.addchildobject(node,mysbarray[i,1],mysbprodata)  
                          else  
                              begin  
                                  node:=sbtreeview.items.addobject(node,mysbarray[i,1],mysbprodata);  
                                  myboolean:=false;  
                              end;  
                          mysbdggc(node,mysbarray[i,0]);  
                          myboolean:=true;  
                      end;  
              end;  
      end;  
      //init   shebeileibie  
      procedure   tshebeileibie.formcreate(sender:   tobject);  
      var  
          i:integer;  
      begin  
          with   sjmk   do  
              begin  
                  cx1.close;  
                  cx1.sql.clear;  
                  cx1.sql.add(select   id,   leixingname,   fuid,   taizhangmoban   from   sb_leixing);  
                  cx1.open;  
                  mysbcount:=ds1.dataset.recordcount;  
                  setlength(mysbarray,mysbcount);  
                  for   i:=0   to   mysbcount-1   do  
                      begin  
                          mysbarray[i,0]:=   ds1.dataset.fields[0].asinteger;  
                          mysbarray[i,1]:=   ds1.dataset.fields[1].asstring;  
                          mysbarray[i,2]:=   ds1.dataset.fields[2].asinteger;  
                          mysbarray[i,3]:=   ds1.dataset.fields[3].asstring;  
                          ds1.dataset.next;  
                      end;  
              end;  
          sbtreeview.items.clear;  
          mysbdggc(nil,0);  
          sbstringgrid1.cells[0,0]:=设备编号;  
          sbstringgrid1.cells[1,0]:=设备类别;  
          sbstringgrid1.cells[2,0]:=上级编号;  
          sbstringgrid1.cells[3,0]:=台帐路径;  
      end;  
      //   show   shebei  
      procedure   tshebeileibie.sbtreeviewclick(sender:   tobject);  
      begin  
          if   (sbtreeview.items.count<1)   or   (sbtreeview.selected=nil)   then   exit;  
          sbstringgrid1.rows[1].clear;  
          sbstringgrid1.cells[0,1]:=inttostr(pmysbpro(sbtreeview.selected.data)^.fid);  
          sbstringgrid1.cells[1,1]:=sbtreeview.selected.text;  
          sbstringgrid1.cells[2,1]:=inttostr(pmysbpro(sbtreeview.selected.data)^.ffuid);  
          sbstringgrid1.cells[3,1]:=pmysbpro(sbtreeview.selected.data)^.ftaizhangmoban;  
      end;  
      //add   shebei  
      procedure   tshebeileibie.toolbutton1click(sender:   tobject);  
      begin  
          if   ((sender   as   ttoolbutton).name=toolbutton6)   and   (sbtreeview.items.count<1)   and   (sbtreeview.selected=nil)   then   exit;  
          shebeiedit:=tshebeiedit.create(self);  
          shebeiedit.caption:=设备类别添加;  
          with   sjmk   do  
              begin  
                  cx1.close;  
                  cx1.sql.clear;  
                  cx1.sql.add(select   max(id)   as   id   from   sb_leixing);  
                  cx1.open;  
                  shebeiedit.sbbh.text:=inttostr(ds1.dataset.fields[0].asinteger+1);  
                  if   (sender   as   ttoolbutton).name=toolbutton1     then     //add   the   same   node  
                      begin  
                          mykzbl:=true;  
                          if   (sbtreeview.items.count>1)   and   (sbtreeview.selected<>nil)   and   (sbtreeview.selected.parent<>nil)   then  
                              //不是选择顶级节点  
                              begin  
                                  shebeiedit.sjsbbh.text:=inttostr(pmysbpro(sbtreeview.selected.data)^.ffuid);  
                                  shebeiedit.sjbh.text:=sbtreeview.selected.parent.text;  
                              end  
                          else//没有数据或者选择顶级节点  
                              begin  
                                  shebeiedit.sjsbbh.text:=0;  
                                  shebeiedit.sjbh.text:=;  
                              end;  
                      end  
                  else//add   the   childen   node  
                      begin  
                          mykzbl:=false;  
                          shebeiedit.sjsbbh.text:=inttostr(pmysbpro(sbtreeview.selected.data)^.fid);  
                          shebeiedit.sjbh.text:=sbtreeview.selected.text;  
                        end;  
              end;  
          try  
              shebeiedit.showmodal;  
          finally  
              shebeiedit.free;  
          end;  
      end;  
      //edit   shebei  
      procedure   tshebeileibie.toolbutton2click(sender:   tobject);  
      begin  
          if   sbtreeview.selected=nil   then     exit;  
          shebeiedit:=tshebeiedit.create(self);  
          shebeiedit.caption:=设备类别编辑;  
          shebeiedit.sbbh.text:=inttostr(pmysbpro(sbtreeview.selected.data)^.fid);  
          if   sbtreeview.selected.parent=nil   then   //设置顶级节点  
              begin  
                  shebeiedit.sjbh.text:=;  
                  shebeiedit.sjsbbh.text:=0;  
              end  
          else//不是顶级节点  
              begin  
                  shebeiedit.sjbh.text:=sbtreeview.selected.parent.text;  
                  shebeiedit.sjsbbh.text:=inttostr(pmysbpro(sbtreeview.selected.data)^.ffuid);  
              end;  
          shebeiedit.sbname.text:=sbtreeview.selected.text;  
          shebeiedit.tzlj.text:=pmysbpro(sbtreeview.selected.data)^.ftaizhangmoban;  
          shebeiedit.oldfilename.text:=shebeiedit.tzlj.text;  
          try  
              shebeiedit.showmodal;  
          finally  
              shebeiedit.free;  
          end;  
      end;  
      //delete   shebei  
      procedure   tshebeileibie.toolbutton3click(sender:   tobject);  
      begin  
          if   sbtreeview.selected=nil   then   exit;  
          if   sbtreeview.selected.haschildren=true   then  
              begin  
                  showmessage(设备类型下面还有数据,不能删除!);  
                  exit;  
              end;  
          if   application.messagebox(你确实要删除这个设备吗?,删除窗口,mb_yesno)=idno     then   exit;  
          with   sjmk   do  
              begin  
                  cx1.close;  
                  cx1.sql.clear;  
                  cx1.sql.add(delete   from   sb_leixing   where   (id=+inttostr(pmysbpro(sbtreeview.selected.data)^.fid)+));  
                  try  
                      cx1.execsql;  
                  except  
                      showmessage(删除出错!可能下面还有设备!);  
                      exit;  
                  end;  
                  sbtreeview.deselect(sbtreeview.selected);  
                  sbstringgrid1.rowcount:=2;  
                  sbstringgrid1.rows[1].clear;  
                  dispose(sbtreeview.selected.data);   //free   the   selected   node   data  
                  sbtreeview.items.delete(sbtreeview.selected);  
              end;  
      end;  
       
      procedure   tshebeileibie.toolbutton5click(sender:   tobject);  
      var  
          i:integer;  
      begin  
          for   i:=0   to   sbtreeview.items.count-1   do//free   pointer  
              dispose(sbtreeview.items[i].data);  
          close;  
      end;  
                                                         
      end.

    .

    讨论区

    Login