departmentfrm.~pas
来自「一个电力企业的后台管理程序」· ~PAS 代码 · 共 629 行 · 第 1/2 页
~PAS
629 行
unit DepartmentFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActnList, TB97Ctls, TB97, TB97Tlbr, ExtCtrls, ComCtrls, Menus, Buttons,
StdCtrls, Mask, DBCtrls, Db, DbTables;
type
TNewCounselLevelOne=record
OeName:string;
OeID:string;
OeList:TList;
end;
PNewCounselLevelOne=^TNewCounselLevelOne;
TNewCounselLevelThree=record
OeName:string;
OeID:string;
end;
PNewCounselLevelThree=^TNewCounselLevelThree;
TForm_Department = class(TForm)
Dock971: TDock97;
Image1: TImage;
tbar97_Dept: TToolbar97;
ToolbarButton971: TToolbarButton97;
TB_edit: TToolbarButton97;
TB_add: TToolbarButton97;
TB_delete: TToolbarButton97;
tbar97_Deptquit: TToolbar97;
ToolbarButton975: TToolbarButton97;
ActionList1: TActionList;
Act_add: TAction;
Act_delete: TAction;
Act_edit: TAction;
Act_refresh: TAction;
Act_quit: TAction;
TreeView1: TTreeView;
PopupMenu1: TPopupMenu;
N_add: TMenuItem;
N_delete: TMenuItem;
N_edit: TMenuItem;
N_refresh: TMenuItem;
Splitter1: TSplitter;
Panel1: TPanel;
Panel2: TPanel;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
Label5: TLabel;
Panel3: TPanel;
Spd_save: TSpeedButton;
Spd_cancel: TSpeedButton;
DBMemo1: TDBMemo;
DBEdit4: TDBEdit;
PopupMenu2: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Label6: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure Act_quitExecute(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Act_addExecute(Sender: TObject);
procedure Act_deleteExecute(Sender: TObject);
procedure Act_editExecute(Sender: TObject);
procedure Spd_cancelClick(Sender: TObject);
procedure Spd_saveClick(Sender: TObject);
procedure Act_refreshExecute(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure PopupMenu2Popup(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
AoeRecordOne:PNewCounselLevelOne;
AoeRecordTwo:PNewCounselLevelOne;
AoeRecordThree:PNewCounselLevelThree;
NewCounselingOptionList:TList;
OneList:array of TList;
TwoList:array of TList;
FFlag:boolean;
procedure ShowTreeNode;
procedure LoadNewCounselingOption;
procedure FreeNewCounselingOption;
public
{ Public declarations }
Flag:boolean;
function GetSerialNoQry(AnyQuery:TQuery;SerialName:string):integer;
//SerialName字段必须排序
end;
var
Form_Department: TForm_Department;
implementation
uses systemDM,ManagData,EcscMain,SystemPH;
{$R *.DFM}
function TForm_Department.GetSerialNoQry(AnyQuery: TQuery;
SerialName: string): integer;
var
i,No,LastNO,CurNo:integer;
begin
i:=0;
No:=1;
with Self do
begin
AnyQuery.First;
LastNo:=AnyQuery.Fieldbyname(SerialName).asinteger;
while not AnyQuery.Eof do //给BitNo字段分配序号,
begin
if AnyQuery.Bof then
begin
if LastNo>1 then
begin
No:=1;
break;
end;
end;
AnyQuery.Next;
CurNo:=AnyQuery.Fieldbyname(SerialName).asinteger;
if (CurNo-LastNo)>1 then
begin
No:=LastNo+1;
break;
end else
begin
LastNo:=CurNo;
end;
i:=i+1;
end;
if i>=AnyQuery.RecordCount then
No:=AnyQuery.Fieldbyname(SerialName).asinteger+1;
end;
Result:=No;
end;
procedure TForm_Department.ShowTreeNode;
var
B,B1,B2:Word;
varnode,tempnode,optnode:TTreeNode;
begin
treeview1.Items.Clear;
varnode:=Treeview1.Items.Add(nil,'工作部门');
try
if NewCounselingOptionList.Count>0 then
for B:=0 to NewCounselingOptionList.Count-1 do
begin
AoeRecordOne:=NewCounselingOptionList.Items[B];
tempnode:=Treeview1.Items.AddChildObject(varnode,AoeRecordOne^.OeName,AoeRecordOne);
if Assigned(AoeRecordOne^.OeList) then
if AoeRecordOne^.OeList.Count>0 then
for B1:=0 to AoeRecordOne^.OeList.Count-1 do
begin
AoeRecordTwo:=AoeRecordOne^.OeList.Items[B1];
optnode:=TreeView1.Items.AddChildObject(tempnode,AoeRecordTwo^.OeName,AoeRecordTwo);
if Assigned(AoeRecordTwo^.OeList) then
if AoeRecordTwo^.OeList.Count>0 then
for B2:=0 to AoeRecordTwo^.OeList.Count-1 do
begin
AoeRecordThree:=AoeRecordTwo^.OeList.Items[B2];
TreeView1.Items.AddChildObject(optnode,AoeRecordThree^.OeName,AoeRecordThree);
end;
end;
end;
except
end;
end;
procedure TForm_Department.LoadNewCounselingOption;
var
i,j,m,n:integer;
begin
NewCounselingOptionList:=TList.Create;
with ManagDM do
begin
//SqlExec(departqry,'select * from department');
SqlExec(anyqry,'select * from department_Info where twolevelno=0 and threelevelno=0');
setlength(OneList,anyqry.RecordCount);
m:=0;
while not anyqry.Eof do
begin
new(AoeRecordone);
AoeRecordone^.OeName:=anyqry.fieldbyname('departmentname').AsString;
AoeRecordone^.OeID:=anyqry.fieldbyname('departmentno').AsString;
AoeRecordOne^.OeList:=nil;
i:=anyqry.fieldbyname('OneLevelNo').AsInteger;
SqlExec(ranqry,'select * from department_Info where onelevelno='+IntToStr(i)+' and twolevelno<>0 and threelevelno=0');
SetLength(TwoList,ranqry.RecordCount);
n:=0;
OneList[m]:=TList.Create;
while not ranqry.Eof do
begin
new(AoeRecordTwo);
AoeRecordTwo^.OeName:=ranqry.fieldbyname('departmentname').AsString;
AoeRecordTwo^.OeID:=ranqry.fieldbyname('departmentno').AsString;
AoeRecordTwo^.OeList:=nil;
j:=ranqry.fieldbyname('twolevelno').AsInteger;
SqlExec(optqry,'select * from department_Info where onelevelno='+IntToStr(i)+' and twolevelno='+IntToStr(j)+' and threelevelno<>0');
TwoList[n]:=TList.Create;
while not optqry.Eof do
begin
new(AoeRecordThree);
AoeRecordThree^.OeName:=optqry.fieldbyname('departmentname').AsString;
AoeRecordThree^.OeID:=optqry.fieldbyname('departmentno').AsString;
TwoList[n].Add(AoerecordThree);
AoeRecordTwo^.OeList:=TwoList[n];
optqry.Next;
end;
OneList[m].Add(AoeRecordTwo);
AoeRecordOne^.OeList:=OneList[m];
ranqry.Next;
n:=n+1;
end;
NewCounselingOptionList.Add(AoeRecordOne);
anyqry.Next;
m:=m+1;
end;
end;
end;
procedure TForm_Department.FreeNewCounselingOption;
var
B:word;
B21,B22:word;
B11,B12:word;
begin
try
if High(TwoList)>=Low(TwoList) then
for B21:=Low(TwoList) to High(TwoList) do
begin
if Assigned(TwoList[B21]) then
begin
if TwoList[B21].Count >0 then
for B22:=0 to TwoList[B21].Count-1 do
begin
AoeRecordThree:=TwoList[B21].Items[B22];
dispose(AoeRecordThree);
end;
end;
TwoList[B21].Free ;
end;
if High(OneList)>=Low(OneList) then
for B11:=Low(OneList) to High(OneList) do
begin
if Assigned(OneList[B11]) then
begin
if OneList[B11].Count>0 then
for B12:=0 to OneList[B11].Count-1 do
begin
AoeRecordTwo:=OneList[B11].Items[B12];
dispose(AoeRecordTwo);
end;
end;
OneList[B11].Free;
end;
if assigned(NewCounselingOptionList) then
if NewCounselingOptionList.Count>0 then
for B:=0 to NewCounselingOptionList.Count-1 do
begin
AoeRecordOne:=NewCounselingOptionList.Items[B];
dispose(AoeRecordOne);
end;
finally
end;
end;
procedure TForm_Department.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
//if screen.FormCount=2 then
WebIsHide(0);
with ManagDM do
begin
Tbl_depart.close;
anyqry.close;
ranqry.close;
optqry.Close;
end;
Action:=CaFree;
Form_Department:=nil;
end;
procedure TForm_Department.FormCreate(Sender: TObject);
begin
{tbar97_Dept.AddDockForm(Application.MainForm);
tbar97_Dept.DockedTo:=TForm_Main(Application.MainForm).dk97_Home;
tbar97_DeptQuit.AddDockForm(Application.MainForm);
tbar97_DeptQuit.DockedTo:=TForm_Main(Application.MainForm).dk97_Home;}
ManagDM.Tbl_Depart.Active:=true;
flag:=false;
fflag:=false;
LoadNewCounselingOption;
ShowTreeNode;
end;
procedure TForm_Department.Act_quitExecute(Sender: TObject);
begin
close;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?