动手生成 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 ...
随机推荐
- js面向对象篇(一)
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). ----摘 ...
- 学习Hook的必备知识
1.汇编 2.API 3.内存 4.进程 5.窗口 必须熟悉的汇编指令: PUSH 入栈 MOV 赋值 JMP(JNZ JE) 跳转 CALL 调用函数 RET 返回 Cmp 比较 T ...
- [唐胡璐]Java操作Sql Server 2008数据库
下载Microsoft JDBC Driver for SQL Server 直接去官网下载即可: 下载解压文件,得到sqljdbc.jar和sqljdbc4.jar。如果你使用的是jre1.7版本, ...
- combogrid下拉方法封装
//html <input id="addxxxxx" name="xxxxxx" style="width:380px;height:36px ...
- 【JUC系列第三篇】-CAS算法详解
作者 : 毕来生 微信: 878799579 1.CAS是什么? CAS是英文单词(Compare-And-Swap)的缩写,中文意思是:比较并替换.CAS需要有3个操作数:内存地址V,旧的预期值A, ...
- 004_STM32程序移植之_SHTXX
1. 测试环境:STM32C8T6 2. 测试模块:DS1302时钟模块 3. 测试接口: SHTXX土壤温湿度: VCC------------------3.3V GND------------- ...
- spring 定时任务的 执行时间设置规则-----看完这篇就懂了
单纯针对时间的设置规则 org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpressi ...
- js 弹层下面的body禁止滚动
弹窗是一种常见的交互方式,而蒙层是弹窗必不可少的元素,用于隔断页面与弹窗区块,暂时阻断页面的交互.但是,在蒙层元素中滑动的时候,滑到内容的尽头时,再继续滑动,蒙层底部的页面会开始滚动,显然这不是我们想 ...
- [Luogu] U18430 萌萌的大河
https://www.luogu.org/problemnew/show/U18430 思路比较好想 树链剖分 对于1操作 只需将以该点为根的子树打标记,将所有数存入数组排序 每次进行1操作时,判断 ...
- [TJOI2019]唱、跳、rap和篮球
嘟嘟嘟 TJ律师函警告 20分暴力比较好拿,因为每一种学生可以理解为无限多,那么总方案数就是\(C_{n} ^ {4}\),然后我们枚举至少讨论cxk的有几组,容斥即可. 需要注意的是,容斥的时候还要 ...