动手生成 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 ...
随机推荐
- 一个页面,WEB全功能
当鼠标在页面上往下滑动的时候,页面也一直向下,标签也顺带着全部向下滑动 以前浏览页面,主要是在PC上进行浏览,一个页面不适于太长,需要用户向下拖动: 当时的设计是,点击标签,点击不同的标签,跳转到不同 ...
- 用js刷剑指offer(矩形覆盖)
题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 牛客网链接 思路 依旧是斐波那契数列 2 * n的大矩形,和n个 ...
- sql/pl 安装并连接Oracle数据库
1,首先,先下载pl/sql devloper 安装包.下载对应版本的安装包 下载地址 https://www.allroundautomations.com/bodyplsqldevreg.htm ...
- Iterator 和 ListIterator 有什么区别?(未完成)
Iterator 和 ListIterator 有什么区别?(未完成)
- linux实操_shell设置环境变量
1.定义环境变量 在/etc/profile文件中定义一个环境变量 2.查看环境变量 echo $WDC_HOME 3.在shell程序中实用WDC_HOME
- app连接线上数据库进行本地接口测试
1.将开发环境下数据库配置改为生产环境下的数据库连接 2.备份生产环境下的数据库数据以及结构,使用Postman请求开发(本地)环境下的接口 3.打开手机上安装的线上app改动接口时查看app是否发生 ...
- 优化编辑器的编程语言 mlton
MLton 是整个程序的优化编译器的标准ML编程语言.
- [2019年湘潭大学程序设计竞赛(重现赛)H chat][背包dp]
链接:https://ac.nowcoder.com/acm/contest/893/H来源:牛客网 题目描述 在Casya生活的世界里,一天由m个小时组成. 最近Casya的女神终于答应在接下来的n ...
- SpringBoot启动过程原理(转)
1.1 Springboot启动: @SpringBootApplication public class ServerApplication { public static void main(St ...
- yii 查询垃圾分类接口
public function actionGarbage() { // $param = \Yii::$app->request->post('rubbish', ''); // 接收j ...