這是我的那個登錄窗體的確定按鈕的代碼 procedure Tlogin.OKBtnClick(Sender: TObject); var username,userpwd:string; userright:integer; begin adoquery1.close; adoquery1.SQL.Clear; adoquery1.SQL.Add('select username,userpwd,userright from tbluser where username='''+edit1.Text+''''); adoquery1.Open; username:=edit1.Text; userpwd:=edit2.Text; if (username<>'') and (userpwd<>'') then begin if (username=adoquery1.FieldByName('username').AsString) and (userpwd=adoquery1.FieldByName('userpwd').AsString) then begin userright:=adoquery1.fieldbyname('userright').AsInteger; case userright of 0: begin mainform.n2.Visible:=false; mainform.n3.Visible:=true; mainform.n6.Visible:=false; mainform.n7.Visible:=true; mainform.n8.Visible:=true; end; 1: begin {mainform.n2.Visible:=true; mainform.n3.Visible:=false; mainform.n6.Visible:=true; mainform.n7.Visible:=false; mainform.n8.Visible:=false;} mainform.n2.Visible:=false; mainform.n3.Visible:=true; mainform.n6.Visible:=false; mainform.n7.Visible:=true; mainform.n8.Visible:=true; end; 2: begin mainform.n2.Visible:=false; mainform.n3.Visible:=true; mainform.n6.Visible:=false; mainform.n7.Visible:=true; mainform.n8.Visible:=true; end; end;{case} mainform.userid:=edit1.Text; end else begin showmessage('用戶名或密碼不正確'); edit1.SetFocus; end end else begin showmessage('用戶名或密碼不能為空'); edit1.SetFocus; end; end;
简单的登陆窗口的实现,代码如下uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls;type TLoginForm = class(TForm) btok: TBitBtn; btno: TBitBtn; password: TEdit; Label2: TLabel; Label1: TLabel; user: TDBLookupComboBox; Panel1: TPanel; Panel2: TPanel; procedure FormShow(Sender: TObject); procedure btokClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure btnoClick(Sender: TObject); procedure FormCreate(Sender: TObject); private check: boolean; //检查密码输入是否正确 Ftimes: integer; //密码输入次数计数 { Private declarations } public procedure iniapp(qx: int64); //项目初始化 { Public declarations } end;var LoginForm: TLoginForm;implementationuses Udm, Umain;{$R *.dfm}procedure TLoginForm.FormShow(Sender: TObject); begin Ftimes := 0; //记录密码输入次数为0 check := false; User.SetFocus; //用户名选择获得焦点 PassWord.text := ''; //清空密码输入 user.DropDown; //为了方便用户选择,打开下拉列表 end;procedure TLoginForm.btokClick(Sender: TObject); var mm: string; qx: int64; begin Ftimes := Ftimes + 1; //每单击一次'确定'按钮,密码输入次数加1 mm := trim(adodm.Tuser.Fieldbyname('密码').AsString); //取得该用户在数据库中的密码 qx := adodm.Tuser.FieldValues['用户权限']; //取得该用户在数据库中的操作权限 if (mm = trim(PassWord.text)) and (qx > 1000000000) then begin MainForm.auser.name := adodm.Tuser.FieldValues['操作员']; MainForm.auser.qx := StrToint64(adodm.Tuser.FieldValues['用户权限']); MainForm.auser.id := StrToInt64(adodm.Tuser.fieldvalues['用户编号']); //记录用户的登陆时间和用户名 adodm.toper.Open; adodm.toper.append; adodm.toper.FieldByName('登录时间').AsDateTime := now; adodm.toper.FieldByName('用户编号').AsVariant := MainForm.auser.id; adodm.toper.Post; adodm.toper.Last; MainForm.operid := adodm.toper.FieldByName('操作员编号').AsVariant; iniapp(qx); //初始化主窗体属性 end else if Ftimes < 3 then if mm <> trim(PassWord.Text) then begin showmessage('密码不对,请重新录入!'); PassWord.SetFocus; exit; end else begin showmessage('你已经输入三次错误密码,请与管理员联系!'); User.SetFocus; exit; end else begin showmessage('对不起,你没有通过口令认证!'); application.Terminate; end; end;
procedure Tlogin.OKBtnClick(Sender: TObject);
var username,userpwd:string;
userright:integer;
begin
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select username,userpwd,userright from tbluser where username='''+edit1.Text+'''');
adoquery1.Open;
username:=edit1.Text; userpwd:=edit2.Text;
if (username<>'') and (userpwd<>'') then
begin
if (username=adoquery1.FieldByName('username').AsString) and (userpwd=adoquery1.FieldByName('userpwd').AsString) then
begin
userright:=adoquery1.fieldbyname('userright').AsInteger;
case userright of
0: begin
mainform.n2.Visible:=false;
mainform.n3.Visible:=true;
mainform.n6.Visible:=false;
mainform.n7.Visible:=true;
mainform.n8.Visible:=true;
end;
1: begin
{mainform.n2.Visible:=true;
mainform.n3.Visible:=false;
mainform.n6.Visible:=true;
mainform.n7.Visible:=false;
mainform.n8.Visible:=false;}
mainform.n2.Visible:=false;
mainform.n3.Visible:=true;
mainform.n6.Visible:=false;
mainform.n7.Visible:=true;
mainform.n8.Visible:=true;
end;
2: begin
mainform.n2.Visible:=false;
mainform.n3.Visible:=true;
mainform.n6.Visible:=false;
mainform.n7.Visible:=true;
mainform.n8.Visible:=true;
end;
end;{case}
mainform.userid:=edit1.Text;
end else begin showmessage('用戶名或密碼不正確'); edit1.SetFocus; end
end else begin showmessage('用戶名或密碼不能為空'); edit1.SetFocus; end;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls;type
TLoginForm = class(TForm)
btok: TBitBtn;
btno: TBitBtn;
password: TEdit;
Label2: TLabel;
Label1: TLabel;
user: TDBLookupComboBox;
Panel1: TPanel;
Panel2: TPanel;
procedure FormShow(Sender: TObject);
procedure btokClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure btnoClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
check: boolean; //检查密码输入是否正确
Ftimes: integer; //密码输入次数计数
{ Private declarations }
public
procedure iniapp(qx: int64); //项目初始化
{ Public declarations }
end;var
LoginForm: TLoginForm;implementationuses Udm, Umain;{$R *.dfm}procedure TLoginForm.FormShow(Sender: TObject);
begin
Ftimes := 0; //记录密码输入次数为0
check := false;
User.SetFocus; //用户名选择获得焦点
PassWord.text := ''; //清空密码输入
user.DropDown; //为了方便用户选择,打开下拉列表
end;procedure TLoginForm.btokClick(Sender: TObject);
var mm: string; qx: int64;
begin
Ftimes := Ftimes + 1; //每单击一次'确定'按钮,密码输入次数加1
mm := trim(adodm.Tuser.Fieldbyname('密码').AsString); //取得该用户在数据库中的密码
qx := adodm.Tuser.FieldValues['用户权限']; //取得该用户在数据库中的操作权限
if (mm = trim(PassWord.text)) and (qx > 1000000000) then
begin MainForm.auser.name := adodm.Tuser.FieldValues['操作员'];
MainForm.auser.qx := StrToint64(adodm.Tuser.FieldValues['用户权限']);
MainForm.auser.id := StrToInt64(adodm.Tuser.fieldvalues['用户编号']);
//记录用户的登陆时间和用户名
adodm.toper.Open;
adodm.toper.append;
adodm.toper.FieldByName('登录时间').AsDateTime := now;
adodm.toper.FieldByName('用户编号').AsVariant := MainForm.auser.id;
adodm.toper.Post;
adodm.toper.Last;
MainForm.operid := adodm.toper.FieldByName('操作员编号').AsVariant;
iniapp(qx); //初始化主窗体属性
end
else
if Ftimes < 3 then
if mm <> trim(PassWord.Text) then
begin
showmessage('密码不对,请重新录入!');
PassWord.SetFocus;
exit;
end else
begin
showmessage('你已经输入三次错误密码,请与管理员联系!');
User.SetFocus;
exit;
end
else
begin
showmessage('对不起,你没有通过口令认证!');
application.Terminate;
end;
end;