- 浏览: 59943 次
- 性别:
- 来自: 杭州
最新评论
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, Mask, ImgList; type TForm1 = class(TForm) TreeView1: TTreeView; ImageList1: TImageList; DataSource1: TDataSource; DBEdit1: TDBEdit; Label1: TLabel; Label2: TLabel; DBEdit2: TDBEdit; Table1: TTable; Label3: TLabel; DBNavigator1: TDBNavigator; Label4: TLabel; DBEdit3: TDBEdit; DBEdit4: TDBEdit; procedure FormCreate(Sender: TObject); procedure TreeView1Change(Sender: TObject; Node: TTreeNode); procedure DataSource1StateChange(Sender: TObject); procedure Table1AfterInsert(DataSet: TDataSet); procedure Table1BeforeDelete(DataSet: TDataSet); procedure Table1BeforeEdit(DataSet: TDataSet); procedure Table1AfterDelete(DataSet: TDataSet); procedure Table1AfterPost(DataSet: TDataSet); private function GetFieldList: TStringList; { Private-Declarationen } public { Public-Declarationen } end; var Form1: TForm1; FieldList: TStringList; implementation uses TreeFunc; {$R *.DFM} function TForm1.GetFieldList: TStringList; begin FieldList.clear; FieldList.add(Table1.fieldbyname('Country').asstring); FieldList.add(Table1.fieldbyname('city').asstring); FieldList.add(Table1.fieldbyname('Company').asstring); Result := FieldList; end; procedure TForm1.FormCreate(Sender: TObject); begin FieldList := TStringList.create; TreeView1.items.BeginUpdate;//forbid treeview update Table1.first; while not Table1.eof do begin TreeAddItem(TreeView1, GetFieldList, Table1.getBookmark, false);//生成结点 Table1.next; end; FieldList.clear; TreeView1.Alphasort; TreeView1.items.Endupdate; //make first record selected: TreeView1.items[2].selected := true; end; procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode); begin Datasource1.enabled := Node.data <> nil; if DataSource1.enabled then Table1.Gotobookmark(node.data); end; procedure TForm1.DataSource1StateChange(Sender: TObject); var ItemList: TStringList; Node: TTreeNode; begin end; procedure TForm1.Table1AfterInsert(DataSet: TDataSet); begin FieldList.clear; end; procedure TForm1.Table1BeforeDelete(DataSet: TDataSet); begin GetFieldList; end; procedure TForm1.Table1BeforeEdit(DataSet: TDataSet); begin GetFieldList; end; procedure TForm1.Table1AfterDelete(DataSet: TDataSet); var CascadeDeleteLevel: Integer; begin CascadeDeleteLevel := 0; TreeDeleteItem(TreeView1, FieldList, CascadeDeleteLevel); end; procedure TForm1.Table1AfterPost(DataSet: TDataSet); begin TreeView1.items.beginUpdate; if FieldList.count > 0 then TreeDeleteItem(TreeView1, Fieldlist, 0); TreeView1.selected := TreeAddItem(TreeView1, GetFieldlist, Table1.getbookmark, True); TreeView1.items.endUpdate; end; end. ///------------------------ unit TreeFunc; interface uses Windows, Messages, SysUtils, Classes, Graphics, ComCtrls, DB, Forms, Dialogs; function TreeFindItem(Sender: TTreeView; NodeItem: TTreeNode; Name: String): TTreeNode; function TreeAddItem(Sender: TTreeView; ItemList: TStrings; Bookmark: TBookmark; Resort: Boolean): TTreeNode; function TreeGetItem(Sender: TTreeView; ItemList: TStrings): TTreeNode; procedure TreeDeleteItem(Sender: TTreeView; ItemList: TStrings; Level: Integer); implementation function TreeAddItem(Sender: TTreeView; ItemList: TStrings; Bookmark: TBookmark; Resort: Boolean): TTreeNode; var ThisNode, Node: TTreeNode; I: Integer; begin Node := nil; //nil = level 0 has no parent node //this is checked by TreeFindItem for I := 0 to Itemlist.count -1 do begin //for ThisNode := TreeFindItem(Sender, node, Itemlist[i]); if ThisNode <> nil then Node := ThisNode else begin if I < Itemlist.count -1 then begin if I = 0 then Node := Sender.items.Add(Node, Itemlist[i]) else Node := Sender.items.AddChild(Node, Itemlist[i]); end else begin if I = 0 then Node := Sender.items.AddObject(Node, Itemlist[i], Bookmark) else Node := Sender.items.AddChildObject(Node, Itemlist[i], Bookmark); end; Node.stateIndex := Node.level + 1; if Resort and (Node.parent <> nil) then Node.parent.alphasort; end; end; //for Result := Node; end; function TreeFindItem(Sender: TTreeView; NodeItem: TTreeNode; Name: String): TTreeNode; begin if NodeItem = nil then NodeItem := Sender.items.getfirstnode else NodeItem := NodeItem.getfirstchild; //NodeItem is now the first item of the desired level //if this level has no items, NodeItem is nil if (NodeItem <> nil) and (NodeItem.text <> Name) then repeat NodeItem := NodeItem.getnextsibling; until (NodeItem = nil) or (NodeItem.text = Name); Result := NodeItem; end; function TreeGetItem(Sender: TTreeView; ItemList: TStrings): TTreeNode; begin Result := TreeAddItem(Sender, Itemlist, nil, false); end; procedure TreeDeleteItem(Sender: TTreeView; ItemList: TStrings; Level: Integer); var Node, Parent: TTreeNode; begin Node := TreeGetItem(Sender, ItemList); while Node.level >= Level do begin Parent := Node.parent; Node.delete; if (Parent = nil) or (Parent.hasChildren) then break; Node := Parent; end; end; end.
发表评论
-
脚本是在
2009-03-11 19:00 1092大家交 ... -
DELPHI常见事件、常用方法、属性使用范围说明
2008-06-19 22:24 2849属性使用范围说明 Action 一些组件标识与组件相连接的 ... -
DELPHI常见属性说明
2008-06-19 21:37 1560DELPHI常见属性说明: ALI ... -
Delphi中的时间操作技术
2008-06-19 13:45 2713在编写应用程序时,我 ... -
delphi用于时间操作的函数 (2)
2008-06-19 13:44 1731TDateTime类型与字符串型转换函数: DateTime ... -
delphi用于时间操作的函数(1)
2008-06-19 13:43 1368用于时间操作的函数 Date函数: 定义:Date: TDa ... -
数据库表TreeView树的快速生成
2008-06-18 21:57 1973根据数据表的内容生成TreeView树状结构,通常的做法就是从 ... -
Delphi中根据分类数据生成树形结构的最优方法
2008-06-18 21:52 3445新一篇: Delphi程序设计之--惯用法 一、 引言: ... -
Delphi下Treeview控件基于节点编号的访问
2008-06-04 17:31 1503有时我们需要保存和重建treeview控件,本文提供一种方法, ... -
Delphi中根据分类数据生成树形结构的最优方法
2008-06-04 17:27 1324很多系统都有类似于如下的表结构(table1): ID ... -
TreeView添加子节点和动态生成控件
2008-06-04 14:06 3932有这样一个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 数据结构设计 在 ...
相关推荐
1. 下载dbtreeview-distrib-1.0.2压缩包,解压后将文件夹上传到服务器的适当位置。 2. 引入PHP DBTreeView的CSS和JavaScript文件到您的HTML页面。 3. 创建PHP脚本来连接数据库,获取数据,并将其格式化为...
这个项目可能包含了实现数据库连接和数据在treeview中显示的特定功能。 在提供的压缩包文件中,我们可以看到以下几个关键文件: 1. **A.BAT**:这可能是一个批处理文件,用于自动化执行某些命令或脚本,比如编译或...
"dbtreeview"标签表明Virtual-TreeView支持与数据库的紧密集成。这使得开发者可以轻松地将数据库中的记录以树形结构显示,用户可以通过节点的展开和折叠来查看不同级别的数据。控件提供了与各种数据源(如TDataSet)...
"dbtreeview"是一个基于Delphi开发的源代码项目,主要用于解决大数据量时树形视图控件(TreeView)显示性能问题。在多年前,开发者就已经创建并个人使用此工具,通过利用Dataset连接数据,提升了在处理大量数据时的...
本主题将深入探讨如何对Delphi的内置TreeView控件进行增强,以实现更丰富的功能,例如增删改及拖拽操作。我们将以一个名为`TmyTreeView`的自定义控件为例进行讲解。 首先,`TmyTreeView`是对原生`TTreeView`控件的...
2. **数据绑定**:dbtreeview可以直接绑定到数据集(如TDataSet或TDatasource),这样当数据库中的数据发生变化时,控件会自动更新。同时,用户对控件的操作(如节点的展开、折叠、选择)也能反馈到数据集,实现了...
总的来说,DBTREEVIEW是一个强大的工具,结合了VirtualTreeView、DynamicTreeView和ThemeManager等组件,提供了一种高效、灵活且美观的方式来在Delphi 7应用中展示数据库数据。它适合那些需要处理复杂数据结构,并...
这个类通过数据库中的数据自动添加到Treeview控件中,不过数据控件用的是ADO组件,另外数据库中存放Treeview节点数据表的结构位:ID:integer;PID:Integer;Caption:string;字段名成可以不同,但是类型必须相同! ...
继承于DBTree,专用于显示树形结构添加了新的属性: DataSet 数据集 KeyField 关键字段,即代码字段 CaptionField 节点显示字段 HeadCaption 第一个节点显示内容方法: BuildTree 生成树
在VB.net中,由于数据绑定功能的加强及语言特性的增强,可以很容易的实现TreeView与层次数据的绑定,本文将首先建立一个继承自TreeView的 dbTreeView,然后用一个单位(部门)的层次数据与dbTreeView进行数据绑定,并...
7. **XVJIE2002_DBTreeView.gif**:这可能是一个示例图,展示了如何在TreeView中显示从数据库中获取的数据。 8. **db1.mdb**:这是一个Microsoft Access数据库文件,很可能包含了3个字段的表,供程序读取并构建...
如何把数据库的列名作为根节点添加到dbtreeview
- 这个控件可以直接与数据库进行连接,如通过ADO(ActiveX Data Objects)或BDE(Borland Database Engine)等数据访问技术,与各种数据库(如SQL Server、Oracle、MySQL等)进行交互。 - 数据库操作可能包括:...
1.34 for VCL / Borland Compilers Included in Packs: ExpressQuantumPack for Delphi and C++Builder, VCL Subscription <br>Components TreeView DBTreeView TreeView Edit DBTreeView Edit ...
要求也不高,只需要继承于TTreeView,载入数据表树结构,展示出一个TreeView,能简单的拖动,删除树结构的操作就行, 求人不如求自,既然简单的就自己来做一个控件吧!经过三天参看源码和网络技术资料搜索,基本学会...
内容索引:Delphi源码,数据库应用,Treeview,树控 Delphi读取数据库并建立Treeview树状视图目录,内部建立两组资料,一级仅12条数据,另一组则1200多条数据,并含四种测试方法,通过本程序可测试在读取两组不同资料时...
1. 数据绑定:DBTree控件能够直接与数据库连接,自动加载并显示数据表中的记录。开发者可以设置数据源,如SQL查询或ADO连接,使得树形节点与数据库记录一一对应。 2. 层级结构:DBTree控件支持多层节点,每个节点...
在C#编程中,开发用户界面时,树形控件(TreeView)和列表视图(ListView)是非常常用的数据展示组件。本项目针对这两个控件进行了性能优化,实现了双缓冲技术,提高了显示效率,降低了闪烁现象,提升了用户体验。...
数据源通常连接到一个数据访问组件(如TTable、TQuery或TADOQuery),这样myDBTreeView就可以显示数据集中的字段,并允许用户进行增删改查操作。myDBTreeView的每个节点都对应数据集中的一个记录,节点的展开和折叠...
TmyDBtreeview 对treeview控件加强 增加数据感知功能 实现增删改及拖拽操作 实现对数据库存取操作 +++++++++++++++++++++ 增加dataactive属性 可在设计期间读树