如何在按下anter键时,指定按钮的clicked事件,新问题
上次看到一个帖子,说这个问题,大家说用 Default 属性,但是:
感觉用 Default 不好啊,比如有输入用户名,密码2个控件,焦点首先在用户名输入上,输入完用户名按下 Enter 键,应该让焦点到密码输入上,输入完密码后再次按下 Enter 键,才应该触发 Clicked 事件。
要达到这样的目标有什么好办法呢?
问题点数:5、回复次数:7Top
1 楼sunpulse(波波)回复于 2006-06-04 17:18:45 得分 0
这样的话就不要用default属性了,用keydown事件
1. 用户名的根据pbm_keydown建立keydown事件
If key = KeyEnter! Then cb_password.SetFocus()
2. 密码的keydown事件
If key = KeyEnter! Then cb_ok.Event clicked()
里面用当用户按下enter时
Top
2 楼sunpulse(波波)回复于 2006-06-06 17:11:04 得分 0
问题已经解决,请楼主结贴。Top
3 楼bulebabyer(玉儿)回复于 2006-06-24 10:16:12 得分 0
1\焦点首先在用户名输入上,
在open事件里写。用户名.setfocus()
2\输入完用户名按下 Enter 键,应该让焦点到密码输入上,
If keydown( KeyEnter!) Then 密码.SetFocus()
2. 输入完密码后再次按下 Enter 键,才应该触发 Clicked 事件
If keydown( KeyEnter!) Then 确认.triggerevent(clicked!)
Top
4 楼txaywzc(太虚遨游)回复于 2006-07-06 10:42:55 得分 0
真不知道楼主想干什么,既然是一个登陆窗口,那么谁登陆的时候不是都按回车确认呀,那有按回车进行输入密码的,晕了
这样的窗口一般是用tab键控制那个得到焦点,而回车就是确认
OK!可以结贴了Top
5 楼TJ_REN(毛子)回复于 2006-07-06 11:42:13 得分 0
IF KeyDown(KeyEnter!) then
which_control = GetFocus()
CHOOSE CASE which_control
CASE sle_username
IF Trim(sle_username.Text)<>'' THEN
SELECT name INTO :ls_name
FROM pers_ick
WHERE gh=:sle_username.Text;
IF SQLCA.SQLCODE=0 THEN
sle_hoststring.Text = ls_name
ELSE
sle_hoststring.Text = '未知用户'
END IF
sle_password.SetFocus()
END IF
CASE sle_password
if TRIM(sle_username.text)<>'' AND TRIM(sle_password.text)<>'' then
SetPointer(HourGlass!)
if f_login(sle_username.text,sle_password.text) = FALSE then
Connect USING SQLCA;
SetPointer(Arrow!)
sle_username.Text=''
sle_password.Text=''
sle_username.SetFocus()
else
RegistrySet("HKEY_LOCAL_MACHINE\Software\aaa\DataBase","G_GH",g_gh)
RegistrySet("HKEY_LOCAL_MACHINE\Software\aaa\DataBase","G_NAME",g_name)
SetPointer(Arrow!)
Close(This)
end if
end if
END CHOOSE
END IF
这是我的一个LOGING。看看吧。应该有用的。
Top
6 楼joss(季节...夏至)回复于 2006-07-11 11:21:55 得分 0
楼主考虑建立一个DW控件,用户名和密码均在此DW中处理,焦点转换可加脚本处理GetColumn() 和SetColumn()函数来处理!可判断当前列为密码列时再进行验证和执行密码行进操作!
Top
7 楼rightyeah(众妙之门)回复于 2006-07-11 14:54:19 得分 0
不用像楼上几位说的这么麻烦。还是要用一个default的按钮作为确认按钮,按钮事件应该判断用户是否输入了用户名,如果没有,则把焦点转到输入框上去,然后再判断是否输入了密码,如果没有,还是要改变焦点
if trim(sle_user.text)='' then
messagebox('','please enter a user name')
sle_user.setfocus()
end if
if trim(sle_pwd.text)='' then
messagebox('','please enter password')
sle_pwd.setfocus()
end if
//继续处理
Top




