📄 login.pas
字号:
unit Login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, ComCtrls, wwdblook ,DB;
type
TfrmLogin = class(TForm)
btnOK: TBitBtn;
btnCancel: TBitBtn;
Label3: TLabel;
Label4: TLabel;
GroupBox1: TGroupBox;
Label1: TLabel;
edUser: TEdit;
Label2: TLabel;
edPassWord: TEdit;
LbSelectedWard: TLabel;
WardLookuplog: TwwDBLookupCombo;
procedure btnOKClick(Sender: TObject);
procedure edUserKeyPress(Sender: TObject; var Key: Char);
procedure WardLookuplogNotInList(Sender: TObject;
LookupTable: TDataSet; NewValue: String; var Accept: Boolean);
procedure FormShow(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
{ Private declarations }
public
reload : smallint;
{ Public declarations }
end;
var
frmLogin: TfrmLogin;
implementation
uses Datamodule, HisUtilitis;
{$R *.DFM}
//验证帐号密码
procedure TfrmLogin.btnOKClick(Sender: TObject);
var
tmpWardName : Variant; //病区名称
begin
with DM do
begin
if not isChecked then
begin
try
Screen.Cursor := crHourGlass;
ReadRunParams; //装载运行环境
HisLocal.Close;
if not ProjHisadt.Connected then ProjHisadt.Open; //打开业务数据库
operator.Close;
operator.Open; //打开操作员表
except
Screen.Cursor := crDefault;
hisErrorPrompt('无法打开数据库!');
abort;
end;
Label4.Visible := True;
Label4.Caption := '正在检验帐号密码...';
Label4.Refresh;
if operator.Locate('operatorno;passwd',
VarArrayOf([edUser.Text,edPassWord.Text]),[]) then
begin //存在此用户
if pos('A',Operator.FieldByName('trust').AsString) > 0
then isNurse := True; //护士操作权限
if pos('B',Operator.FieldByName('trust').AsString) > 0 then
begin
isInCharge := True; //护长操作权限
isNurse := True;
end;
if pos('Y',Operator.FieldByName('trust').AsString) > 0 then
begin
isSysAdm := True; //系统管理员操作权限
isChecked := True;
Ward.Open;
LbSelectedWard.Enabled := True;
WardLookuplog.Enabled := True;
edUser.Enabled := False;
edPassWord.Enabled := False;
WardLookuplog.SetFocus;
Label4.Caption := '';
SysUtils.Abort;
end;
if (isNurse or isInCharge or isSysAdm) then
begin //合法用户
label4.Caption := '合法用户';
label4.Refresh;
isChecked := True;
currWardid := Operator.FieldByName('wardid').AsString;
Ward.Open;
tmpWardName := Ward.Lookup('wardid',currWardid,'name');
if not isSysAdm then
begin
isSysAdm := False;
end;
if VarIsEmpty( tmpWardName) then
DM.currWardName := ''
else
DM.currWardName := tmpWardName;
currOperatorno := Operator.FieldByName('operatorno').AsString;
currOperatorName := Operator.FieldByName('operatornm').AsString;
ModalResult := mrOK;
label4.Caption := '正在下载基础数据...';
label4.Refresh;
DM.DownLoadData; //下载基本数据 __7.29日
end
else
begin
hisErrorPrompt('用户没有足够的权限!');
ModalResult := mrNone;
end;
end
else //不存在此用户
begin
hisErrorPrompt('非法的用户名或密码!');
ModalResult := mrNone;
end;
end
else // 如果已经检查过身份
begin
if isSysAdm then
begin
currWardid := WardWardId.Value;
tmpWardName := WardName.Value;
if VarIsEmpty( tmpWardName) then
DM.currWardName := ''
else
DM.currWardName := tmpWardName;
currOperatorno := Operator.FieldByName('operatorno').AsString;
currOperatorName := Operator.FieldByName('operatornm').AsString;
IsChecked := False;
ModalResult := mrOK;
end;
end;
with DM.qryDeptSub do
begin
Close;
SQL.Clear;
SQL.Add('SELECT A.WARDID , B.NAME AS WARDNAME , ');
SQL.Add('A.DEPTNUM , C.NAME AS DEPTNAME , 0 AS ISALL ');
SQL.Add('FROM WARDRDEPT A ,WARD B ,DEPT C ');
SQL.Add('WHERE A.WARDID = B.WARDID ');
SQL.Add('AND A.DEPTNUM = C.NUM ');
SQL.Add('AND A.WARDID = :WARDID ');
SQL.Add('UNION ALL ');
SQL.Add('SELECT ''0'' AS WARDID , ''全病区'' AS WARDNAME , ');
SQL.Add('''0'' AS DEPTNUM ,''全病区'' AS DEPTNAME ,1 AS ISALL ');
SQL.Add('FROM TESTTIME ');
Params[0].AsString := DM.currWardid;
Open;
end;
Screen.Cursor := crDefault;
end; //do ...with End
end;
procedure TfrmLogin.edUserKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmLogin.WardLookuplogNotInList(Sender: TObject;
LookupTable: TDataSet; NewValue: String; var Accept: Boolean);
begin
Accept := False;
end;
procedure TfrmLogin.FormShow(Sender: TObject);
begin
with DM do
begin
isSysAdm := False;
isChecked := False;
isInCharge := False;
isNurse := False;
end;
end;
procedure TfrmLogin.btnCancelClick(Sender: TObject);
begin
Application.Terminate;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -