on click(50分)

  • 主题发起人 主题发起人 Free
  • 开始时间 开始时间
F

Free

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个口令登录程序 在EDIT的ONEXIT中验证口令是否正确,
若不正确不能退出EDIT,但FORM中还有一退出BUTTON,我希望
CLICK 退出能关闭FORM,应该如何做?(现在CLICK退出时,焦点
无法离开EDIT)
 
一般的口令登录程序都是由一个 Edit,一个 "确认" 按钮和一个 "取消" 按钮
组成,你应把口令验证写到"确认"按钮的 OnClick 事件上,如果口令错误,执
行 Edit.SetFocus 即可使焦点回到 Edit 上,让用户重新输入口令。这样用户
点"取消"按钮时就可以关闭 Form 了。
 
试试这段代码,好像没有问题吧?

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if edit1.text<>'xxx' then edit1.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
 
Free:除了我在“论坛”回答的以外,对于你又提出的问题,可以
这样解决:在主屏的OnFormSow事件中,执行登录屏.showmodal,
根据登录屏返回值(按“确定”还是“取消”),决定关闭主屏
退出程序,还是继续显示主屏。Show登录屏不应放在主屏的
OnActive事件中。口令合法性检查,就按照我在“论坛”中所述
,放在“口令”后面的控件或“确定”键中。
 
西西,坏人王寒松的回答:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if getfocus()=exitbtn.handle then
begin
close;
end
else 判断EDIT1的数据是否合法
如不合法
则 EDIT1。SETFOCUS
end;

顺便说,你这样做口令窗口太笨太笨了
 
最简单的办法,利用Tag,将Exit的Tag置为特殊值,
如999
那么在OnExit上就可以非常舒服地写上
if activecontrol.tag <>999 then

.....

 
你最好还是将判断语句写到OKBtn的Click中,
并将以下两行放入Form.Show中:OKBtn.Default:=True;
CancelBtn.Default:=False;
这样客户在输完口令后直接回车即可激活判断语句。
 
我结合了坏人兄和李京兄的方案,LOGINFROM放在ONSHOW ,在
EDIT的ONEXIT中用了GETFOCUS。在此感谢二位,对其他各位也表
示感谢!
 

Similar threads

S
回复
0
查看
822
SUNSTONE的Delphi笔记
S
S
回复
0
查看
753
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部