网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.LineDDA的一个例子.
.编程实现窗体的半透明效果.
.delphi中的split函数.
.远程控制篇:服务端程序关机时的.
.Delphi的拨号连接类.
.发掘ListBox的潜力(二):鼠标拖.
.Delphi中取某整数的某位的位状态.
.选择一个网路邻居.
.如何在托盘图标实现漂亮的菜单.
.快速导出数据到Excel(一):利用.
.《delphi高手突破》节选二.
.让弹出式广告就地正法.
.使用Delphi创建IIS虚拟目录.
.Delphi7中存储unicode的BUG.
.在打印或打印预览前如何获取报表.
.装扮工具提示条.
.quake2源码分析(一).
.关于exe文件传递参数方法.
.个人观点随笔-RAD和面向对象.
.实现界面跟随鼠标移动的实例.

关于动态增加、修改、删除树形结构的程序

发表日期:2006-2-4


procedure LoadTree(treeDB:TDBDataSet);//初始化树
    procedure UpdateTree(curNode:TTreenode; nodeTxt:string; state:string);//更新树
    function  GetNodeLevel(sFormat,sCode:string):integer; //获得节点层数
    function  GetNodeItem(sCode:string):integer;//获得item

    { Public declarations }
  end;

    const
  CTreeCodeFormat='122222';
  cTreeMaxLevel=6;
  CTreeRootTXT='所有图书';

var
  tsgzlfrom: Ttsgzlfrom;
  _err:integer;
  curUser:string[10];
  mystate:string;
  gNodeId:string;
  gNodelevel:integer;
  gNode:TtreeNode;
  mynode:array[0..6] of TTreenode;
  i,Already,CurMode:integer;
  currow:integer;
  iniFile:string;
  HasSub:String;

  level:Integer;


  implementation

uses bgNewunit;


{$R *.DFM}

procedure TtsgzlFrom.LoadTree(treeDB:TDBDataSet);//初始化树
var curID,nodeTxt:string;
    level,num:integer;
begin
    //初始化变量
    Screen.Cursor:=crHourGlass;
    tree.Enabled:=True;
    tree.Items.Clear;
    level:=1 ;
    num:=1;
    tree.items.clear;
    //设置根节点
    mynode[level]:=Tree.items.add(Tree.Topitem,cTreeRootTxt);
    mynode[level].ImageIndex:=0;
    mynode[level].SelectedIndex:=1;
    //遍历数据表,利用编码字段记录排序规律,依次添加树节点
    with TreeDb do
    begin
       try
       if not Active then open;
       first;
       while not Eof do
       begin
         curID:=trim(FieldByName('tsglb').AsString);
         nodeTxt:=curID+'-'+trim(FieldByName('tsglbn').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;
            mynode[level].SelectedIndex:=3;
         end;
         next;//下一条记录
       end;
       finally;
         close;
       End;
       mynode[1].expand(False);
       Screen.Cursor:=crHourGlass;
     end;
end;

function TtsgzlFrom.GetNodeLevel(sFormat,sCode:string):integer;
var i,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;

Function TtsgzlFrom.GetNodeItem(sCode:string):integer;//获得item
var i,iCount,val:integer;
    tmp:string;
begin
  Result:=0;
  iCount:=Tree.Items.Count;
  if iCount=0 then exit;
  val:=0;
  for i:=1 to iCount-1 do
  begin
     Tmp:=Tree.Items.Item[i].Text;
     Tmp:=Copy(Tmp,0,pos('-',Tmp)-1);
     if Tmp=sCode then begin
        val:=i;
        Break;
     end;
  end;
  result:=val;
end;

 

procedure TtsgzlFrom.UpdateTree(curNode:TTreenode; nodeTxt:string; state:string);
Begin
  if  state='add'   then
    begin
      curNode:=Tree.Items.addchild(curNode,nodeTxt);
      curNode.ImageIndex:=2;
      curnode.SelectedIndex:=3;
    end;
  if state='del' then  curNode.delete;
  if state='edi' then  curNode.Text:=nodeTxt;
end;

上一篇:Delphi控件的使用经验 人气:4796
下一篇:如何编写SMTP邮件服务器 人气:4675
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐