treeview自动从表中添加标题和列值做目录的方法2
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的更多相关文章
- SQL将一个表中的某一列值全部插入到另一个表中
1. SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=selec ...
- Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤
总结: 1.计算某列值(数值or字符串)重复的次数 select 列1,count( 列1 or *) count1 from table1 group by 列1 输出的表为:第一列是保留唯一值的 ...
- oracle 11g在大表中添加字段及默认值--加速
今天遇到这个问题了.简单的增加语句,默认SQLPLUS执行,却会超时. 要增加客户端的TIMEOUT时间才可以解决.(感觉超过两三分钟,默认超时30秒) 另外, 也可以用两步操作(1,增加字段,2,修 ...
- FOR XML PATH做为数据表中单列或者多列的字符串拼接的方法,放到一列中去,很好用。
先看看自己弄得例子,SELECT sName+',',hoppy+',' FROM student2 where hoppy='游泳' FOR XML PATH('')--PATH后面跟的是行标题, ...
- 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
使用MySQL Workbench建立数据库,建立新的表,向表中添加数据 初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MyS ...
- ArcMap图层属性表中添加图片
一看标题是不是有点懵?懵就对了!刚接触到的时候我也有点懵,属性表不是都是文本啊数字啊之类的格式,怎么还可以存图片,下面就带大家来看看吧! 一.关于图层入库问题 图层进入数据库和图层以shp格式存储时, ...
- Hibrenate实现根据实体类自动创建表或添加字段
Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 实现: 在配置hibernate的配置文件中将hbm2ddl.auto设置为update,如:Xml代码&l ...
- 在数据表中添加一个字段的SQL语句怎么写
如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识. 通用式: alter table [表名] add [字段名] 字 ...
- Oracle 11g对大表中添加DEFAULT值的NOT NULL字段速度有大幅度的提升
在一张2000万的表上增加了一个字段并字段一个默认值,执行这条语句(alter table tablename add new_col default ‘col’)一个小时没有执行完,问我有没有其他解 ...
随机推荐
- FZU 2089 数字游戏
Problem 2089 数字游戏 Problem Description 现在,给你2个整形数字A和B.你的任务就是计算出A+B的结果C后,统计C中数字5出现的次数. Input 输入数据第一行 ...
- ios 状态码
9001 无网络 9002 url错误 9003 链接超时 9005 json解析错误 9503 503 error
- Python网络编程学习_Day10
一.进程与线程 1.区别 进程:一个程序要运行时所需要的所有资源的集合,进程是资源的集合. 一个进程至少需要一个线程,这个线程称为主线程 一个进程里面可以有多个线程 两个进程之间的数据是完全独立,不能 ...
- SVN版本控制的使用
下面说一说本人对SVN工具使用的理解: SVN就是一个工具,一个用来便于多人(或说团队)开发代码的版本控制工具,我们可以用它很好的把多个程序员开发出来的代码统一起来,并且保证在这个工程中不出现任何差错 ...
- (一)初步了解python
python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. Py ...
- redis整合spring
最近公司项目有用到 所以找了一下实例.感觉很清晰. 完整项目路径http://www.cnblogs.com/dennisit/p/3614521.html看了一下应该没问题
- ES 6 : 字符串的扩展
1. 字符的Unicode表示法 JavaScript允许表示\u0000—\uFFFF之间的字符.超出这个范围,必须用2个双字节的形式表达.如:"\u20BB7"是汉字 &quo ...
- c#语言简介
语言的历史:c,c++,java,c#, c语言最早,c++语言复杂,而java把其中难的一部分去掉,也成为c--,而c#早期类似java. c#简单高效,并且与web结合. C#的运行环境是.net ...
- Framebuffer原理、使用、测试系列文章,非常好的资料,大家一起学习
转载:http://blog.csdn.net/tju355/article/details/6881372 *一.FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核 ...
- 找工作---操作系统常考知识点总结【PB】
1.进程是并发过程中程序的执行过程 2.进程的特征:结构特征.动态性.并发性.独立性.异步性 3.临界区指在每个进程中访问临界资源的那段代码 4,现在操作系统中申请资源的基本单位是进程,在CPU得到执 ...