📄 wnoptlogin.pas
字号:
unit WnOptLogin;
interface
uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, SysUtils, DB, DBTables,Menus,Variants,uShowinfo;
type
TfmOptLogin = class(TForm)
Label1: TLabel;
Image1: TImage;
edPW: TEdit;
Label3: TLabel;
Label2: TLabel;
edOptCode: TEdit;
btnOk: TBitBtn;
btnCancel: TBitBtn;
Label4: TLabel;
combCenterName: TComboBox;
procedure btnOKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure combCenterNameChange(Sender: TObject);
procedure edOptCodeChange(Sender: TObject);
private
procedure SetOkEnabled;
procedure ShowAllGrant(const MenuItem : TMenuItem);
{ Private declarations }
public
SuperManCode,SuperMan,SuperManPassword,UserNo,UserName,UserPassword : String;
InputMenuItem : TMenuItem ;//由控件传入
CurrentProgramId : Integer; //由控件的fProgramid传入
slCenterCode : TStringList;
CenterCode : string;
procedure optlogin(ProgramId:integer);
procedure ShowUserMenu(Item:TMenuItem;PostNo:String;var Count:Integer);
{ Public declarations }
end;
var
fmOptLogin: TfmOptLogin;
implementation
uses WnDm;
{$R *.DFM}
procedure TfmOptLogin.ShowUserMenu(Item:TMenuItem;PostNo:String;var Count:Integer);
var I : Integer;
begin
for i := 0 to Item.Count -1 do
begin
if Item[I].Caption <> '-' then
Inc(Count);
with dm.qryPostMenus do begin
Item[I].Visible := Locate('postno;menuno',vararrayof([postno,Count]),[]);
end;
ShowUserMenu(Item[I],PostNo,Count);
end;
end;
procedure TfmOptLogin.optlogin(ProgramId:integer);
var PostNo : String;
Count : Integer;
begin
CenterCode := slCenterCode.Strings[combCenterName.ItemIndex];
with dm.qryUsers do
begin
if Active then
Close;
//Prepare;
Parameters.ParamByName('centercode').Value := CenterCode;
Open;
end;
if edOptCode.Text = '' then
begin
ShowError('请输入操作员代码');
edOptCode.SetFocus;
Exit;
end;
//判断是否超级用户
if (edOptCode.Text = SuperManCode) and (edpw.Text = SuperManPassword) then
begin
UserNo := edOptCode.Text;
UserPassword := edPW.Text;
UserName := SuperMan;
ModalResult := mrok;
ShowAllGrant(InputMenuItem);
Exit;
end;
with dm do
begin
if not qryUsers.Locate('centercode;user_no',VarArrayof([CenterCode,edOptCode.Text]),[]) then
begin
ShowError('输入的操作员代码错误,请重新输入');
edOptCode.SetFocus;
Exit;
end;
if not qryUsers.Locate('centercode;user_no;user_password',vararrayof([CenterCode,edOptCode.Text,edPw.Text]),[]) then
begin
ShowError('输入的操作员口令错误,请重新输入');
edPW.SetFocus;
Exit;
end;
UserNo := edOptCode.Text;
UserPassword := edPW.Text;
UserName := qryUsers.FieldByName('user_name').AsString;
//如果是系统管理员,则显示所有的权限
if qryUsers.FieldByName('user_ismgr').AsString = '1' then
begin
ModalResult := mrok;
ShowAllGrant(InputMenuItem);
Exit;
end;
//检查是否在本程序中由岗位
if not qryUserPosts.Locate('centercode;programid;userno',vararrayof([CenterCode,programid,edOptCode.Text]),[]) then
begin
ShowError('您在本程序中没有岗位,请与系统管理员联系');
edOptCode.SetFocus;
Exit;
end;
//得到操作员在本程序中的岗位
PostNo := qryUserPosts.FieldByName('postno').AsString;
with qryPostMenus do
begin
if Active then
Close;
//Prepare;
Parameters.ParamByName('postno').Value := PostNo;
Parameters.ParamByName('centercode').Value := CenterCode;
Open;
end;
end;
Count := 0;
//显示相应岗位的权限
ShowUserMenu(InputMenuItem,Postno,Count);
ModalResult := mrOK;
end;
procedure TfmOptLogin.btnOKClick(Sender: TObject);
begin
//查找是否属于社保业务操作员
optLogin(CurrentProgramId);
end;
procedure TfmOptLogin.FormShow(Sender: TObject);
begin
fmOptLogin.Caption := Application.Title+'登录';
end;
procedure TfmOptLogin.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #27 then
begin
btnCancel.Click;
Exit;
end;
if key = #13 then
begin
SelectNext((ActiveControl AS TWinControl),True,True);
Key := #0;
end;
end;
procedure TfmOptLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if ModalResult <> mrOk then
begin
Application.ShowMainForm := False;
Application.Terminate;
end;
end;
procedure TfmOptLogin.ShowAllGrant(const MenuItem : TMenuItem);
var
I : Integer;
begin
//...显示程序的所有权限...
for I := 0 to MenuItem.Count - 1 do
begin
MenuItem.Items[I].Visible := True;
ShowAllGrant(MenuItem.Items[I]);
end;
end;
procedure TfmOptLogin.FormCreate(Sender: TObject);
begin
slCenterCode := TStringList.Create;
combCenterName.Items.Clear;
with dm.qryCenter do
begin
Open;
First;
while not eof do
begin
slCenterCode.Add(FieldByName('CENTERCODE').AsString);
combCenterName.Items.Add(FieldByName('CENTERNAME').AsString);
Next;
end;
Close;
end;
end;
procedure TfmOptLogin.combCenterNameChange(Sender: TObject);
begin
//...如果不输入中心代码,不允许输入操作员代码和密码...
edOptCode.Clear;
edPW.Clear;
edOptCode.Enabled := combCenterName.Items.IndexOf(combCenterName.Text) <> -1;
edPW.Enabled := edOptCode.Enabled;
SetOkEnabled;
end;
procedure TfmOptLogin.SetOkEnabled;
begin
btnOk.Enabled := (combCenterName.Text <> '') and
(edOptCode.Text <> '');
end;
procedure TfmOptLogin.edOptCodeChange(Sender: TObject);
begin
SetOkEnabled;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -