如何实现登录错误三次关闭系统,正确才显示主窗体
RT,高手们顺便看下代码中哪个地方有错误。变量好像没起作用。
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
Tforma = class(TForm)
Image1: TImage;
Image2: TImage;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label3: TLabel;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
private
nTime: integer; //密码输入次数计数
{ Private declarations }
public
{ Public declarations }
end;
var
forma: Tforma;
m:Boolean=False;
czy:string;
implementation
uses Unit3,Unit1;
{$R *.dfm}
procedure Tforma.Edit1Change(Sender: TObject);
begin
if (Trim(Edit1.Text)<>'') and (Trim(Edit2.Text)<>'') then
BitBtn1.Enabled:=True
else
BitBtn1.Enabled:=False;
end;
procedure Tforma.Edit2Change(Sender: TObject);
begin
if (Trim(Edit1.Text)<>'') and (Trim(Edit2.Text)<>'') then
BitBtn1.Enabled:=True
else
BitBtn1.Enabled:=False;
end;
procedure Tforma.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=vk_return) or (Key=vk_down) then
Edit2.SetFocus;
end;
procedure Tforma.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=vk_return) or (Key=vk_down) then
BitBtn1.SetFocus
else
Edit2.SetFocus;
if key=vk_up then
Edit1.SetFocus;
end;
procedure Tforma.BitBtn1Click(Sender: TObject);
//var mm: string;
begin
if Edit1.Text='' then
begin
ShowMessage('用户名不能为空!,请重新输入');
Edit1.SetFocus;
Exit;
end;
nTime := nTime + 1;
with Data.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from 操作员信息表 where (操作员姓名=:a) and (操作员密码=:b)');
Parameters.ParamByName('a').Value:=Trim(Edit1.Text);
Parameters.ParamByName('b').Value:=Trim(edit2.Text);
Open;
end;
if Data.ADOQuery1.RecordCount>0 then
begin
czy:=Data.ADOQuery1.fieldbyname('操作员姓名').AsString;
m:=True;
Form1.StatusBar1.Panels[3].Text:=czy;
edit1.Clear;
Edit2.Clear;
close;
end
else
begin
if nTime<3 then
begin //累计密码输入错误次数
Application.MessageBox('用户名称或密码不正确,请重新输入.','提示',0+64);
edit1.Clear;
Edit2.Clear;
Edit1.SetFocus;
end
else
begin
Application.MessageBox('对不起,您无权使用本系统.','提示',0+64);
Application.Terminate;
end;
end;
end;
procedure Tforma.FormShow(Sender: TObject);
begin
forma.Left:=round(screen.Width/2)-round(forma.Width/2);
forma.top:=round(screen.Height/2)-round(188/2);
AnimateWindow(Self.Handle,500,AW_VER_NEGATIVE);
nTime:=0;
edit1.SetFocus;
edit2.Text:='';
end;
procedure Tforma.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if m=False then
application.Terminate;
end;
procedure Tforma.BitBtn2Click(Sender: TObject);
begin
close;
end;
end.