文档章节

学习 TTreeView [15] - 连接数据库 (作为给 "丁永其" 和 "DELPHI万岁" 两位朋友的回复)

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 873
阅读 8
收藏 0
本例效果图:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, DBClient, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    DBGrid1: TDBGrid;
    TreeView1: TTreeView;
    Splitter1: TSplitter;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  node: TTreeNode;
  List: TStringList;
  s: string;
begin
  {country.xml 是 Delphi 的数据示范文件, 也可以用 country.cds}
  ClientDataSet1.FileName := 'c:\temp\country.xml';
  ClientDataSet1.Active := True;
  DataSource1.DataSet := ClientDataSet1;
  DBGrid1.DataSource := DataSource1;
  {上面四行是让数据构件互相挂接, 也可以在设计时设定}

  {建立 List}
  List := TStringList.Create;
  List.Sorted := True;           {指定排序}
  List.Duplicates := dupIgnore;  {避免重复}

  {把数据加入到 TreeView}
  for i := 0 to ClientDataSet1.FieldDefs.Count - 1 do
  begin
    node := TreeView1.Items.Add(nil, ClientDataSet1.FieldDefs[i].Name); {字段名}

    {为避免数据重复, 先把数据给 List}
    List.Clear;
    ClientDataSet1.First;
    while not ClientDataSet1.Eof do
    begin
      List.Add(ClientDataSet1.Fields[i].value);
      ClientDataSet1.Next;
    end;
    {把 List 中的数据加入到 TreeView}
    for s in List do TreeView1.Items.AddChild(node, s);
  end;

  List.Free;
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  if Node.Parent <> nil then
  begin
    {下面的 Filter 其实就是 SQL 查询语句, 如果用其他数据库替换就是}
    ClientDataSet1.Filter := Node.Parent.Text + '=''' + Node.Text + '''';
    ClientDataSet1.Filtered := True;
  end else ClientDataSet1.Filtered := False; {选字段名时取消过虑}
end;

end.

 
 
 
 
 

 

 

  
附数据库样本: &lt;?xml version=&quot;1.0&quot; standalone=&quot;yes&quot;?&gt; &lt;DATAPACKET Version=&quot;2.0&quot;&gt; &lt;METADATA&gt; &lt;FIELDS&gt; &lt;FIELD attrname=&quot;Name&quot; fieldtype=&quot;string&quot; WIDTH=&quot;24&quot;/&gt; &lt;FIELD attrname=&quot;Capital&quot; fieldtype=&quot;string&quot; WIDTH=&quot;24&quot;/&gt; &lt;FIELD attrname=&quot;Continent&quot; fieldtype=&quot;string&quot; WIDTH=&quot;24&quot;/&gt; &lt;FIELD attrname=&quot;Area&quot; fieldtype=&quot;r8&quot;/&gt; &lt;FIELD attrname=&quot;Population&quot; fieldtype=&quot;r8&quot;/&gt; &lt;/FIELDS&gt; &lt;PARAMS DEFAULT_ORDER=&quot;1&quot; PRIMARY_KEY=&quot;1&quot; LCID=&quot;2057&quot;/&gt; &lt;/METADATA&gt; &lt;ROWDATA&gt; &lt;ROW Name=&quot;Argentina&quot; Capital=&quot;Buenos Aires&quot; Continent=&quot;South America&quot; Area=&quot;2777815&quot; Population=&quot;32300003&quot;/&gt; &lt;ROW Name=&quot;Bolivia&quot; Capital=&quot;La Paz&quot; Continent=&quot;South America&quot; Area=&quot;1098575&quot; Population=&quot;7300000&quot;/&gt; &lt;ROW Name=&quot;Brazil&quot; Capital=&quot;Brasilia&quot; Continent=&quot;South America&quot; Area=&quot;8511196&quot; Population=&quot;150400000&quot;/&gt; &lt;ROW Name=&quot;Canada&quot; Capital=&quot;Ottawa&quot; Continent=&quot;North America&quot; Area=&quot;9976147&quot; Population=&quot;26500000&quot;/&gt; &lt;ROW Name=&quot;Chile&quot; Capital=&quot;Santiago&quot; Continent=&quot;South America&quot; Area=&quot;756943&quot; Population=&quot;13200000&quot;/&gt; &lt;ROW Name=&quot;Colombia&quot; Capital=&quot;Bagota&quot; Continent=&quot;South America&quot; Area=&quot;1138907&quot; Population=&quot;33000000&quot;/&gt; &lt;ROW Name=&quot;Cuba&quot; Capital=&quot;Havana&quot; Continent=&quot;North America&quot; Area=&quot;114524&quot; Population=&quot;10600000&quot;/&gt; &lt;ROW Name=&quot;Ecuador&quot; Capital=&quot;Quito&quot; Continent=&quot;South America&quot; Area=&quot;455502&quot; Population=&quot;10600000&quot;/&gt; &lt;ROW Name=&quot;El Salvador&quot; Capital=&quot;San Salvador&quot; Continent=&quot;North America&quot; Area=&quot;20865&quot; Population=&quot;5300000&quot;/&gt; &lt;ROW Name=&quot;Guyana&quot; Capital=&quot;Georgetown&quot; Continent=&quot;South America&quot; Area=&quot;214969&quot; Population=&quot;800000&quot;/&gt; &lt;ROW Name=&quot;Jamaica&quot; Capital=&quot;Kingston&quot; Continent=&quot;North America&quot; Area=&quot;11424&quot; Population=&quot;2500000&quot;/&gt; &lt;ROW Name=&quot;Mexico&quot; Capital=&quot;Mexico City&quot; Continent=&quot;North America&quot; Area=&quot;1967180&quot; Population=&quot;88600000&quot;/&gt; &lt;ROW Name=&quot;Nicaragua&quot; Capital=&quot;Managua&quot; Continent=&quot;North America&quot; Area=&quot;139000&quot; Population=&quot;3900000&quot;/&gt; &lt;ROW Name=&quot;Paraguay&quot; Capital=&quot;Asuncion&quot; Continent=&quot;South America&quot; Area=&quot;406576&quot; Population=&quot;4660000&quot;/&gt; &lt;ROW Name=&quot;Peru&quot; Capital=&quot;Lima&quot; Continent=&quot;South America&quot; Area=&quot;1285215&quot; Population=&quot;21600000&quot;/&gt; &lt;ROW Name=&quot;United States of America&quot; Capital=&quot;Washington&quot; Continent=&quot;North America&quot; Area=&quot;9363130&quot; Population=&quot;249200000&quot;/&gt; &lt;ROW Name=&quot;Uruguay&quot; Capital=&quot;Montevideo&quot; Continent=&quot;South America&quot; Area=&quot;176140&quot; Population=&quot;3002000&quot;/&gt; &lt;ROW Name=&quot;Venezuela&quot; Capital=&quot;Caracas&quot; Continent=&quot;South America&quot; Area=&quot;912047&quot; Population=&quot;19700000&quot;/&gt; &lt;/ROWDATA&gt; &lt;/DATAPACKET&gt;

本文转载自:http://www.cnblogs.com/del/archive/2008/03/20/1114450.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
老罗这次鸟巢吹牛,为他背后撑腰的是…

老罗今天的相声真的是还不错,基本上是理解万岁与表演共存哈~ 这场相声大会上,记忆最深的是他要改变世界~结果真的是很给力,要发布次世代的计算机——坚果TNT工作站! 在工程机TNT电脑的演示...

m7720eiosi6oa9
05/15
0
0
远程数据库对象--Mmzrmo4Delphi

远程数据库对象。 很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需...

匿名
2010/03/02
3.2K
0
GO 语言 UI 组件库 - govcl

由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的想法Delphi(Lazarus)有些许多优秀的VCL(LCL)组件,不拿来使用太可惜了。所以就索性做了一套。目前支...

不在乎y
2017/10/10
6.9K
17
PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程

这两天刚装好Windows 7,碰巧前段时间有朋友问我Windows下如何安装搭建PHP环境,所以打算勤劳下,手动一步步搭建PHP环境,暂且不使用PHP环境搭建软件了,在此详细图解在Windows 7下安装配置P...

一别经年
2014/01/13
0
0
老牌集成开发环境 Delphi 发布免费社区版

Delphi® - 社区版 Delphi Community Edition与我们的自由开发人员,初创公司,学生和非营利组织免费共享,是一个全功能的IDE,用于从单个Delphi代码库(有限的商业使用许可证)构建iOS,And...

vga
07/23
0
56

没有更多内容

加载失败,请刷新页面

加载更多

职场老人谈:Linux学习分享

随着Linux系统慢慢渗透到生活的方方面面,对Linux的基本操作就越来越必要了。 我是一位软件测试工程师,初次接触Linux主要是因为需要配置Linux服务器。因为Linux系统是一套开源的操作系统,安...

linux-tao
17分钟前
1
0
Oracle chr() ascii()

函数简介 实用函数 chr() 和 ascii() chr() 函数将ASCII码转换为字符: ASCII码 –> 字符; ascii() 函数将字符转换为ASCII码: 字符 –> ASCII码; 在 Oracle 中 chr() 函数和 ascii() 是一对...

taadis
18分钟前
0
0
职场老人谈:Linux学习分享

随着Linux系统慢慢渗透到生活的方方面面,对Linux的基本操作就越来越必要了。 我是一位软件测试工程师,初次接触Linux主要是因为需要配置Linux服务器。因为Linux系统是一套开源的操作系统,安...

linuxprobe16
27分钟前
0
0
Confluence 6 Windows 中以服务方式自动重启的原因

针对长时间使用的 Confluence,我们推荐你配置 Confluence 自动随操作系统重启而启动。针对一些 Windows 的服务器,这意味着需要让 Confluence 以服务的方式运行。 有下面 2 种方式来以服务的...

honeymose
今天
3
0
day93-20180920-英语流利阅读-待学习

时尚之觞:外表光鲜靓丽,其实穷得要命 Lala 2018-09-20 1.今日导读 讲到时尚界,我们脑海里浮现的可能都是模特和设计师光鲜靓丽、从容潇洒的模样。可是,最近在法国出版的一本书却颠覆了我们...

飞鱼说编程
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部