请教一个问题?

zzhouj 2002-03-12 11:12:04
我使用PB8.0开发一个登录界框时,本来预想是:
在单行编辑框sle_username内输入用户名,按回车,焦点移到单行编辑框sle_password上,方法是在sle_username的modified事件脚本中写入:

if keydown(13) then sle_password.setfocus()

再输入密码,再按回车,触发命令按钮cb_ok的clicked事件,方法是在sle_password的modified事件脚本中写入:

if keydown(13) then cb_ok.triggerevent(clicked!)


//cb_ok的clicked事件的脚本如下:
string username
string password

username=trim(sle_username.text)

SELECT CRM_User.Password
INTO :password
FROM CRM_User
WHERE CRM_User.Name=:username
USING SQLCA;

if SQLCA.SQLCode=0 then
if trim(password)=trim(sle_password.text) then
open(w_main)
close(parent)
else
//如果密码不正确的话,会执行到这里。
messagebox("客户关系管理","您的密码错误",Exclamation!,ok!)
sle_password.text=""
sle_password.setfocus()
//点了确定以后,光标在sle_password内,但是输入无效,
//点击该控件也无效,只有先点其它控件,再点它才能输入,请问这是为什么?
end if
else
messagebox("客户关系管理","您的用户名错误",Exclamation!,ok!)
sle_username.text=""
sle_password.text=""
sle_username.setfocus()
end if

//谢谢
...全文
55 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzhouj 2002-03-13
  • 打赏
  • 举报
回复
在家调试的时候有这个毛病,但是到了公司就没了。
还有
在单行编辑框sle_username内输入用户名,按回车,焦点移到单行编辑框sle_password上,方法是在sle_username的modified事件脚本中写入:

if keydown(13) then sle_password.setfocus()

再输入密码,再按回车,触发命令按钮cb_ok的clicked事件,方法是在sle_password的modified事件脚本中写入:

if keydown(13) then cb_ok.triggerevent(clicked!)

把以上两个脚本改放在other事件中时,在sle_username输入完,按回车时,会执行非法操作,不知什么原因?
sorrow_arrow 2002-03-13
  • 打赏
  • 举报
回复
我认为可能的原因就是你的MESSAGEBOX截获了焦点,因此虽然光标在SLE_PASSWORD里面,但是就是不能写入,不信,你注释掉MESSAGEBOX试试
zhanwei 2002-03-13
  • 打赏
  • 举报
回复
在sle_password的getfocus事件下加入:
This.SelectText(1, Len(This.Text))
就不用如下代码了:
sle_password.text=""
zhanwei 2002-03-13
  • 打赏
  • 举报
回复
......
//如果密码不正确的话,会执行到这里。
messagebox("客户关系管理","您的密码错误",Exclamation!,ok!)
//
parent.setfocus()//加入此条试一试
//
sle_password.text=""
sle_password.setfocus()
//点了确定以后,光标在sle_password内,但是输入无效,
//点击该控件也无效,只有先点其它控件,再点它才能输入,请问这是为什么?
end if
else
messagebox("客户关系管理","您的用户名错误",Exclamation!,ok!)
sle_username.text=""
sle_password.text=""
sle_username.setfocus()
end if


fzymr 2002-03-12
  • 打赏
  • 举报
回复
在窗口的key事件中写如下代码实现焦点的转换:



GraphicObject lcnt_control
string ls_control_name


lcnt_control = GetFocus()

IF KeyDown(KeyEnter!) THEN

CHOOSE CASE ClassName(lcnt_control)

CASE "sle_user"
sle_password.SetFocus()

CASE "sle_password"
cb_ok.TriggerEvent(Clicked!)
//cb_ok的clicked事件中进行用户密码的校验

CASE "cb_ok"
cb_ok.TriggerEvent(Clicked!)

CASE "cb_cancel"
cb_cancel.TriggerEvent(Clicked!)
//退出程序的程序
END CHOOSE

END IF

IF KeyDown(KeyEscape!) THEN
cb_cancel.TriggerEvent(Clicked!)
END IF

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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