文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 873
阅读 8
收藏 0
点赞 0
评论 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
博文 2004
码字总数 14107
作品 0
深圳
程序员
远程数据库对象--Mmzrmo4Delphi

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

匿名 ⋅ 2010/03/02 ⋅ 0

老罗这次鸟巢吹牛,为他背后撑腰的是…

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

m7720eiosi6oa9 ⋅ 05/15 ⋅ 0

GO 语言 UI 组件库 - govcl

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

不在乎y ⋅ 2017/10/10 ⋅ 17

PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程

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

一别经年 ⋅ 2014/01/13 ⋅ 0

DELPHI如何连上MONGODB数据库啊?

有个朋友的公司一直是用delphi开发的内部系统, 现在想迁移到mongodb数据库。 可是没有现成的连接上的例子啊,各位给个提示啊

terriphe ⋅ 2012/05/28 ⋅ 9

从零开始玩人工智能-机器人服务-01

原来并不打算写下来,因为除了很久以前写Delphi,后来写一点脚本,基本上没怎么写过代码。 时代不同了,年纪也大了,不知道自己还能不能学习多少东西。想想,要不就当学习笔记吧,也许后面就...

HaoHu ⋅ 2017/10/03 ⋅ 0

编写Flex 阅读器 (二) --------------总结性学习

首先很感谢两位朋友@cyper和@giantchen2011 两位朋友对博文的支持。你们的回复是我的动力。我刚刚开始写博客,内容文字生涩。请大家见谅。也请指正不足之处。 起几天看了书后发现,Flex和Act...

暂时想不到好名字 ⋅ 2012/10/04 ⋅ 0

普华永道:拥抱人工智能和物联网,开启变革新时代(附下载)

报告下载:添加199IT官方微信【i199it】,回复关键词【拥抱人工智能和物联网】 世界各地的企业正加速利用物联网构建全新产品链和服务网,在此背景下,新型业务机会和新型业务模式层出不穷。由...

d1j4robv ⋅ 2017/12/11 ⋅ 0

QQ 空间都能抢红包了,可是为什么我觉得它注定失败?

     多年前老师问丁叔:你整天低头刷空间能赚到钱么?今天丁叔终于可以理直气壮的说一句:我能。没错,前几天腾讯推出了 QQ 空间红包功能,丁叔听到这个消息是一脸懵逼,仔细想想,这事...

庖丁开发 ⋅ 2016/12/23 ⋅ 0

嘶吼放血大派送 DEF CON China 门票免费拿!!!

     5月11日,传说中全球最大的极客盛宴DEF CON将首次来到中国举办,这一消息无疑让中国安全圈为之沸腾。DEF CON的落户中国不仅仅带来了全球最前沿的安全领域技术研究成果,更为中国的极...

嘶吼RoarTalk ⋅ 04/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 17分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 23分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 25分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 33分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 36分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 58分钟前 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部