📄 ulogin.pas
字号:
unit Ulogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, Menus,
RzButton, ImgList,Registry,
ActnList,adodb, BusinessSkinForm, bsSkinData, RzRadChk, bsSkinCtrls,
bsSkinBoxCtrls, bsdbctrls, Mask, DBGridEh, DBCtrlsEh, DBLookupEh, RzEdit;
type
TFlogin = class(TForm)
RzBitBtn1: TRzBitBtn;
RzBitBtn2: TRzBitBtn;
img1: TImage;
il1: TImageList;
RzBitBtn3: TRzBitBtn;
RzBitBtn4: TRzBitBtn;
actlst1: TActionList;
ashow: TAction;
pass: TbsSkinDBPasswordEdit;
lbl1: TLabel;
lbl2: TLabel;
rcb1: TbsSkinCheckRadioBox;
rcb2: TbsSkinCheckRadioBox;
urname: TRzEdit;
procedure RzBitBtn1Click(Sender: TObject);
procedure RzBitBtn2Click(Sender: TObject);
procedure ashowExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RzBitBtn3Click(Sender: TObject);
procedure RzBitBtn4Click(Sender: TObject);
private
{ Private declarations }
public
ww:TRegistry;
{ Public declarations}
end;
var
Flogin: TFlogin;
implementation
uses Udate, Umain, Uljdate, Uwell, AES, ElAES;
{$R *.dfm}
procedure TFlogin.RzBitBtn2Click(Sender: TObject);
begin
if MessageDlg('真的要退出该系统吗?',mtInformation,[mbYes,mbno],0)=idyes then
fmain.close
else
Exit;
end;
procedure TFlogin.ashowExecute(Sender: TObject);
begin
urname.SetFocus;
ww:=TRegistry.Create;//创建ww对象
ww.RootKey :=HKEY_CURRENT_USER;//注意:通过修改RootKey可以把信息写到注册表的每一个角落
ww.OpenKey('software',FALSE);
ww.CreateKey( '进销存管理系统');
ww.OpenKey( '进销存管理系统',FALSE);
ww.CreateKey('进销存管理系统');//创建应用程序的名称
ww.OpenKey('进销存管理系统',TRUE);
ww.CreateKey('信息');
ww.OpenKey('信息',TRUE);
if (ww.ReadString('first')<>'1') or (ww.ReadString('system')='')then//通过“first“来判断程序是否
begin//是第一次写注册表,如果是第一次写则用程序给的默认值来 (或者说SYSTEM的值是否为空)
ww.WriteString('first','1');//是否第一次登录
ww.WriteString('numer','1');//登录次数
ww.WriteString('user','n');//是否保存用户名
ww.WriteString('pass','n');//是否保存密码
ww.WriteString('password','');//用户密码
ww.WriteString('urname','');//用户名称
ww.WriteString('sn','n');//是否注册
fadocd:=PromptDataSource(Handle,'Provider=SQLOLEDB.1;Persist Security Info=False;');
ww.WriteString('system',''+fadocd+''); //把客户第一次连接数据库的状态字符写到注册表里
end
else begin
ww.WriteString('numer',''+inttostr(strtoint(ww.ReadString('numer'))+1)+'');
if ww.ReadString('user')='y' then begin
rcb1.Checked:=True;
urname.text:=ww.ReadString('urname');end
else begin rcb1.Checked:=False;urname.text:='';urname.SetFocus; end;
if ww.ReadString('pass')='y' then begin
pass.text:=ww.ReadString('password');
rcb2.Checked:=True;
end
else begin rcb2.Checked:=False; pass.Text:='';end;
end;
fdate.con1.connectionstring:=(ww.ReadString('system'));
try
fDate.con1.Open;
fadocd:=fdate.con1.ConnectionString;
except
ShowMessage('数据库服务器连接不通请联系管理员!');
Exit;
end;
end;
procedure TFlogin.RzBitBtn1Click(Sender: TObject);
begin
if not fDate.CON1.Connected then
begin
ShowMessage('请先连接数据库!');
Exit;
end;
if (ww.readstring('sn')='n') and (StrToInt(ww.ReadString('numer'))>=20) then begin
MessageBeep(0);
MessageDlg('对不起该软件已到使用期!请先注册!',mtError,[mbyes],0);
exit;
end;
with fdate.qryuser do begin
Close;
Parameters.ParamByName('urname').Value:=urname.Text;
Parameters.ParamByName('urpass').Value:=pass.Text;
Open;
end;
if fdate.qryuser.RecordCount=0 then begin
MessageBeep(0);
ShowMessage('登录失败! 请检查:'+ #13#10#13#10 + '1. 数据库服务器域名或IP是否存在;' +
#13#10 + '2. 登录名与密码是否正确;' + #13#10 + '3. 注意是否错按下 Caps Lock 键.' +
#13#10 + #13#10);
urname.SetFocus;
Exit;
end;
if (fdate.qryuser.RecordCount>0) and (fdate.qryuseremlogin.Value=true) then begin
MessageBeep(0);
ShowMessage('该用户已经登录,登录失败!');
Exit;
end;
if(fdate.qryuser.RecordCount>0) and (fdate.qryuseremlogin.Value=false) then begin
fdate.qryuser.Edit;
fdate.qryuseremlogin.Value:=true;
try fdate.qryuser.Post;
except
fdate.qryuser.Cancel;
end;
passwords:=trim(pass.text);
yhname:=Trim(urname.Text);
urid:=fdate.qryuseremid.Value;
ww.OpenKey('位置',FALSE);//打开“位置”键
ww.WriteString('system',''+fadocd+'');
if rcb1.Checked=true then begin//如果当前程序的设置写进去,则把这一信息写入注册表,
ww.WriteString('user','y');
ww.WriteString('urname',''+trim(urname.text)+'');
end
else begin
ww.WriteString('user','n');
ww.writestring('urname','');
end;
if rcb2.Checked=True then begin
ww.WriteString('pass','y');
ww.WriteString('password',''+trim(pass.text)+''); end
else begin
ww.WriteString('pass','n');
ww.WriteString('password',''); end;
if (ww.ReadString('sn')='n') and (strtoint(ww.ReadString('numer'))<=20) then
ShowMessage('您还可以使用['+''+inttostr(20-strtoint(ww.ReadString('numer')))+''+']次!');
close;
Fmain.Top:=150;
fmain.RzGroup1.Open;
Fmain.Timer1.Enabled:=True;;//调用判断看当前的库存数量是否小于用户的设置量
end;
end;
procedure TFlogin.FormShow(Sender: TObject);
var
fWELL: TfWELL;
begin
fwell:=tfwell.Create(Self);
fwell.Show;
Application.ProcessMessages;
Sleep(2000);
fwell.Free;
ashow.Execute;
end;
procedure TFlogin.RzBitBtn3Click(Sender: TObject);
begin
try fdate.con1.Close;
except
ShowMessage('数据库关闭过程中出现错误!');
Exit;
end;
fadocd:=PromptDataSource(Handle,ww.ReadString('system'));
fdate.con1.connectionstring:=fadocd;
try fdate.con1.Open;
except
ShowMessage('数据库连接失败!');
fdate.con1.Close;
end;
end;
procedure TFlogin.RzBitBtn4Click(Sender: TObject);
begin
if not fDate.CON1.Connected then
begin
ShowMessage('请先连接数据库!');
Exit;
end;
if not fmain.qryinfo.Active then
fMain.qryInfo.Open;
fMain.qryInfo.Edit;
fMain.qryInfosiSN.Value := InputBox('软件注册','请在下面输入注册码',fMain.qryInfosiSN.Value);
fMain.qryInfo.Post;
//ShowMessage(''+EncryptString(fMain.qryInfosiSN.Value,fMain.qryInfosiSN.Value,kb256)+'');
if EncryptString(fMain.qryInfosiSN.Value,fMain.qryInfosiSN.Value,kb256) = SN then
begin
ShowMessage('谢谢您的支持, 我们将努力做得更好');
Fmain.qryinfo.Edit;
Fmain.qryinfosiSN.Value:='';
Fmain.qryinfo.Post;
ww.WriteString('sn','y');
end
else
ShowMessage('软件注册失败, 请联系开发商购买!');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -