publicfunction.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 1,538 行 · 第 1/4 页
PAS
1,538 行
procedure mealcal(monthy:string); //就餐汇总
var Qry1:TADOQuery;
begin
with datamod do
begin
Qry1:=TADOQuery.create(application);
Qry1.connection:=Query1.connection;
qry1.sql.Clear;
qry1.sql.Add('Delete from mel05010 where rq='''+monthy+''' ');
Qry1.SQL.add('Insert into mel05010 (rq,workno,cardno,name,deptno,totalmoney) '+
' select '''+monthy+''',workno,min(cardno)as cardno,min(name) as name,min(dept) as dept,sum(price) as summoney '+
' from mel04010 where left(rq,7)='''+monthy+''' group by workno ');
qry1.ExecSQL;
qry1.close;
end;
end;
function addpassword(p:string):string; //加密密码
var s,longkey,toto:string;
i:integer;
begin
if trim(p)<>'' then
begin
s:=p;
longkey:='';
result:='';
for i := 0 to (length(s) div length('PASA')) do
longkey := longkey + 'PASA';
for i := 1 to length(s) do
begin
toto := chr((ord(s[i]) XOR ord(longkey[i]))); // XOR algorithm
result := result + toto;
end;
end;
end;
function GetGUID(var rg1,rg2,rg3,rg4,rg5:integer):String; //获得一个键值名
var
PassTbl1:Array [0..10] of ShortString;
PassTbl2:Array [0..10] of ShortString;
PassTbl3:Array [0..10] of ShortString;
PassTbl4:Array [0..10] of ShortString;
PassTbl5:Array [0..10] of ShortString;
begin
PassTbl1[0] := 'REAKY';
PassTbl1[1] := 'AS09D';
PassTbl1[2] := 'F234F';
PassTbl1[3] := 'AEDQH';
PassTbl1[4] := 'QSERR';
PassTbl1[5] := 'FDHFG';
PassTbl1[6] := '23R6D';
PassTbl1[7] := 'K4GIU';
PassTbl1[8] := 'KLFDG';
PassTbl1[9] := 'VBNK6';
PassTbl1[10] := 'FGKJ4';
PassTbl2[0] := 'DANNY';
PassTbl2[1] := 'KBHIJ';
PassTbl2[2] := '43656';
PassTbl2[3] := '45645';
PassTbl2[4] := 'RHGHJ';
PassTbl2[5] := '67876';
PassTbl2[6] := '768HD';
PassTbl2[7] := 'A68MJ';
PassTbl2[8] := '65456';
PassTbl2[9] := '4HJ9D';
PassTbl2[10] := 'AS19D';
PassTbl3[0] := 'APPLE';
PassTbl3[1] := 'AS29M';
PassTbl3[2] := 'AHJLX';
PassTbl3[3] := 'ART98';
PassTbl3[4] := 'SUNN0';
PassTbl3[5] := 'JAMEJ';
PassTbl3[6] := 'PETEA';
PassTbl3[7] := 'DAVIG';
PassTbl3[8] := 'VINCK';
PassTbl3[9] := 'DEBB7';
PassTbl3[10] := 'E4543';
PassTbl4[0] := 'VICTOR';
PassTbl4[1] := 'J2JNI';
PassTbl4[2] := 'X2CGP';
PassTbl4[3] := 'E04XE';
PassTbl4[4] := 'P6XLT';
PassTbl4[5] := 'AJ4UW';
PassTbl4[6] := '3RUVZ';
PassTbl4[7] := 'GN39M';
PassTbl4[8] := 'VU04C';
PassTbl4[9] := 'L3XU5';
PassTbl4[10] := 'WUG6D';
PassTbl5[0] := 'APASA';
PassTbl5[1] := 'ZPFUL';
PassTbl5[2] := '6UV41';
PassTbl5[3] := 'QI6VU';
PassTbl5[4] := 'DJWP6';
PassTbl5[5] := 'XJ3GJ';
PassTbl5[6] := '4CJPU';
PassTbl5[7] := '82J04';
PassTbl5[8] := 'TJ6BP';
PassTbl5[9] := 'Y94WU';
PassTbl5[10] := '86FU4';
Randomize;
Rg1:=Random(10);
Rg2:=Random(10);
Rg3:=Random(10);
Rg4:=Random(10);
Rg5:=Random(10);
Result:='{'+PassTbl1[Rg1]+'-'+PassTbl2[Rg2]+'-'+PassTbl3[Rg3]+'-'+PassTbl4[Rg4]+'-'+PassTbl5[Rg5]+'}';
end;
function GetOSInfo(Var systemver:string):string;
var
Platform: string;
BuildNumber: Integer;
begin
case Win32Platform of
VER_PLATFORM_WIN32_WINDOWS:
begin
Platform := 'Windows 98';
BuildNumber := Win32BuildNumber and $0000FFFF;
end;
VER_PLATFORM_WIN32_NT:
begin
Platform := 'Windows NT';
BuildNumber := Win32BuildNumber;
end;
else
begin
Platform := 'Windows';
BuildNumber := 0;
end;
end;
systemver:=platform;
if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) or
(Win32Platform = VER_PLATFORM_WIN32_NT) then
begin
if Win32CSDVersion = '' then
result:= Format('%s %d.%d (Build %d)', [Platform, Win32MajorVersion,
Win32MinorVersion, BuildNumber])
else
result:= Format('%s %d.%d (Build %d: %s)', [Platform, Win32MajorVersion,
Win32MinorVersion, BuildNumber, Win32CSDVersion]);
end
else
result:= Format('%s %d.%d', [Platform, Win32MajorVersion,
Win32MinorVersion])
end;
function Gettablename(sql:string):string; //获得Select 语句中table的名字
begin
result:='';
sql:=lowercase(sql);
result:=copy(sql,pos('from',sql),length(sql));
result:=trim(result);
if pos(' ',result)<>0 then
result:=copy(result,pos(' ',result)+1,length(result));
if pos(' ',result)<>0 then
result:=copy(result,1,pos(' ',result)-1);
end;
//HOOK功能
function KeyboardHookHandler(iCode: Integer;wParam: WPARAM;
lParam: LPARAM):LRESULT; //产生键盘Hook
const
_KeyPressMask = $80000000;
begin
Result := 0;
If iCode < 0 Then
begin
Result := CallNextHookEx(hNextHookProc,iCode,wParam,lParam);
Exit;
end;
if ((lParam and _KeyPressMask) = 0) then //and
begin
Result := 1;
screencount:=0;
end;
end;
function MouseHookHandler(iCode: Integer;wParam: WPARAM;
lParam: LPARAM):LRESULT; //产生鼠标Hook
begin
Result := 0;
If iCode < 0 Then
begin
Result := CallNextHookEx(hNextHookProc,iCode,wParam,lParam);
Exit;
end;
if (wparam=WM_LBUTTONDBLCLK) or (wparam=WM_MOUSEMOVE) then
begin
result:=1;
screencount:=0;
end;
end;
function EnableHotKeyHook: BOOL; //启动Hook
begin
Result := False;
if (hNextHookProc <> 0) or (hMouseHookProc <> 0) then Exit;
// 挂上 WH_KEYBOARD 类型的 HOOK 同时传回值必须保留下来免得 HOOK 呼叫链结断掉
// hNextHookProc := SetWindowsHookEx(WH_KEYBOARD,KeyboardHookHandler,Hinstance,0);
// hMouseHookProc := SetWindowsHookEx(WH_MOUSE,MouseHookHandler,Hinstance,0);
Result := (hNextHookProc <> 0) and (hMouseHookProc<>0);
end;
function DisableHotKeyHook: BOOL; //关闭Hook
begin
if hNextHookProc <> 0 then
begin
UnhookWindowshookEx(hNextHookProc); // 解除 Keyboard Hook
hNextHookProc := 0;
MessageBeep(0);
MessageBeep(0);
end;
Result := hNextHookProc = 0;
end;
procedure HotKeyHookExit; //退出Hook
begin
// 如果忘了解除 HOOK 自动代理解除的动作
if (hNextHookProc <> 0) or (hMouseHookProc <> 0) then DisableHotKeyHook;
ExitProc := procSaveExit;
end;
//HOOK功能
procedure GetDBGridLength(Formname:String;GridName:TDBGrid);
var len:TINIFile;
i:integer;
begin
len:=TINIFile.create(extractfilepath(application.exename)+'Data\Length.ini');
for i:=0 to GridName.columns.Count-1 do
GridName.Columns[i].Width:=len.ReadInteger(Formname+'-'+GridName.Name,GridName.Columns[i].FieldName,50);
len.free;
end;
procedure SetDBGridLength(Formname:string;GridName:TDBGrid;TableName:TCustomADODataSet);
var len,ini:TINIFile;
i:integer;
s:string;
begin
s:='';
len:=TINIFile.create(extractfilepath(application.exename)+'Data\Length.ini');
ini:=Tinifile.Create(extractfilepath(application.exename)+'Data\fields.ini');
for i:=0 to GridName.columns.Count-1 do
begin
len.WriteInteger(Formname+'-'+GridName.Name,GridName.Columns[i].FieldName,GridName.Columns[i].Width);
s:=s+GridName.Columns[i].FieldName+',';
end;
s:=copy(s,1,length(s)-1);
ini.WriteString(Formname+'-'+TableName.name,'FieldsName',s);
ini.Free;
len.free;
end;
procedure GetRight(Menuname:string;Formname:TForm); //获取当前使用者的权限资料
var i,j:integer;
vbs:TButtonSet;
begin
if formname.FindComponent('DBNavigator1')<>nil then
begin
vbs:=TDBNavigator(formname.Findcomponent('DBNavigator1')).VisibleButtons;
for i:=0 to FuncList.Count-1 do
begin
if UserRight(Funclist.Items[i]^).menuname=menuname then
begin
UserRight(Funclist.Items[i]^).Formname:=formname;
if UserRight(Funclist.Items[i]^).R_Add=false then vbs:=vbs-[nbinsert];
if UserRight(Funclist.Items[i]^).R_Edit=false then vbs:=vbs-[nbedit];
if UserRight(Funclist.Items[i]^).R_Del=false then vbs:=vbs-[nbdelete];
if (UserRight(Funclist.Items[i]^).R_Add=false) and (UserRight(Funclist.Items[i]^).R_Edit=false) then vbs:=vbs-[nbpost,nbcancel];
end;
end;
TDBNavigator(formname.Findcomponent('DBNavigator1')).VisibleButtons:=vbs;
end else
begin
for j:=0 to formname.ComponentCount-1 do
begin
if formname.Components[j].ClassType=TDBNavigator then
begin
vbs:=TDBNavigator(formname.components[j]).VisibleButtons;
for i:=0 to FuncList.Count-1 do
begin
if UserRight(Funclist.Items[i]^).menuname=menuname then
begin
UserRight(Funclist.Items[i]^).Formname:=formname;
if UserRight(Funclist.Items[i]^).R_Add=false then vbs:=vbs-[nbinsert];
if UserRight(Funclist.Items[i]^).R_Edit=false then vbs:=vbs-[nbedit];
if UserRight(Funclist.Items[i]^).R_Del=false then vbs:=vbs-[nbdelete];
if (UserRight(Funclist.Items[i]^).R_Add=false) and (UserRight(Funclist.Items[i]^).R_Edit=false) then vbs:=vbs-[nbpost,nbcancel];
end;
end;
TDBNavigator(formname.components[j]).VisibleButtons:=vbs;
end;
end;
end;
if formname.FindComponent('tbnprint')<>nil then
begin
for i:=0 to FuncList.Count-1 do
begin
if UserRight(Funclist.Items[i]^).menuname=menuname then
begin
UserRight(Funclist.Items[i]^).Formname:=formname;
if UserRight(Funclist.Items[i]^).R_Print=false then
TToolButton(formname.FindComponent('tbnprint')).visible:=false;
end;
end;
end;
end;
function IsRight(formname:TForm; dataset:TDataset):boolean; //判断使用者是否具有该权限 =true表示有 =false表示无
var i:integer;
begin
result:=false;
for i:=0 to FuncList.Count-1 do
begin
if UserRight(Funclist.Items[i]^).formname=formname then
begin
if dataset.State=dsInsert then result:=UserRight(Funclist.Items[i]^).R_Add;
if dataset.State=dsEdit then result:=UserRight(Funclist.Items[i]^).R_Edit;
end;
end;
end;
function Tax:string;
var tax:textfile;
path,s:string;
begin
//一次扣
try
result:='';
path:=extractfilepath(application.exename)+'\data\tax.inf';
if fileexists(path) then
begin
assignfile(tax,path);
reset(tax);
readln(tax,s);
if Pos('=1',s)>0 then //底薪
result:=result+'sal21010.factbasepay+';
readln(tax,s);
if Pos('=1',s)>0 then //职务津贴
result:=result+'sal21010.factprof+';
readln(tax,s);
if Pos('=1',s)>0 then //技术津贴
result:=result+'sal21010.facttech+';
readln(tax,s);
if Pos('=1',s)>0 then //部门津贴
result:=result+'sal21010.factdept+';
readln(tax,s);
if Pos('=1',s)>0 then //其它津贴1
result:=result+'sal21010.add1+';
// readln(tax,s);
// if Pos('=1',s)>0 then //其它津贴2
// result:=result+'sal21010.money2+';
readln(tax,s);
if Pos('=1',s)>0 then //奖励
result:=result+'sal21010.rewardmoney+';
readln(tax,s);
if Pos('=1',s)>0 then //全勤奖
result:=result+'sal21010.present+';
readln(tax,s);
if Pos('=1',s)>0 then //加班费
result:=result+'sal21010.otmoney+sal21010.smoney+sal21010.yearmoney+';
readln(tax,s);
if Pos('=1',s)>0 then //绩效奖金
result:=result+'case when per24010.noname1b=0 then sal21010.noname11 else (-sal21010.noname11) end +';
readln(tax,s);
if Pos('=1',s)>0 then //年节奖金
result:=result+'case when per24010.noname2b=0 then sal21010.noname22 else (-sal21010.noname22) end ';
readln(tax,s);
{
if Pos('=1',s)>0 then //生产奖金
result:=result+'sal21010.productmoney+';
} closefile(tax);
result:=copy(result,1,length(result)-1);
end else application.messagebox('系统初始化文件tax.inf文件丢失,请采取必要的补救措失!','重大错误',mb_ok+mb_iconwarning);
except
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?