📄 dept_select.pas
字号:
unit dept_select;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls,adodb;
type
Tfempl_dept = class(TForm)
GroupBox1: TGroupBox;
TreeView1: TTreeView;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetLevel(sFormat,sCode:String):Integer;
Procedure LoadCode(crTbl:TADOQuery;tvwcode:TTreeView);
end;
var
fempl_dept: Tfempl_dept;
implementation
uses net_main;
{$R *.dfm}
procedure Tfempl_dept.FormCreate(Sender: TObject);
begin
if netmain.dept.Active then
LoadCode(netmain.dept,TreeView1);
end;
procedure Tfempl_dept.LoadCode(crTbl:TADOQuery;tvwcode:TTreeView);
var NowID,ShowTxt,SCodeFormat:String;
Level:Integer;
MyNode:array[0..6]of TTreeNode;//保存各级节点,最长支持6级(重点)
MyRecPtr: PMyRec;
begin
New(MyRecPtr);
Level:=0;
SCodeFormat:='133333';
With crTbl do
begin
First;
tvwCode.Items.Clear;
MyRecPtr^.deptno:=FieldByName('dept_no').AsString;
MyNode[Level]:=tvwCode.Items.AddObject(nil,FieldByName('dept_desc').AsString,MyRecPtr);
Next;
While Not Eof do
begin
NowID:=Trim(FieldByName('dept_no').AsString);
ShowTxt:=FieldByName('dept_desc').AsString;
Level:=GetLevel(SCodeFormat,NowID)-1; //返回代码的级数
if Level>0 then//确保代码符合标准
begin
New(MyRecPtr);
MyRecPtr^.deptno:=FieldByName('dept_no').AsString;
MyNode[Level]:=tvwCode.Items.AddChildObject(MyNode[Level-1],ShowTxt,MyRecPtr);
end;
Next;
end;
end;
MyNode[0].Expand(true);//将首节点展开
end;
function Tfempl_dept.GetLevel(sFormat,sCode:String):Integer;
var iq,Level,iLen:Integer;
begin
Level:=-1;//如果代码不符合标准,则返回-1
iLen:=0;
if (sFormat<>'')and(sCode<>'')then
for iq:=1 to Length(sFormat) do
begin
iLen:=iLen+StrToInt(sFormat[iq]);
if Length(sCode)=iLen then
begin
Level:=iq;
Break;
end;
end;
Result:=Level;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -