动手生成 Delphi xe DBTreeview
tProductType表结构如下

object FDConnection1: TFDConnection
Params.Strings = (
'Database=ClothingTem'
'User_Name=sa'
'Password=123'
'Server=(local)'
'DriverID=MSSQL')
Connected = True
LoginPrompt = False
Left = 464
Top = 288
end
object FDQ: TFDQuery
Active = True
Connection = FDConnection1
SQL.Strings = (
'select * from tProductType where fParentID like '#39'0%'#39' order by f' +
'code')
Left = 464
Top = 240
end
object DataSource1: TDataSource
DataSet = FDQ
Left = 320
Top = 464
end
end
代码如下
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSSQL,
FireDAC.Phys.MSSQLDef, FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS,
FireDAC.DApt.Intf, FireDAC.DApt, Data.DB, Vcl.StdCtrls, Vcl.Grids,
Vcl.DBGrids, Vcl.ComCtrls, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
Vcl.ExtCtrls;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
tv: TTreeView;
FDConnection1: TFDConnection;
FDQ: TFDQuery;
DataSource1: TDataSource;
Panel1: TPanel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
nodes:ttreenodes;
node:ttreenode ;
begin
// TV.Items.Clear;
// nodes:=TV.Items;
// FDQ.Active:=true;
// node:=nodes.add(nil,FDQ.FieldByName('fCode').Value+'_'+FDQ.FieldByName('fNAME').Value);
// FDQ.Next;
// while NOT FDQ.Eof do
// BEGIN
// if FDQ.FieldByName('fCode').Value<>0 then
// nodes.add(node,FDQ.FieldByName('fCode').Value+'_'+FDQ.FieldByName('fNAME').Value); //一级三兄弟
// FDQ.Next;
// END;
// nodes.GetFirstNode
end;
procedure TForm1.Button2Click(Sender: TObject);
var
nodes:ttreenodes;
node:ttreenode ;
CurItem ,CurItem1:Ttreenode ;
nodestr:string;
lastparent,temp:string;
i,j:integer;
begin
TV.Items.Clear;
nodes:=TV.Items;
FDQ.Active:=true;
node:=nodes.add(nil,FDQ.FieldByName('fCode').Value+'_'+FDQ.FieldByName('fNAME').Value);
FDQ.Next;
while NOT FDQ.Eof do
BEGIN
if FDQ.FieldByName('fCode').Value<>0 then
nodes.add(node,FDQ.FieldByName('fCode').Value+'_'+FDQ.FieldByName('fNAME').Value); //一级三兄弟
FDQ.Next;
END;
nodes.GetFirstNode;
tv.Items.BeginUpdate;
for I := 1 to 9 do
begin
FDQ.SQL.Clear;
temp:=inttostr(i);
fdq.SQL.Text:='select * from tProductType where fcode like '+''''+ temp+'%' +'''';//+' order by fParentCode';
fdq.Prepare;
fdq.open;
nodes:=Tv.Items;
CurItem := TV.Items.GetFirstNode;
if i>1 then
for j := 1 to i-1 do
begin
CurItem1:=CurItem.getNextSibling;
CurItem:= CurItem1;
end;
fdq.First;
fdq.Next;
lastparent:=fdq.FieldByName('fParentCode').AsString;
while not fdq.Eof do
begin
//如 果当前'fParentCode'与上次不一样就查找
if lastparent<>fdq.FieldByName('fParentCode').AsString
then
begin
CurItem := TV.Items.GetFirstNode;
while CurItem <> nil do
begin
if copy( CurItem.Text,1,pos('_',CurItem.Text)-1) =fdq.FieldByName('fParentCode').Value then
begin
CurItem.Selected:=true;
break;
end;
CurItem := CurItem.GetNext;
end;
end ;
begin
nodes.addchild(CurItem,FDQ.FieldByName('fCode').Value+'_'+FDQ.FieldByName('fNAME').Value);
lastparent:=fdq.FieldByName('fParentCode').AsString;
end;
fdq.Next;
end;
end; // for I := 0 to 9 do
tv.Items.EndUpdate;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
//showmessage(tv.Items.Count.ToString );
end;
end.
运行结果如下图
动手生成 Delphi xe DBTreeview的更多相关文章
- 动手生成 Delphi xe DBTreeview 三级行政图树 省市县
表结构及记录 object tarea: TFDQuery Connection = FDConnection1 SQL.Strings = ( 'select *' ...
- [转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装
一.下载 官方下载网址: http://www.axolot.com/components/download.htm 从这里可以下载到从Delphi5到DelphiXE全部支持的版本. 二.软件安装 ...
- Delphi xe 下快捷使用 FastMM 的内存泄露检测功能
Delphi xe 集成了FastMM,调试程序是的时候可以方便地检查内存泄露了. 使用方法:在project中,添加一行: ReportMemoryLeaksOnShutdown := Debug ...
- Delphi XE 10 跨平台三层数据库应用教程
Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD ...
- delphi xe 10.3 利用Git组群开发,Git服务器安装,Git 拉取,提交,推送相关设置操作
1. Git服务器安装, 参考 https://blog.csdn.net/u012842630/article/details/97175397 Git服务器官方网站,要FQ. 2. 工具软件 gi ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- delphi XE Berlin ReadProcessMemory WriteProcessMemory
delphi XE,Berlin [dcc32 Error] Unit9.pas(93): E2033 Types of actual and formal var parameters must ...
- FastReport for delphi xe 安装步骤
FastReport for delphi xe 安装步骤 1.先关闭DELPHI:2.下载后解压到一个目录,比如:D:FR:3.打开D:FR,运行recompile.exe ->点击" ...
- Delphi XE的firemonkey获取当前文件所在路径的方法
Delphi XE的firemonkey获取当前文件所在路径的方法 在之前,我们知道有三种方法: ExtractFilePath(ParamStr(0)) ExtractFilePath(Applic ...
随机推荐
- selenium 键盘事件 模拟ctrl+v 然后键盘点击回车键
#windows下执行 import win32api,win32con,win32clipboard as w #获取剪切板内容 def get_text(): w.OpenClipboard() ...
- 定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, 随机的10个字母和数字的组合;字母和数字的范围可以指定,类似(1~100)(A~z)
#习题2:定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, #随机的10个字母和数字的组合:字母和数字的范围可以指定 class RandomString(): #随机数选择的范围作为 ...
- 配置基于centos下的远程Jupyter Notebook访问
最近在学习一些服务器上的操作,学着熟悉Liunx系统,记录下自己踩过的坑吧 1.开机后更新系统: yum -y upgrade yum - y update 2.查看已安装的应用 yum list 3 ...
- ndk学习之C语言基础复习----结构体、共用体与C++开端
自己实现sprintf功能: 关于C中的系统函数sprintf在上次[https://www.cnblogs.com/webor2006/p/7545627.html]学习中已经用到过了,这里再来回顾 ...
- 0012SpringBoot访问首页
有三种方式可以实现访问首页: 第一种: 定义一个Controller,定义请求方法和返回内容,方法内容如下: @RequestMapping({"/","/index&q ...
- 如何实现UI自动化?DevExpress Winforms帮你忙
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...
- node.js中允许的app对象声明方式
伪对象形式 app = function () { console.log("我是一个初始化的app对象"); }; app.get=function () { console.l ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) 题解
A. Toy Train 时间限制:2 seconds 内存限制:256 megabytes 题意 有编号111~n(n≤5000)n(n\le 5000)n(n≤5000)的车站顺时针呈环排列,有m ...
- MyBankgon功能
.帐户类 User 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- 项目:JS实现简易计算器案例
组件化网页开发下的: 步骤一:让页面动起来的JavaScript深入讲解 的 项目:JS实现简易计算器案例