📄 xdqlb.pas
字号:
unit xdqlb;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Db, DBTables, Grids, DBGrids, StdCtrls, Buttons, Mask, DBCtrls,
ExtCtrls, DBClient, MConnect, ADODB;
type
Txdqlbf = class(TForm)
DS_dqlb: TDataSource;
Panel_top: TPanel;
SB_select: TSpeedButton;
SB_exit: TSpeedButton;
DBGrid_dqlb: TDBGrid;
Splitter1: TSplitter;
TreeView_dqlb: TTreeView;
Q_dqlb: TADOQuery;
procedure FormShow(Sender: TObject);
procedure SB_exitClick(Sender: TObject);
procedure SB_selectClick(Sender: TObject);
procedure DBGrid_dqlbDblClick(Sender: TObject);
procedure TreeView_dqlbChange(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
function GetNodeLevel(sFormat,sCode:string):integer;
procedure Dingwei;//更新树
end;
var
xdqlbf: Txdqlbf;
cTreeCodeFormat:string='22222';
mynode:array[0..6] of TTreenode;
xcurid:string;
curnode:TTreeNode;
curlevel:integer;
implementation
uses dm,main_page;
{$R *.DFM}
function Txdqlbf.GetNodeLevel(sFormat,sCode:string):integer;
var i,level,iLen:integer;
begin
level:=-1;
iLen:=0;
if (sFormat<>'') and (sCode<>'') then
for i:=1 to Length(sFormat) do //分析编码格式,找出当前代码层次
begin
iLen:=iLen+StrToInt(sFormat[i]);
if Length(sCode)=iLen then
begin
level:=i;
break;
end;
end;
result:=level;
end;
procedure Txdqlbf.FormShow(Sender: TObject);
var dqbh,nodeTxt:string;
level:integer;
begin
SelAffirm:=0;
Q_dqlb.Close;
Q_dqlb.SQL.Text:='select dqbh,dqmc FROM '+DatabaseName+'CG_dqlb order by dqbh';
Q_dqlb.Open;
//初始化变量
TreeView_dqlb.Enabled:=True;
TreeView_dqlb.Items.Clear;
level:=0 ;
TreeView_dqlb.items.clear;
//设置根节点
mynode[level]:=TreeView_dqlb.items.add(TreeView_dqlb.TopItem,'地区类别');
mynode[level].ImageIndex:=1;
//遍历数据表,利用编码字段记录排序规律,依次添加树节点
Q_dqlb.first;
while not Q_dqlb.Eof do
begin
dqbh:=trim(Q_dqlb.FieldByName('dqbh').AsString);
nodeTxt:=dqbh+'-'+trim(Q_dqlb.FieldByName('dqmc').AsString);
level:=GetNodeLevel(cTreeCodeFormat,dqbh);
//这里返回代码的层次数
if level>0 then
begin
//增加下一节点时,用添加子节点的方法可轻松实现节点间的层次关系。
//注意:这里的父节点是用当前节点的上一级节点mynode[level-1]
mynode[level]:=TreeView_dqlb.items.addchild(mynode[level-1],nodeTxt);
mynode[level].ImageIndex:=2;
end;
Q_dqlb.next;//下一条记录
end;
mynode[0].expand(False);
dingwei;
//设置颜色
Panel_top.Color:=color_top;
DBGrid_dqlb.FixedColor :=color_dbgrid;
end;
procedure Txdqlbf.dingwei;
var n:integer;
begin
TreeView_dqlb.SetFocus;
curnode:=TreeView_dqlb.Selected;
curlevel:=TreeView_dqlb.Selected.Level;
n:=pos('-',curnode.Text )-1;
xcurid:=copy(curnode.text,1,n);
if length(xcurid)<1 then
begin
Q_dqlb.Filtered:=False;
Q_dqlb.Filter:='dqbh=''%''';
Q_dqlb.Filtered:=True;
Q_dqlb.Filtered:=False;
end
else
begin
Q_dqlb.Filtered:=False;
Q_dqlb.Filter:='dqbh='+''''+xcurid+'*''';
Q_dqlb.Filtered:=True;
end;
end;
procedure Txdqlbf.SB_exitClick(Sender: TObject);
begin
SelAffirm:=0;
close;
end;
procedure Txdqlbf.SB_selectClick(Sender: TObject);
begin
SelAffirm:=1;
close;
end;
procedure Txdqlbf.DBGrid_dqlbDblClick(Sender: TObject);
begin
SelAffirm:=1;
close;
end;
procedure Txdqlbf.TreeView_dqlbChange(Sender: TObject; Node: TTreeNode);
begin
dingwei;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -