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