login.pas
来自「人事管理程序源码」· PAS 代码 · 共 224 行
PAS
224 行
unit login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ComCtrls, Buttons,DateUtils,ADODB;
type
TForm_login = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Panel2: TPanel;
xtrq: TDateTimePicker;
cx_MM: TEdit;
cx_czy: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Box_mm: TComboBox;
procedure BitBtn2Click(Sender: TObject);
procedure cx_czyKeyPress(Sender: TObject; var Key: Char);
procedure cx_MMKeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure xs_dwmc;
procedure save_czjl;
function jm(num:integer):string;
function pm(num_str:string):integer;
private
{ Private declarations }
public
{ Public declarations }
login_OK,czrybm,czryxm,czymm:string;
xtdqrq:Tdate;
end;
var
Form_login: TForm_login;
implementation
uses U_gzda_dm, U_main;
{$R *.DFM}
procedure TForm_login.BitBtn2Click(Sender: TObject);
begin
login_OK:='no';
close;
end;
procedure TForm_login.cx_czyKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then cx_mm.SetFocus ;
end;
procedure TForm_login.cx_MMKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then bitbtn1.SetFocus ;
end;
procedure TForm_login.FormShow(Sender: TObject);
begin
with gzda_dm.ADODataSet1 do begin
if active then active:=false;
commandtext:='select * from czryBM order by bm';
open;
first;
cx_czy.Items.Clear;
box_mm.Items.Clear;
while not eof do begin
cx_czy.Items.Add(fieldbyname('xm').asstring);
box_mm.Items.Add(fieldbyname('bm').asstring+'.'+fieldbyname('mm').asstring);
next;
end;
cx_czy.ItemIndex:=1;
close;
end;
cx_czy.SetFocus;
end;
procedure TForm_login.BitBtn1Click(Sender: TObject);
var
s_index:integer;
mm:string;
begin
s_index:=cx_czy.ItemIndex;
czrybm:=copy(box_mm.Items.Strings[s_index],1,3);
czryxm:=cx_czy.Text;
czymm:=cx_mm.text;
if czryxm='' then
begin
showmessage('请选择操作员!!');
cx_czy.SetFocus ;
abort;
end;
mm:=trim(copy(box_mm.Items.Strings[s_index],5,length(box_mm.Items.Strings[s_index])-3));
if mm=cx_mm.Text then
begin
login_OK:='ok';
xs_dwmc;
save_czjl;
end
else
begin
showmessage('操作员密码输入不正确,请重新输入!!');
cx_mm.Text :='';
cx_mm.refresh;
cx_mm.SetFocus ;
abort;
end;
close;
end;
procedure TForm_login.save_czjl;
var
yxcs:integer;
begin
with gzda_dm.ADODataSet_cx do begin //记录进入数据
if active then active:=false;
commandtext:='select * from czyjl where (year(jrsj)=:nian) order by xh';
Parameters.ParamByName('nian').Value:=yearof(now);
open;
append;
fieldbyname('czyxm').AsString:=czryxm;
fieldbyname('jrsj').AsDateTime:=now;
post;
UpdateBatch(arCurrent);
close;
end;
with gzda_dm.ADODataSet_cx do begin //记录进入数据
if active then active:=false;
commandtext:='select * from xtsz';
open;
first;
edit;
fieldbyname('mmc').AsString:=jm(pm(fieldbyname('mmc').AsString)-1);
post;
UpdateBatch(arCurrent);
end;
end;
procedure TForm_login.FormActivate(Sender: TObject);
begin
xtrq.Date:=now;
end;
procedure TForm_login.xs_dwmc;
begin
with gzda_dm.ADODataSet10 do begin
if active then active:=false;
commandtext:='select sj.bh,sj.mc,sj.fzsjxmbh from fzsj sj,fzsjxm xm where (sj.fzsjxmbh=xm.fzsjxmbh) and (xm.mc=:cx_mc) order by sj.bh';
Parameters.ParamByName('cx_mc').Value:='软件使用单位';
open;
Form_main.StatusBar1.Panels[0].Text:='单位:'+fieldbyname('mc').AsString;
first;
close;
end;
end;
function TForm_login.pm(num_str:string):integer;
var
i,j:integer;
begin
try
i:=strtoint(copy(num_str,4,2));
except
i:=8;
end;
try
j:=strtoint(copy(num_str,9,2));
except
j:=3;
end;
pm:=i*99+j;
end;
function TForm_login.jm(num:integer):string;
var
r1,r2:extended;
r1_str,r2_str:string;
i,j:integer;
i_str,j_str:string;
begin
i:=num div 99; //商
if i<10 then
i_str:='0'+inttostr(i)
else
i_str:=inttostr(i);
j:=num mod 99; //余数
if j<10 then
j_str:='0'+inttostr(j)
else
j_str:=inttostr(j);
r1:=int(99+Random(0)*1000);
r2:=int(99+Random(0)*1000);
if r1<10 then
r1_str:='00'+floattostr(r1)
else
if r1<100 then
r1_str:='0'+floattostr(r1)
else
if r1<1000 then
r1_str:=floattostr(r1);
if r2<10 then
r2_str:='00'+floattostr(r2)
else
if r2<100 then
r2_str:='0'+floattostr(r2)
else
if r2<1000 then
r2_str:=floattostr(r2);
jm:=r1_str+i_str+r2_str+j_str;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?