📄 loginfrompass.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, KsControls, KsButtons, KsSkinButtons, KsHooks, KsForms,
KsSkinForms, KsLabels, KsSkinLabels, KsMessages, KsSkinMessages;
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 + -