CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  控件与界面

如何在按下anter键时,指定按钮的clicked事件,新问题

楼主zhaixn(火焰戟)2006-06-04 11:07:32 在 PowerBuilder / 控件与界面 提问

上次看到一个帖子,说这个问题,大家说用   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

相关问题

关键词

得分解答快速导航

  • 帖主:zhaixn

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo