📄 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, 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 + -