用数据表创建树

原创 2004年11月04日 10:57:00

数据库结构:
字段      类型
ID          整型     索引(无重复)
name      文本
father     整型



//tree初始化
procedure TForm1.FormActivate(Sender: TObject);
  var i:integer;
begin
  treeview1.Items.BeginUpdate;
  while not(adotable1.Eof) do
  begin
    if ADOTable1.FieldValues['father']=0 then
      treeview1.Items.addchild(treeview1.DropTarget,ADOTable1.FieldValues['name'])
    else
    begin
      i:=0;
      repeat
        if treeview1.Items.Item[i].Text = ADOTable1.Lookup('ID',ADOTable1.FieldValues['father'],'name') then
        begin
          treeview1.Items.AddChild(treeview1.Items.Item[i],ADOTable1.FieldValues['name']);
          break;
        end;
        i:=i+1;
      until i>adotable1.RecordCount;
    end;
    ADOTable1.next;
  end;
  treeview1.Items.EndUpdate;
end;

//tree添加
procedure TForm1.Button1Click(Sender: TObject);
  var i:integer;
begin
  adotable1.Last;
  i:=adotable1.FieldValues['ID'];
  if checkbox1.Checked=false then
  begin
    adotable1.InsertRecord([edit1.Text,adotable1.Lookup('name',treeview1.Selected.Text,'ID'),i+1]);
    treeview1.Items.AddChild(treeview1.Selected,edit1.Text);
  end
  else
  begin
    adotable1.InsertRecord([edit1.Text,0,i+1]);
    treeview1.Items.AddChild(treeview1.DropTarget,edit1.Text);
  end;
end;

//tree删除
procedure TForm1.Button3Click(Sender: TObject);
begin
  if treeview1.Selected.HasChildren then
  begin
    showmessage('含有子项,不能删除.');
    abort;
  end;
  begin
    adotable1.Locate('name',treeview1.Selected.Text,[loPartialKey]);
    adotable1.Delete;
    treeview1.Items.Delete(treeview1.Selected);
  end;
end;

//tree图标
procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
  if Node.Expanded then
    Node.ImageIndex := 1
  else
    Node.ImageIndex := 0
end;

//tree图标
procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject;Node: TTreeNode);
begin
  node.SelectedIndex:=node.ImageIndex;
end;

//list初始化
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
  var p:pointer;
begin
  listview1.Items.Clear;
  if adotable2.Locate('class',adotable1.Lookup('name',treeview1.Selected.Text,'ID'),[loPartialKey])=true then
  begin
    p:=listview1.Items.Add;
    listview1.Items.Item[listview1.Items.IndexOf(p)].Caption:=adotable2.FieldValues['name'];
    listview1.Items.Item[listview1.Items.IndexOf(p)].SubItems.Add(adotable2.FieldValues['url']);
  end;
end;

//list添加
procedure TForm1.Button2Click(Sender: TObject);
  var p:pointer;
begin
  p:=listview1.Items.Add;
  listview1.Items.Item[listview1.Items.IndexOf(p)].Caption:=edit2.Text;
  listview1.Items.Item[listview1.Items.IndexOf(p)].SubItems.Add(edit3.Text);
  adotable2.InsertRecord([adotable1.Lookup('name',treeview1.Selected.Text,'ID'),edit2.Text,edit3.Text]);
end;

//list删除
procedure TForm1.Button4Click(Sender: TObject);
begin
  adotable2.Locate('name',listview1.Selected.Caption,[loPartialKey]);
  adotable2.Delete;
  listview1.Selected.Delete;
end;

创建树 - #号法

#创建树,让树的每一个节点都变成度数为2的树 通过先序遍历124###3##可以唯一确定一棵树。 // nonrecursion.cpp // 对树的操作 #define _CRT_SECU...
  • zyq522376829
  • zyq522376829
  • 2015年07月19日 18:37
  • 966

数据结构之双亲表示法建树和操作

树的双亲表示法假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指 示其双亲结点到链表中的位置 。也就是说,每个结点除了知道自己是谁以外,还知道 它的双亲在哪里...
  • doubleselect
  • doubleselect
  • 2014年10月09日 09:21
  • 1746

递归创建树

示例一:参见lucene创建Query树源码 示例二 public class ItemClassifyTree { @ApiModelProperty(value = "...
  • asdfsadfasdfsa
  • asdfsadfasdfsa
  • 2018年01月17日 17:48
  • 63

java 链表 树

java 链表 树 不用返回值和用返回值的二叉树插入Java代码 若使用无返回值的insert方法,new的对象在方法结束后就被销毁,插入失败 应使用node.left = new node();...
  • neuldp
  • neuldp
  • 2016年04月21日 19:13
  • 267

创建树

package button2; import java.awt.*; import javax.swing.*; import javax.swing.tree.DefaultMutableT...
  • daijunyiluoshiyong
  • daijunyiluoshiyong
  • 2017年10月10日 12:51
  • 28

java对于树的构建

package tree; import java.util.ArrayList; import java.util.List; import org.apache.commons.coll...
  • a137268431
  • a137268431
  • 2013年12月12日 15:45
  • 2023

c++递归创建二叉树

建树的两种递归版本:1.无返回值版(较易理解)#include #include using namespace std; class BiTreeNode { public: BiTre...
  • qq_34385263
  • qq_34385263
  • 2016年10月28日 20:34
  • 120

建树/图的方法

建树: 二叉树: 法一:题目按照节点顺序给出树的值和左右子树的编号,可以把信息直接存在结构体数组,不用再建树,不过得找出树根 法二:题目按照节点顺序给出树的值和左右子树的编号,先找到树根,再层序建树。...
  • ccDLlyy
  • ccDLlyy
  • 2017年02月14日 13:56
  • 653

通过数据库数据构建树结构(二)

在本教程中,我们将向我们介绍如何通过数据库中的数据动态地构建树结构。我们将使用NetBeans IDE 6.0构建一个由两个页面组成的应用程序,其中第一页包含一个JSF 1.2(Woodstock)树...
  • java060515
  • java060515
  • 2008年04月30日 13:55
  • 3028

递归算法创建树

 代码如下:  namespace Smartkid.ESchool.Web.UserControl...{    using System;    using System.Data;    usi...
  • nileel
  • nileel
  • 2007年11月15日 13:22
  • 1197
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用数据表创建树
举报原因:
原因补充:

(最多只允许输入30个字)