摘要:
在数据库中建一张表,包含:NodeName,NodeId,ParentId 3个字段,具体什么含义,一看就知了。过程如下:procedure TFRM_channel.formtreenode(parentid:string;TreeView1: TTreeView;parentnode:TTreeNode;ADOQuery1:TADOQuery);var i:integer; treenode:TTreeNode;begin i:=0; ADOQuery1.First; while not ADOQuery1.Eof do begin if ADOQuery1.FieldByName( 阅读全文
摘要:
根据数据表的内容生成TreeView树状结构,通常的做法就是从顶级开始,然后逐项递归查询遍历生成。这种方法在实现上容易做到,也很容易想到,但是效 率比较低,因为数据库的检索(SQL语句需要解释执行,而且是对数据库文件进行操作)还是比较耗时的,尤其是树的层次较多,节点较多的情况。这里我要介绍 的方法是以空间换取时间,只进行一次数据库检索,提取出全部数据,然后一次生成TreeView树状结构。通过SQL语句,让返回的记录按照父节点ID、 节点ID进行排序,这样保证每次当前要添加的节点记录的父节点都已经添加到了TreeView树中,剩下的工作就是如何在TreeView树中找到父节 点。这里我采用了一 阅读全文
摘要:
procedure TForm1.Button1Click(Sender: TObject);varMyTreeNode1, MyTreeNode2: TTreeNode;beginwith TreeView1.Items dobeginClear; { remove any existing nodes }MyTreeNode1 := Add(nil, 'RootTreeNode1'); { Add a root node }{ Add a child node to the node just added }AddChild(MyTreeNode1,'ChildNo 阅读全文
摘要:
生成树型结构有2种方法:1.动态生成树结点2.静态生成树结点这里暂不讨论动态生成树,先实现静态生成!所谓静态生成树结点是指通过遍历数据源的方式一次性把所有树结点全部加载,说起生成树避免不了谈起数据库结构的设计。数据库设计的方法有2种:1.单编号法单编号法是以每个类为统一编号,如其有子类,则顺着该编号向后排。如水果编号为001,则苹果为水果的一类,则应为001001等等,这种方法易于统计,但不易于维护!如:想要将苹果类变为其它的类,且苹果类下有N层,那会是一件比较麻烦的事情!2.双编号法双编号也就是我们经常说的用ID与PARENTID来表示其父子关系,维护起来比较方便,但遍历会稍稍复杂一些!无论 阅读全文
摘要:
今天重点学习了TreeView的使用方法,基本的已经写了,现在主要想说的是如何显示数据库的资料,今天只是做了个较简单的例子,一个父节点下显示数据库中某个field的值。代码如下:procedure TMainForm.TreeviewShow(Sender: TObject);varnode1,subnode1: TTreeNode;i: Integer;beginTreeview1.Selected := nil;node1 := Treeview1.Items.AddFirst(nil,'user');ADOTable1.Active := True;while not A 阅读全文