- 浏览: 59968 次
- 性别:
- 来自: 杭州
最新评论
很多系统都有类似于如下的表结构(table1):
ID Name ParentID
---------------------------------------------------------
001 电子类 0
002 金属类 0
003 电容电子 001
004 电阻电子 001
005 有色金属 002
而且大家都习惯于用树(TreeView)来显示,这样就可以很好的显示整个表的分类情况。但如果数据量多时会造成树的生成比较慢,特别是用递归来实现时要访问数据库的次数很多(根据层数),用在三层中效果更加显。在此提供一个好的方法来生成树形结构。
这个算法只访问一次数据库,具体的实现如下:
1、一次性从数据库中取出所有的数据,并按照ParentID字段进行排序,这样就保证每一条数据的父节点都在它的前面。
2、取出第一条数据画到树中,在添加到树中时先找到这条数据的父节点,如果没有 则将此记录直接作为树的第一级节点
3、如果还有数据,则取出来执行第2步,直到没有数据为止。
程序实现:
本程序将用一个stlID的TStringList变量来存放对应树中每一个节点的ID值,用FindParent函数来父节点。
function FindParent(ID:String):TTreeNode;
var
i:Integer;
begin
result:=nil;
for i:=TreeView1.Items.Count-1 downto 0 do
if stlID.Strings[i]=ID then
begin
result:=TreeView1.Items[i];
break;
end;
end;
//生成树
procedure CreateTree;
var
tmpNode:TTreeNode;
begin
Query1.close;
Query1.SQL.Text:='select * from table1 order by ParentID';
Query1.Open;
Query1.First;
while not Query1.Eof do
begin
tmpNode:=TreeView1.Items.AddChild(FindParent(Query1.FieldByName('ParentID').AsString),Query1.FieldByName('Name').AsString);
stlID.Add(Query1.FieldByName('ID').AsString);//记录ID
Query1.Next;
end;
end;
发表评论
-
脚本是在
2009-03-11 19:00 1092大家交 ... -
DELPHI常见事件、常用方法、属性使用范围说明
2008-06-19 22:24 2850属性使用范围说明 Action 一些组件标识与组件相连接的 ... -
DELPHI常见属性说明
2008-06-19 21:37 1561DELPHI常见属性说明: ALI ... -
Delphi中的时间操作技术
2008-06-19 13:45 2713在编写应用程序时,我 ... -
delphi用于时间操作的函数 (2)
2008-06-19 13:44 1731TDateTime类型与字符串型转换函数: DateTime ... -
delphi用于时间操作的函数(1)
2008-06-19 13:43 1369用于时间操作的函数 Date函数: 定义:Date: TDa ... -
数据库表TreeView树的快速生成
2008-06-18 21:57 1974根据数据表的内容生成TreeView树状结构,通常的做法就是从 ... -
Delphi中根据分类数据生成树形结构的最优方法
2008-06-18 21:52 3446新一篇: Delphi程序设计之--惯用法 一、 引言: ... -
我的DBTreeView--TreeView直接连接数据表
2008-06-04 17:34 1075unit Unit1; interface uses ... -
Delphi下Treeview控件基于节点编号的访问
2008-06-04 17:31 1504有时我们需要保存和重建treeview控件,本文提供一种方法, ... -
TreeView添加子节点和动态生成控件
2008-06-04 14:06 3933有这样一个TreeView,动态分有类A,B,C...(不一定 ... -
一种较简易的树型控件节点构造法
2008-06-03 21:42 1010把数据库中的数据在树型控件(TreeView)中正确显示是较为 ... -
Delphi中树型控件的使用技巧
2008-06-03 13:40 1417我们都知道,开发者 ... -
TREEVIEW右键菜单示例
2008-06-03 13:31 3623在 Form1 上拖一个 TreeView 控件,然后参考一下 ... -
TreeView的使用
2008-06-03 13:09 1341TreeView 是一个显示树型结构的控件,每一个节点都是一个 ... -
在Dephi中使用TStream读写数据的技巧
2008-06-02 13:29 820在Dephi中提供了一个抽 ... -
Delphi环境下灵活的数据库树表实现
2008-06-02 13:27 12621 数据结构设计 在 ...
相关推荐
在本文中,我们将深入探讨如何在Delphi中根据分类数据生成树形结构,特别是利用TreeView组件来实现这一目标。这在数据库应用、文件系统显示、组织结构展示等方面都有广泛应用。 首先,我们要理解Delphi中的TreeView...
在IT领域,尤其是在软件开发中,树形结构是一种常见的数据表示方式,特别是在处理层次关系时。"自动生成树形结构"这一技术主要应用于构建可视化界面,例如文件系统、组织架构或者数据库表之间的关系展示。本篇文章将...
"Delphi中快速实现数据库树形结构并实现Treeview导航表数据"是一个实用的技术主题,它涉及如何将数据库中的层级关系数据映射到图形化的Treeview组件上,使用户能够通过树形结构来浏览和操作数据。下面我们将深入探讨...
在Delphi编程环境中,开发人员经常需要将数据库中的数据以树形结构展示,这有助于用户直观地理解层次关系。在本教程中,我们将探讨如何快速地在Delphi中实现这样的功能,利用TreeView组件来导航数据库表的数据。我们...
Delphi基于DBTree方法生成树形菜单,菜单数据来自数据库。本树形菜单控件的数据库使用了Access,每次从数据库读取数据后,自动生成节点,节点自动编号,可一次删除节点成母节点,在一些大型的软件系统中,树形菜单的...
本文将详细讲解如何在 Delphi7 中使用树型控件,并自动根据数据集生成树型结构。 首先,理解 TTreeView 控件的基本操作。TTreeView 提供了一个可视化的组件,用于展示具有父节点和子节点的关系的数据。每个节点表示...
在Delphi中,我们可以使用TTreeview控件来创建基本的树形结构,但要实现无限级别的树形结构,通常需要自定义逻辑和递归算法。无限树形结构意味着节点可以有任意数量的子节点,且这些子节点也可以继续扩展出更多的子...
1. **TTreeView** 控件:Delphi提供的TTreeView控件是构建目录树视图的基本组件,它可以显示树形结构的数据,支持添加、删除、展开和折叠节点等操作。 2. **数据库访问组件**:如DBExpress、ADO等,用于连接和查询...
在Delphi中,"树形结构"通常指的是控件TTreeView,它是用户界面中的一个重要元素,用于展示层次化的数据。这种数据结构在很多场景下都非常实用,比如文件系统浏览、组织结构展示等。 在描述中提到的"delphi树形结构...
2. **创建数据源**:树形结构的数据通常包含父节点和子节点,因此你需要一个支持层级数据的数据源。这可以是自定义的类结构,或者是数据库中的表,通过关系字段表示父子关系。例如,你可以使用`DataSet`或`DataTable...
在《Delphi算法与数据结构》中,你将找到各种类型的算法实现,如排序算法(快速排序、冒泡排序、插入排序等)、搜索算法(二分查找、广度优先搜索、深度优先搜索等)以及图论中的算法(最短路径算法、最小生成树等)...
1. **TTreeView组件**:Delphi中用于显示树形结构的主要控件是TTreeView。我们可以使用TTreeView来创建和维护一个节点层次结构,每个节点代表一个地域,如国家、省份、城市等。 2. **数据绑定**:为了将地域数据与...
delphi比啊摹写生成最小生成树,给出点 就可以生成最小胜创术
本篇文章将深入探讨如何在Delphi中实现XML树的生成。 首先,我们需要了解Delphi中处理XML的主要组件——TXMLDocument。TXMLDocument是Indy库中的一个组件,它可以用来创建、加载和保存XML文档。在设计阶段,将...
Delphi使用递归算法读取数据库生成树形菜单,Delphi创建一个动态的树叉菜单,菜单内容基于递归法从数据库读取而来,请参考数据库显示,看数据库内的内容,这里仅仅给了附表和数据库中的数据创建树的示例,至于向...
在 Delphi 开发环境中,构建一个能够从数据库中动态生成目录树的应用程序是一项常见的任务,尤其是在数据管理和文件系统操作相关的项目中。这个标题"Delphi 从数据库生成目录树"暗示我们将利用 Delphi 的组件和...
以下是一个简化的步骤,展示了如何在Delphi中使用ZXing库生成二维码: 1. **引入ZXing库**:首先,你需要下载ZXing.Delphi库,这是一个为Delphi编译器优化的版本。将库的源代码导入到你的项目中,确保所有依赖项都...
总之,Delphi中从Excel导入数据的通用方法主要依赖于第三方组件,如JvExcel。通过这些组件,我们可以方便地访问Excel文件中的数据,并将其集成到Delphi应用程序中。当然,还有其他库和方法,如使用Microsoft的OLE ...
在Delphi中,这些数据结构可以通过内置的TArray、TList、TStack、TQueue等类进行实现,也可以自定义结构体或类来构建更复杂的数据结构。例如,数组提供了固定大小的连续内存空间,适合快速访问;链表则通过节点间的...
在Delphi中,数据结构包括数组、链表、栈、队列、树(如二叉树、AVL树、红黑树等)、图等。这些数据结构的选择和实现方式直接影响到程序的性能和可维护性。例如: 1. **数组**:是最基本的数据结构,提供了固定大小...