treeview自动从表中添加标题和列值做目录的方法2,该方法是借鉴万一老师的

http://www.cnblogs.com/del/archive/2008/05/15/1114450.html

首先界面上添加treeview组件,然后在treeview的onchange事件里这样写:

因为要用到定义个过程,需要在接口声明里引用


  private
    { Private declarations }

    /// <summary>
    /// 刷新左侧treeView
    /// </summary>
    procedure RefreshLeftTree(Sender: TObject);
  public
    { Public declarations }
  end;

procedure TForm3.RefreshLeftTree(Sender: TObject);
var
  i: Integer;
  node: TTreeNode;
  List: TStringList;
  s,fieldName: string;
begin
  //刷新前全部清空原来的列表
  TreeView1.Items.Clear;
  {建立 List}
  List := TStringList.Create;
  List.Sorted := True;           {指定排序}
  List.Duplicates := dupIgnore;  {避免重复}

  {把数据加入到 TreeView}
    do
  begin
    fieldName := frmDataPool.qry需要做的事.FieldDefs[i].Name;
    if not 'ID说明附件事情'.Contains(fieldName) then
    begin
      node := TreeView1.Items.Add(nil, fieldName); {字段名}
      {为避免数据重复, 先把数据给 List}
      List.Clear;
      frmDataPool.qry需要做的事.First;
      while not frmDataPool.qry需要做的事.Eof do
      begin
        List.Add(frmDataPool.qry需要做的事.FieldByName(fieldName).AsString);
        frmDataPool.qry需要做的事.Next;
      end;
      {把 List 中的数据加入到 TreeView}
      for s in List do
      begin
        TreeView1.Items.AddChild(node, s);
      end;
    end;
  end;
  List.Free;
end;

且增加新记录后也要刷新下目录才合理

procedure TForm3.Button3Click(Sender: TObject);
begin
Form4.ShowModal;//showmodal可以确保这个窗口关闭后才执行下一步
//增加后刷新下
RefreshLeftTree(Sender);
end;

onchange的触发事件代码:

procedure TForm3.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  if Node.Parent <> nil then
  begin

    {下面的 Filter 其实就是 SQL 查询语句, 如果用其他数据库替换就是}
    frmDataPool.qry需要做的事.Filter := Node.Parent.Text + '=''' + Node.Text + '''';
    frmDataPool.qry需要做的事.Filtered := True;
  end else frmDataPool.qry需要做的事.Filtered := False; {选字段名时取消过虑}
end;

treeview自动从表中添加标题和列值做目录的方法2的更多相关文章

  1. SQL将一个表中的某一列值全部插入到另一个表中

    1.  SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=selec ...

  2. Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤

    总结: 1.计算某列值(数值or字符串)重复的次数 select 列1,count( 列1 or *) count1  from table1 group by 列1 输出的表为:第一列是保留唯一值的 ...

  3. oracle 11g在大表中添加字段及默认值--加速

    今天遇到这个问题了.简单的增加语句,默认SQLPLUS执行,却会超时. 要增加客户端的TIMEOUT时间才可以解决.(感觉超过两三分钟,默认超时30秒) 另外, 也可以用两步操作(1,增加字段,2,修 ...

  4. FOR XML PATH做为数据表中单列或者多列的字符串拼接的方法,放到一列中去,很好用。

    先看看自己弄得例子,SELECT sName+',',hoppy+','  FROM student2 where hoppy='游泳' FOR XML PATH('')--PATH后面跟的是行标题, ...

  5. 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

    使用MySQL Workbench建立数据库,建立新的表,向表中添加数据 初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MyS ...

  6. ArcMap图层属性表中添加图片

    一看标题是不是有点懵?懵就对了!刚接触到的时候我也有点懵,属性表不是都是文本啊数字啊之类的格式,怎么还可以存图片,下面就带大家来看看吧! 一.关于图层入库问题 图层进入数据库和图层以shp格式存储时, ...

  7. Hibrenate实现根据实体类自动创建表或添加字段

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 实现: 在配置hibernate的配置文件中将hbm2ddl.auto设置为update,如:Xml代码&l ...

  8. 在数据表中添加一个字段的SQL语句怎么写

    如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识.   通用式: alter table [表名] add [字段名] 字 ...

  9. Oracle 11g对大表中添加DEFAULT值的NOT NULL字段速度有大幅度的提升

    在一张2000万的表上增加了一个字段并字段一个默认值,执行这条语句(alter table tablename add new_col default ‘col’)一个小时没有执行完,问我有没有其他解 ...

随机推荐

  1. Bucket Sort - leetcode [桶排序]

    桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里.每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序).桶排序是鸽巢排序 ...

  2. iOS正则表达

    问题引入 1.要验证用户输入的密码长度是否满足6~18位的长度 ^.{6,18}$ 2.固定电话都是0区号-八位数字的格式,那么正则表达式的匹配如下 ^0\\d{2}\-?\\d{8}$ 3.对于密码 ...

  3. ECS活动真实IP (前端存在SLB)

    log_format main 'realip:$http_x_forwarded_for slbip:$remote_addr-$remote_user [$time_local] "$r ...

  4. 拿来之笔 希望铭记 笔记 出处 http://www.jianshu.com/p/acb8885283dc

    最近有机会对不同岗位的应聘者进行面试,其中有架构师.技术经理.开发岗位.谈谈几个印象深刻的. 面试者一,女性.重点大学硕士,从事软件技术工作十四年,应聘架构师岗位.按照套路问了下对于软件架构的认识和理 ...

  5. Unity3DGUI:GUILayout

    显示效果,注意GUILayout控件默认垂直布局,且在水平布局模块里控件大小默认按控件内容来显示,因此对于水平滑块HorizontalSlider来说需要自定义大小避免变形

  6. hdu1030

    #include<stdio.h>#include<math.h>void find(int n,int &l,int &r,int &level){ ...

  7. LeetCode 395. Longest Substring with At Least K Repeating Characters C#

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  8. web.confgi转换,web发布时发布配置(debug/release)生成不同的配置文件

    在web.config下有两个config文件,分比为:web.debug.config和web.replease.config文件,打开之后可以看到demo,根据demo修改后即可在发布时根据选择的 ...

  9. 【翻译】创建Cordova项目

    下载或者更新Node.js到最新版本 在电脑终端输入命令来安装Cordova CLI sudo npm install -g cordova 如果使用Windows电脑,需要在使用cmd命令行输入 n ...

  10. DIV+CSS 让同一行的图片和文字对齐

    在div+css布局中,如果一行(或一个DIV)内容中有图片和文字的话,图片和文字往往会一个在上一个在下,这是一个新手都会遇到问题,我的解决方法有三: 1.添加CSS属性:vertical-align ...