⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wnoptlogin.pas

📁 个人写的一个操作员管理部分
💻 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 + -