📄 logon_u.~pas
字号:
unit logon_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBCtrls, DB, ADODB,inifiles,
ComCtrls,jpeg;
type
TloginFrm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
DBLookupComboBox1: TDBLookupComboBox;
Image1: TImage;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Bevel1: TBevel;
Bevel2: TBevel;
DataSource1: TDataSource;
UserTable: TADOTable;
ADOQuery1: TADOQuery;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure DBLookupComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
Function IsUser(mystr1,mystr2:string):Boolean; //检测用户密码是否正确
procedure WriteIniFile(); //注册服务器名称
procedure ReadIniFile(); //读取配置文件
Function isConfigIni():Boolean;
procedure FormActivate(Sender: TObject);
Function DeCrypt(const S: string;key:word):string;
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
loginFrm: TloginFrm;
myTitle:string; //读取主窗口标题设置信息
implementation
uses MyDM_u, MainFrm_u;
{$R *.dfm}
procedure TloginFrm.BitBtn2Click(Sender: TObject);
begin
application.Terminate ;
end;
procedure TloginFrm.BitBtn1Click(Sender: TObject);
var
strConn:string;
strMess:string;
begin
strMess:='初始化错误,数据库连接失败!'+char(13)+'请检查网络连接是否正常,服务器是否可用。';
if not myDM.Conn.Connected then
begin
if Edit1.text='' then
begin
application.MessageBox('没有可用的数据库服务器可连接!','',mb_ok+mb_IconExclamation);
edit1.SetFocus ;
abort;
end;
strConn:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+trim(Edit1.Text) ;
//strConn:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=myDataBase;Data Source='+trim(Edit1.Text);
myDM.Conn.ConnectionString:=strConn;
try
myDM.Conn.Connected:=True;
except
application.MessageBox(pchar(strMess),'连接错误',MB_OK+mb_IconError);
abort;
end;
UserTable.Active:=True;
end;
if DBLookupComboBox1.Text='' then
begin
application.MessageBox('请确认您登陆的用户名!','提示',mb_ok+mb_IconExclamation);
DBLookupComboBox1.SetFocus ;
abort;
end;
if Edit2.Text='' then
begin
application.MessageBox('请输入您的密码!','提示',mb_ok+mb_IconExclamation);
Edit2.SetFocus ;
abort;
end;
with AdoQuery1 do
begin
//核对用户名和密码是否相符
if not IsUser(trim(DBLookupComboBox1.KeyValue),DeCrypt(trim(Edit2.Text),2468)) then
begin
application.MessageBox ('您的密码输入有误,请重新输入!','提示',mb_ok+mb_iconExclamation);
edit2.Clear ;
edit2.SetFocus ;
exit;
end;
MainFrm.str_uid:=trim(FieldByName('uid').Asstring);
MainFrm.str_UserName:=trim(FieldByName('Uid').Asstring);
MainFrm.str_pwd:=trim(FieldByName('Pwd').Asstring);
Mainfrm.Caption:=myTitle;
Mainfrm.strServerName:=trim(Edit1.Text);
if not isConfigIni then WriteIniFile;
end;
self.Close;
with MainFrm do
begin
StatusBar1.Panels[1].Text:='操作员:'+str_UserName;
//StatusBar1.Panels[3].Text:=FormatDateTime('yyyy年mm月dd日 ddd',now);
StatusBar1.Panels[3].Text:=FormatDateTime('HH:MM:SS',now);
end;
end;
procedure TloginFrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then DBLookupComboBox1.SetFocus ;
end;
procedure TloginFrm.DBLookupComboBox1KeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then Edit2.SetFocus ;
end;
procedure TloginFrm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then BitBtn1.SetFocus ;
end;
Function TloginFrm.IsUser(mystr1,mystr2:string):Boolean;
begin
with AdoQuery1 do
begin
close;
sql.Clear ;
sql.Add('select * from Userdb where uid=:a and Pwd=:b');
parameters[0].value :=mystr1;
parameters[1].value:=mystr2;
open;
end;
if ADOQuery1.RecordCount >0 then
result:=True
else
result:=False;
end;
//系统启动时返回读取服务器配置文件是否成功
//如果不成功则注册服务器,以便下次启动时直接与之连接
procedure TloginFrm.ReadIniFile();
var
myinifile:Tinifile;
begin
myinifile:=Tinifile.create('CfgServer.ini'); //打开INI文件
Edit1.text:=myinifile.readString('服务器名称','ServerName',''); //读取INI文件
myTitle:=myinifile.ReadString('公司名称','Company','');
end;
Function TloginFrm.isConfigIni():Boolean;
var
myinifile:Tinifile;
S:string;
begin
myinifile:=Tinifile.create('CfgServer.ini'); //打开INI文件
s:=myinifile.readString('服务器名称','ServerName',''); //读取INI文件
if S='' then
result:=False
else
result:=True;
end;
procedure TloginFrm.WriteIniFile(); //注册服务器名称
var
myinifile:Tinifile;
begin
if (edit1.text='')then exit;
myinifile:=Tinifile.create('CfgServer.ini'); //打开INI文件
myinifile.writestring('服务器名称','ServerName', edit1.text); //将服器名写入INI文件
myinifile.writestring('公司名称','Company','汽车维修管理系统') ;
myinifile.writestring('时间','Time',datetostr(date())); //将注册日期添加到INI文件
myinifile.Destroy; //释放myinifile
end;
procedure TloginFrm.FormActivate(Sender: TObject);
begin
//如果读取文件成功则把注册的服务器名赋值给Edit1
if isConfigIni then ReadIniFile ;
//if not myDM.Conn.Connected=True then
// UserTable.Active:=True;
end;
Function TloginFrm.DeCrypt(const S: string;key:word):string;
var
i:byte;
begin
SetLength(result, Length(s));
for i:=1 to Length(S) do
begin
Result[i]:=Char(byte(s[i])XOR(key shr 8));
//key:=(byte(s[i])+key)*C1+C2;
end;
end;
procedure TloginFrm.Edit1Change(Sender: TObject);
var
strConn,strMess:string;
begin
strMess:='初始化错误,数据库连接失败!'+char(13)+'请检查网络连接是否正常,服务器是否可用。';
strConn:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=' +trim(Edit1.Text);
//strConn:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=myDataBase;Data Source=';
myDM.Conn.ConnectionString:=strConn;
try
begin
myDM.Conn.Connected:=True;
UserTable.Active:=True;
end
except
application.MessageBox(pchar(strMess),'连接错误',MB_OK+mb_IconError);
abort;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -