确定按扭的default:=false; >>procedure Tflogin.EditnameKeyPress(Sender: TObject; var Key: Char); >>begin >> if key=#13 then >> begin >> if editname.text='' then >> begin >> showmessage('请输入用户名!'); >> editname.SetFocus ; >> end >> else >> editpass.SetFocus ; >> end; >>end; 改为 procedure Tflogin.EditnameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=13 then begin if editname.text='' then begin showmessage('请输入用户名!'); editname.SetFocus ; end else editpass.SetFocus ; end; end;
解决方法:
将你的按钮(如:确认/放弃)的Default设为FALSE,就可。
其实,就是一个Windows的默认按钮的问题。在Win3.1的书中就提到了。
你按enter就默认为安了ok的button
那么当按回车就激发了onclik事件,而你对它的oncilk事件的处理不当。
>>procedure Tflogin.EditnameKeyPress(Sender: TObject; var Key: Char);
>>begin
>> if key=#13 then
>> begin
>> if editname.text='' then
>> begin
>> showmessage('请输入用户名!');
>> editname.SetFocus ;
>> end
>> else
>> editpass.SetFocus ;
>> end;
>>end;
改为
procedure Tflogin.EditnameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key=13 then
begin
if editname.text='' then
begin
showmessage('请输入用户名!');
editname.SetFocus ;
end
else
editpass.SetFocus ;
end;
end;
建议你改该属性为FALSE
或在EDIT里处理ONKEYDOWN事件
这个可能性比较大,我觉得。实在不行的话,设置一个标志,然后在登录窗口的OnClose里检查。