- 浏览: 58785 次
- 性别:
- 来自: 杭州
最新评论
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 1030大家交 ... -
DELPHI常见事件、常用方法、属性使用范围说明
2008-06-19 22:24 2823属性使用范围说明 Action 一些组件标识与组件相连接的 ... -
DELPHI常见属性说明
2008-06-19 21:37 1509DELPHI常见属性说明: ALI ... -
Delphi中的时间操作技术
2008-06-19 13:45 2677在编写应用程序时,我 ... -
delphi用于时间操作的函数 (2)
2008-06-19 13:44 1703TDateTime类型与字符串型转换函数: DateTime ... -
delphi用于时间操作的函数(1)
2008-06-19 13:43 1338用于时间操作的函数 Date函数: 定义:Date: TDa ... -
数据库表TreeView树的快速生成
2008-06-18 21:57 1950根据数据表的内容生成TreeView树状结构,通常的做法就是从 ... -
Delphi中根据分类数据生成树形结构的最优方法
2008-06-18 21:52 3405新一篇: Delphi程序设计之--惯用法 一、 引言: ... -
Delphi下Treeview控件基于节点编号的访问
2008-06-04 17:31 1469有时我们需要保存和重建treeview控件,本文提供一种方法, ... -
Delphi中根据分类数据生成树形结构的最优方法
2008-06-04 17:27 1283很多系统都有类似于如下的表结构(table1): ID ... -
TreeView添加子节点和动态生成控件
2008-06-04 14:06 3877有这样一个TreeView,动态分有类A,B,C...(不一定 ... -
一种较简易的树型控件节点构造法
2008-06-03 21:42 963把数据库中的数据在树型控件(TreeView)中正确显示是较为 ... -
Delphi中树型控件的使用技巧
2008-06-03 13:40 1375我们都知道,开发者 ... -
TREEVIEW右键菜单示例
2008-06-03 13:31 3588在 Form1 上拖一个 TreeView 控件,然后参考一下 ... -
TreeView的使用
2008-06-03 13:09 1308TreeView 是一个显示树型结构的控件,每一个节点都是一个 ... -
在Dephi中使用TStream读写数据的技巧
2008-06-02 13:29 794在Dephi中提供了一个抽 ... -
Delphi环境下灵活的数据库树表实现
2008-06-02 13:27 12221 数据结构设计 在 ...
相关推荐
PHP DBTreeView是一个有用的Ajax Web控件,用于显示树视图。 该组件旨在从数据库中提取动态内容,以便逐步更新树的内容。 您不需要使用JavaScript即可使用此工具。 (卡顿)
这个类通过数据库中的数据自动添加到Treeview控件中,不过数据控件用的是ADO组件,另外数据库中存放Treeview节点数据表的结构位:ID:integer;PID:Integer;Caption:string;字段名成可以不同,但是类型必须相同! ...
dbtreeview
源代码。多年前作品,一直自己使用,解决了数据量大的时候显示慢的问题,使用dataset连接,现在看来,还有需改进的地方
一些与数据库连接的treeview函数。
继承于DBTree,专用于显示树形结构添加了新的属性: DataSet 数据集 KeyField 关键字段,即代码字段 CaptionField 节点显示字段 HeadCaption 第一个节点显示内容方法: BuildTree 生成树
在VB.net中,由于数据绑定功能的加强及语言特性的增强,可以很容易的实现TreeView与层次数据的绑定,本文将首先建立一个继承自TreeView的 dbTreeView,然后用一个单位(部门)的层次数据与dbTreeView进行数据绑定,并...
delphi自定义控件_treeview控件加强 Tmytreeview 对treeview控件加强 实现增删改及拖拽操作
delphi 下最好用的第三方Tree控件,功能强大,使用简单,速度快,样式好,支持dataset, 最新版本7.4,支持XE 10.3, XE10.4.
如何把数据库的列名作为根节点添加到dbtreeview
TREEVIEW 里显示数据库信息,可以用于delphi 7
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 ...
TmyDBtreeview 对treeview控件加强 实现增删改及拖拽操作 实现对数据库存取操作
要求也不高,只需要继承于TTreeView,载入数据表树结构,展示出一个TreeView,能简单的拖动,删除树结构的操作就行, 求人不如求自,既然简单的就自己来做一个控件吧!经过三天参看源码和网络技术资料搜索,基本学会...
内容索引:Delphi源码,数据库应用,Treeview,树控 Delphi读取数据库并建立Treeview树状视图目录,内部建立两组资料,一级仅12条数据,另一组则1200多条数据,并含四种测试方法,通过本程序可测试在读取两组不同资料时...
TmyDBtreeview 对treeview控件加强 增加数据感知功能 实现增删改及拖拽操作 实现对数据库存取操作 +++++++++++++++++++++ 增加dataactive属性 可在设计期间读树
v1.5+++++++++++++++++++++ 增加Ctrl+鼠标拖动为移动到目标节点的孩子末节点 增加alt+鼠标拖动为复制到目标节点的孩子末节点
DBTree结构的Delphi树形菜单实例源码,可实现添加节点时自动编号,可一次删除节点分类及子节点下所有分类,为了更好的演示与数据库的配合,本实例加入了Access数据库,相信通过这个实例,你对DBTree的使用会更进一层...
*Fix problem in Dev Dbtreeview. News In 4.82 05/11/2007 *Improve image quality of form icon. News In 4.81 04/30/2007 *Fix menu border problem. News In 4.80 04/20/2007 *Fix menu border problem in ...
基本包含delphi开发所需要的控件集合包包含:FastReport、Elib、DBTreeView、CoolTrayIcon、CPort等等