搜索
查看: 1245|回复: 3

[win] text输入框响应回车切换到下一个输入框

[复制链接]

1

主题

5

帖子

46

积分

新手入门

Rank: 1

积分
46
发表于 2018-8-27 16:59:40 | 显示全部楼层 |阅读模式
做登录和输入框的快速切换,可能很多用户更习惯使用回车。
之前的方案是用消息回调,发现很多问题,后来看到可以绑定快捷键。(范例程序-》快捷键-》自定义快捷键)这个使用起来真是超级方便了。



  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="aardio form";right=345;bottom=234;parent=...)
  4. winform.add(
  5. button={cls="button";text="登录";left=217;top=175;right=324;bottom=211;z=3};
  6. edit={cls="edit";text="这里是输入的帐号";left=88;top=63;right=324;bottom=91;edge=1;z=1};
  7. edit2={cls="edit";text="密码";left=88;top=112;right=324;bottom=140;edge=1;multiline=1;password=1;z=2}
  8. )
  9. /*}}*/

  10. winform.edit.translateAccelerator = function( msg ){
  11.    if( msg.wParam == 0xD/*_VK_ENTER*/ ){
  12.         if( msg.message == 0x101/*_WM_KEYUP*/ ){
  13.             win.setFocus(winform.edit2.hwnd);
  14.         }
  15.         return true;
  16.     }
  17. }

  18. winform.edit2.translateAccelerator = function( msg ){
  19.    if( msg.wParam == 0xD/*_VK_ENTER*/ ){
  20.         if( msg.message == 0x101/*_WM_KEYUP*/ ){
  21.             winform.button.oncommand();
  22.         }
  23.         return true;
  24.     }
  25. }

  26. winform.button.oncommand = function(id,event){
  27.         win.msgbox('ok');
  28. }

  29. win.setFocus(winform.edit.hwnd);

  30. winform.show();
  31. win.loopMessage();
复制代码
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-8-27 22:13:13 | 显示全部楼层
edit本来就提供了这个功能,一句代码不用写。

首先你要在控件属性里设置允许tab切换焦点,enter切换焦点可能还是个人习惯,tab切换焦点这是系统默认操作,所以如果你要考虑用户习惯,先把这个打开。

如果你设置了不让切换焦点,他当然就不给你切换。
回复

使用道具 举报

1

主题

5

帖子

46

积分

新手入门

Rank: 1

积分
46
 楼主| 发表于 2018-8-28 09:18:12 | 显示全部楼层
Jacen.He 发表于 2018-8-27 22:13
edit本来就提供了这个功能,一句代码不用写。

首先你要在控件属性里设置允许tab切换焦点,enter切换焦点 ...

就是把Enter当成tab切换来用,并且在最后一个的时候,直接提交。
这里是类似那种收银系统,操作习惯都是一路回车下去的。
感谢Jacen的说明。
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-8-28 11:14:07 | 显示全部楼层
回车提交,直接写到 onOk事件里就可以了,回车本来就是对话框默认快捷键
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form")
winform.add(
button={cls=
"button";text="登录";left=217;top=175;right=324;bottom=211;z=3};
edit={cls=
"edit";text="这里是输入的帐号";left=88;top=63;right=324;bottom=91;edge=1;tabstop=1;z=1};
edit2={cls=
"edit";text="密码";left=88;top=112;right=324;bottom=140;edge=1;multiline=1;password=1;tabstop=1;z=2}
)
/*}}*/

win.setFocus(winform.edit.hwnd);

winform.onOk =
function(){
    winform.msgbox(
"ok")
}

winform.show();
win.loopMessage()

;

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-15 14:33 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表