Delphi7 (设计登录界面)

huaxl342308 2010-11-28 12:34:44
设计登录界面要求验证用户身份密码正确与否要给出信息为什么在输入用户名时没有验证用户的身份并且也没有转向edt2来输入内容呢??大家帮帮忙
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
edt1: TEdit;
Label2: TLabel;
edt2: TEdit;
procedure FormCreate(Sender: TObject);
procedure edt1KeyPress(Sender: TObject);
procedure edt2KeyPress(Sender: TObject);
procedure edt2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
edt1.Text:='';
edt1.MaxLength:=10;
edt1.Enabled:=true;
edt2.Text:='';
edt2.MaxLength:=6;
edt2.Enabled:=false;
end;
procedure TForm1.edt1KeyPress(Sender: TObject);
var
key: char ;
begin
key:='a';
if key=#13 then
if edt1.Text='张三' then
begin
ShowMessage('用户名输入正确,请继续!');
edt2.Enabled:=true;
edt2.SetFocus;
end
else
begin
ShowMessage('用户名输入错误,请重新输入!');
edt1.Text :='';
edt1.SetFocus ;
end;
end;
procedure TForm1.edt2KeyPress(Sender: TObject);
var
key: char;
begin
key:='0';
if not(key in ['0'..'9']) then
begin
key:=#0;
ShowMessage('密码输入错误,请重新输入!');
edt2.Text:='';
edt2.SetFocus;
end;
end;

procedure TForm1.edt2Change(Sender: TObject);
var
i: integer;
begin
if (length(edt2.Text)=6) then
if (edt2.Text='888888') then
ShowMessage('密码正确,请继续!')
else
begin
i:=0;
i:=i+1;
if i<3 then
begin
ShowMessage('密码错误,请重新输入!');
edt2.Text :='';
edt2.SetFocus;
end
else
begin
ShowMessage('3次密码错误,将退出应用程序系统!');
Close;
end;
end;
end;

end.
...全文
962 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
h98458 2010-11-29
  • 打赏
  • 举报
回复
if i>=3 then
begin
ShowMessage('3次输入错误,将退出应用程序!');
close ;
end;
if (length(edt2.Text)<>6) then exit;
if(edt2.Text='888888') then
begin
i:=0;//i值清0;
end
eles
begin
i:=i+1;
ShowMessage('密码错误,请重新输入!');
edt2.Text:='';
edt2.SetFocus;
end;
h98458 2010-11-29
  • 打赏
  • 举报
回复
上楼说的是,应该把i当做全局变量:
i: integer;
然后你的代码放在:OnClick 事件中:

if i>=3 then
begin
ShowMessage('3次输入错误,将退出应用程序!');
close ;
end;
if (length(edt2.Text)<>6) then exit;
if(edt2.Text='888888') then
begin
i:=0;//i值清0;
end
eles
{
i:=i+1;
ShowMessage('密码错误,请重新输入!');
edt2.Text:='';
edt2.SetFocus;
}
Oraclers 2010-11-28
  • 打赏
  • 举报
回复
......
var
key: char ;
begin
key:='a';
if key=#13 then
......
key='a' ,你已经设定了,自然key=#13是永远不可能的。
应该用edt1的OnKeyPress事件,记得这个事件有一个参数是Key,但你不能重新去定义。
Oraclers 2010-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 huaxl342308 的回复:]
procedure TForm1.edt2Change(Sender: TObject);
var
i: integer;
begin

if(length(edt2.Text)=6) then
if(edt2.Text='888888') then
ShowMessage('密码正确,请继续!')
else

begin
ShowMessage(……
[/Quote]
这个密码判断本不应放在这个事件中。因为当你在EDT2输入时,每输入一个字符都要执行一次,当还没输入完时可能老报密码错。如不另加按钮,放在OnExit事件中比较好点。
huaxl342308 2010-11-28
  • 打赏
  • 举报
回复
procedure TForm1.edt2Change(Sender: TObject);
var
i: integer;
begin

if(length(edt2.Text)=6) then
if(edt2.Text='888888') then
ShowMessage('密码正确,请继续!')
else

begin
ShowMessage('密码错误,请重新输入!');
edt2.Text:='';
edt2.SetFocus;
i:=1;
while i<=3 do
begin
i:=i+1;
end
else
begin
ShowMessage('3次输入错误,将退出应用程序!');
close ;
end;
end;
end;
问下错在哪
Oraclers 2010-11-28
  • 打赏
  • 举报
回复
你如果要判定3次,要用循环语句,如 while i<=3 do 或者 for i := 1 to 3 do
huaxl342308 2010-11-28
  • 打赏
  • 举报
回复
谢谢你的热情!我按照你的方法在属性栏中的事件页签中双击edt1KeyPress事件,自动生成!那个 问题是解决了!但是这句
begin
i:=0;
i:=i+1;
if i<3 then
begin
ShowMessage('密码错误,请重新输入!');
edt2.Text :='';
edt2.SetFocus;
end
else
begin
ShowMessage('3次密码错误,将退出应用程序系统!');
Close;
end; 没有起作用!是怎么回事啊???
bdmh 2010-11-28
  • 打赏
  • 举报
回复
你的edt1KeyPress事件根本不是delphi自带的事件,里面参数都不对,你之所以没反应,估计就是没有关联事件,你还是在属性栏中的事件页签中双击edt1KeyPress事件,自动生成吧
Oraclers 2010-11-28
  • 打赏
  • 举报
回复
不要在按键后判断,你可以放一个按钮,等用户名、口令等输入完后点这个按钮再去做判断。
huaxl342308 2010-11-28
  • 打赏
  • 举报
回复
谢谢你热情的回答我!!!我已经按照你说的试了下,但是还是没验证用户身份!问题还没解决
Oraclers 2010-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oraclers 的回复:]
......
var
key: char ;
begin
key:='a';
if key=#13 then
......
key='a' ,你已经设定了,自然key=#13是永远不可能的。
应该用edt1的OnKeyPress事件,记得这个事件有一个参数是Key,但你不能重新去定义。
[/Quote]
你可在属性页事件,直接点生成事件的定义,事件定义如下:
procedure edt1KeyPress(Sender :TObject;var Key :char);
在实现部分是:
procedure TForm1.edt1KeyPress(Sender :TObject;var Key :char);
var
//....;
begin
//Key是用户按下键盘的值。
......
end;
Delphi XE2 正式版的破解程序,有效哦。 Delphi XE2 官方完整 delphicbuilder_xe2_win_dl.iso下载地址: http://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso 文件大小: 2.33G MD5: de8b9f897e2ad678643b64898470b707 Delphi Prism XE2 - ISO 1.28G http://altd.embarcadero.com/download/prism/xe2/prism_xe2_win.iso RadPHP XE2 - ISO 343M http://altd.embarcadero.com/download/radphp/xe2/radphp_xe2_win.iso 建议大家用迅雷下载 ************************************** 英巴卡迪诺发布新版RAD Studio XE2开发工具套件 日前,英巴卡迪诺宣布发布新版RAD Studio XE2软件开发工具套件,新版包含了10多年来最深入全面的特性升级。RAD Studio XE2中包含了新版本的Delphi、C++Builder、Prism和RadPHP。主要特性包括完整的Delphi 64位Windows支持,通过全新的FireMonkey富商业应用平台支持Mac OSX和iOS,以及通过RadPHP XE2支持安卓web和移动应用开发。 对Delphi XE2和C++Builder XE2来说,一个极其重要的新特性就是FireMonkey,业界第一款用于创建商业软件的原生的能全面利用到CPU和GPU计算能力的富应用平台。使用 FireMonkey,Delphi和C++Builder开发人员能开发出视觉绚丽的高清和3D应用程序,并与后台的企业级数据库如Oracle、微软 SQL Server、IBM DB2、Sybase和其他数据库互联互通。FireMonkey应用以原生方式运行在Windows PC和Mac上,可以完全利用到现代GPU的处理能力,以不可置信的细节处理能力和优异的性能表现展现数据和用户界面。FireMonkey还可以使 Delphi XE2用户为移动(iOS)设备创建原生的高清和3D应用程序。 Delphi和C++Builder为应用开发提供原生开发方式,而RadPHP XE2则支持web开发和移动设备应用的开发。使用RadPHP XE2,开发人员可以轻松为移动智能电话和平板电脑创建支持触碰和UI优化的web应用。开发人员可以部署他们的移动Web应用为原生移动应用到苹果公司的iOS应用商店和安卓的应用市场。在他们的移动Web应用中,可以直接访问移动设备的硬件,如相机、GPS和重力感应器。 其他新增特性包括: Delphi XE2 和C++Builder XE2 Delphi XE2包括完整的Windows 64位对FireMonkey、编译器、调试器、RTL 和VCL的支持; dbExpress具有新的对InterBase XE, FireBird 2.5, SQL Anywhere 12 和ODBC的连接能力; 新的DataSnap移动连接器,带有原生的平台组件和示例以创建从移动客户端到Delphi DataSnap服务器的连接,支持安卓(Java), iOS (Objective C), 黑莓(Java) 和Windows Phone 7 (C#); 新增和更新的扩展工具,包括FastReport,用于快速设计和生成报表;Documentation Insight,用于Delphi的源代码文档工具; TeeChart、IBX、InstallAware、IP*Works、Aqtime、FinalBuilder、IntraWeb和Indy 的64位版本。 TeeChart、Indy和FinalBuilder还支持Mac平台; C++Builder XE2中还包含了新的代码审计和QA度量工具; LiveBindings使用户能连接任意类型的信息到任意的FireMonkey用户界面和图形对象上。用户可以绑定实时数据到标准的用户界面控件、高清或3D图形元素上,以创建可视化任意类型数据的崭新方式; RadPHP: 集成式为移动优化的Web开发; 部署应用到Web, iOS, 或安卓; 扩展的Zend框架组件集; Embarcadero Prism: 来自RemObjects的全新的.NET Oxygene编译器; 匿名接口实现; FastReport.net

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧