根据数据库结构生成TreeView
procedure TUIOperate.FillTree(treeview: TTreeView);
var
findq: TADOQuery;
node: TTreeNode; //这个方法是根据记录的id字段值,查找TreeView上的父节点
function FindParentNode(id:Integer):TTreeNode;
var
i:Integer;
begin
Result := nil;
for i := to treeview.Items.Count - do
begin
//比较Node的Data值和记录的id值
if Integer(treeview.Items[i].Data) = id then
begin
Result := treeview.Items[i];
Break;
end;
end;
end; begin
findq := TADOQuery.Create(nil);
findq.Connection := controler.DataConnect.Connection; //这里的Connection指向你的数据连接
try
treeview.Items.BeginUpdate;
treeview.Items.Clear;
//选出所有记录,并按parentid排序,这样可以保证先添加顶级节点,在下级记录添加时,总能找到父节点
findq.SQL.Text := 'SELECT * FROM [Catalog] order by parentid,id';
findq.Open;
while not findq.Eof do
begin
//如果是最顶级,直接添加到Treeview
if findq.FieldByName('parentid').AsInteger = - then
//将id值,保存在Node的Data中,以便查找用
treeview.Items.AddObject(nil,findq.FieldByName('CatalogName').AsString,Pointer(findq.FieldByName('id').AsInteger))
else
begin
//查找上级节点
node := FindParentNode(findq.FieldByName('parentid').AsInteger);
if node <> nil then
treeview.Items.AddChildObject(node,findq.FieldByName('CatalogName').AsString,Pointer(findq.FieldByName('id').AsInteger));
end;
findq.Next;
end;
finally
findq.Free;
treeview.Items.EndUpdate;
end;
end;
根据数据库结构生成TreeView的更多相关文章
- delphi 根据数据库结构生成TreeView
		
procedure TUIOperate.FillTree(treeview: TTreeView); var findq: TADOQuery; node: TTreeNode; / ...
 - 根据数据库结构生成RzCheckTree
		
现在大多数的方法是采用递归,但这种操作会频繁的去select数据库,降低了执行效率,稍微改动一些,效果会好不少,这里介绍一种方法,即一次性select出所有数据,然后按照ParentID排序,逐条添加 ...
 - PowerDesigner反向工程,根据Oracle数据库结构生成ER图(2014-3-25记)
		
01.添加数据服务端 02. PowerDesigner 1. 新建PDM:选择菜单File->New Model,[Model type]选择Physical Data Model,[DBMS ...
 - sqlalchemy根据数据库结构生成映射的实体
		
# !/usr/bin/python # -*- coding: UTF-8 -*- from sqlalchemy import * from sqlalchemy.orm import sessi ...
 - c# winform结合数据库动态生成treeview的父节点和子节点方法和思路
		
tb_food表的结构如图一: tb_foodtype表的结构如图二: //获取tb_foodtype表中的所有数据 private void InitDataTable() { SqlConnect ...
 - delphi 中如何从数据库中读取数据自生成TreeView,只有两个字段,数据库结构如下。急急!!
		
我的数据库结构如下:UnitId UnitName01 中国 (根节点)0101 河北省(二级树)010101 河北省沧州市(三级树)0101010 ...
 - 利用powerdesigner反向数据库结构,生成ER图
		
参考月下狼~图腾~:<利用powerdesigner反向数据库结构,生成ER图> https://www.zybuluo.com/Jpz/note/123582 首先新建一个"P ...
 - 如何将excel 数据库表结构生成powerdesign物理模型
		
Option Explicit Dim mdl ' the current model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox &q ...
 - DjangoORM创建表结构以及生成数据库结构
		
1. ORM的两种 DB first: 创建表结构--根据表结构生成类-----根据类来操作数据库 Code first: 先写代码------再写类----执行命令(一个类生成一个表)当前主流的用法 ...
 
随机推荐
- DS18B20读数错误排除
			
描述: 同时测试了好几个板子,都接了DS18B20传感器.但,有的板子读取的DS18B20温度值正确,有的读取错误. 原因查找: 以为是有的传感器坏了,但测试后发现并不是. 又以为是DS18B20需要 ...
 - Python用re正则化模块在字符串查找特定字符串
			
实验需要,在一个含有几亿个字符的txt文件中查找特定的字符串,首先用re模块进行查找 from time import clock import re start=clock() label_file ...
 - [LeetCode&Python] Problem 746. Min Cost Climbing Stairs
			
On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...
 - jquery实现拖拽进度条并显示百分比的特效
			
#box{position: relative; width: 200px; height: 50px; border: 1px solid #eee; margin: 50px auto 0;} # ...
 - 20165313 《Java程序设计》第七周学习总结
			
教材学习总结 1.下载安装MySQL数据库管理系统. 2.MySQL数据库基本操作. 3.利用JAVA程序对MySQL数据库系统进行查找,更新,添加和删除操作. 学习中的问题与解决方案 1.运行书上安 ...
 - putty登陆sourceforge.net(设置登录)
			
打开putty.exe session选项的host name (ip address) 填写 shell.soureceforge.net 端口22(不变) 接下来是connection选项子目录下 ...
 - java保留2位小数及BigDecimal使用
			
java保留两位小数的方法 import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFo ...
 - datetime学习
			
四.datetime类 (一).datetime类的数据构成 datetime类其实是可以看做是date类和time类的合体,其大部分的方法和属性都继承于这二个类,相关的操作方法请参阅,本文上面关于二 ...
 - 10 BPMN PDF books, articles and brochures
			
转自:https://www.heflo.com/blog/bpm/bpmn-pdf/ If you are looking for more information about BPMN (Busi ...
 - apache geode 试用
			
使用docker 运行,文档参考的官方的5 分钟学习文档 拉取镜像 docker pull apachegeode/geode 启动 docker run -it -p 10334:10334 -p ...