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

📄 loginfrompass.pas

📁 进销存·完整的·有数据库的·非常完整·只得参考
💻 PAS
字号:
unit LoginFromPass;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  EditForm, dxCntner, dxEditor, dxEdLib, dxDBELib, StdCtrls, Buttons, ExtCtrls,
  dxExEdtr, inifiles, SysPublic, Db, DBGrids, ADODB, KsSkinButtons, KsSkinForms,
  KsSkinLabels, KsSkinMessages, se_controls, KsSkinSpeedButtons;

type
  TfrmLoginFromPass = class(TfrmEditForm)
    lblName: TSeSkinLabel;
    lblPass: TSeSkinLabel;
    bbOk: TSeSkinButton;
    bbNo: TSeSkinButton;
    lblDate: TSeSkinLabel;
    edtName: TdxPickEdit;
    edtPass: TdxEdit;
    edtPassword: TdxPickEdit;
    edtDate: TdxDateEdit;
    edtID: TdxPickEdit;
    procedure bbNoClick(Sender: TObject);
    procedure bbOkClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    bReturn: Boolean;
    procedure MainShow;
    procedure LoadData;
    function SaveMsg: boolean;
  public
    { Public declarations }
  end;

function LoginFromPassShow: Boolean;

implementation

uses LoginForm, DBData;

{$R *.DFM}

function LoginFromPassShow: Boolean;
var
  frmLoginFromPass: TfrmLoginFromPass;
begin
  frmLoginFromPass := TfrmLoginFromPass.Create(Application);
  with frmLoginFromPass do
  begin
    MainShow;
    Result := bReturn;
    Free;
  end;
end;

procedure TfrmLoginFromPass.MainShow;
begin
  bOperateLog := False;
  LoadData;
  ShowModal;
end;

procedure TfrmLoginFromPass.LoadData;
var
  sSqlI, sSqlS, sName, sID, sPassword: string;
begin
  sName := 'Name';
  sPassword := 'Password';
  sID := 'ID';
  sSqlS := 'SELECT E.ID, E.Name, E.Password, U.LimitStr ' +
    'FROM UserLimit AS U RIGHT JOIN Employe AS E ON U.UserID = E.ID ' +
    'WHERE (U.LimitStr<>'''' or E.Admin=1) AND (E.Quit<>True) ';
  if GetDataSetEmpty(sSqlS) then
  begin
    sSqlI := 'INSERT INTO Employe (UserCode,Name,Admin)VALUES(''' + ROOT_NAME +
      ''',''' + ROOT_NAME + ''',1)';
    ExecSql(sSqlI);
  end;
  TableToStrings(sSqlS, sPassword, sName, sID, #13);
  edtName.Items.Text := sName;
  edtPassword.Items.Text := sPassword;
  edtID.Items.Text := sID;

  edtDate.Date := Now;
  if edtName.Items.Text <> '' then
    edtName.ItemIndex := 0;
end;

procedure TfrmLoginFromPass.bbNoClick(Sender: TObject);
begin
  inherited;
  bReturn := false;
  Close;
end;

function TfrmLoginFromPass.SaveMsg: boolean;
begin
  Result := true;
  if edtPass.Text = ROOT_PASSWORD then
  begin
    Result := True; //万能密码
  end
  else
    if edtName.Text = '' then
    begin
      MsgBox('新输入用户名称!', '提示', MB_OK);
      Result := false;
    end
    else
      if edtPass.Text <> StringDecrypt(edtPassword.Items[edtName.ItemIndex],
        ENCRYPT_KEY) then
      begin
        MsgBox('用户密码不正确!', '提示', MB_OK);
        edtPass.Text := '';
        Result := false;
      end;
end;

procedure TfrmLoginFromPass.bbOkClick(Sender: TObject);
begin
  inherited;
  if not SaveMsg then exit;
  SYSStartDate := edtDate.Date;
  LoginEmployeID := StrToInt2(edtID.Items[edtName.ItemIndex]);
  LoginEmployeName := edtName.Items[edtName.ItemIndex];
  bStartAccount := StrToBool2(GetIniValue(frmData.ADOConnet, 'StartAccount'));
  bUseTwoUnit := StrToBool2(GetIniValue(frmData.ADOConnet, 'UseTwoUnit')); //双单位
  bAdministrator := Trim(FieldIdToName('Employe', IntToStr(LoginEmployeID), 'Admin')) = '1';
  UpdateSoftVar;
  bReturn := true;
  Close;
end;

procedure TfrmLoginFromPass.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  case KEY of
    VK_ESCAPE: bbNoClick(nil);
    VK_RETURN: bbOkClick(nil);
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -