回车键替换TAB

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

    在Delphi编程中,如何实现用回车键在若干个编辑窗口中切换?比如,姓名和密码两个输入窗口,输入姓名后,只能用Tab键或用鼠标定位光标到密码输入窗口,我想用回车键切换窗口。

回答:

    先将窗体的KeyPreview属性设为True。然后在FormKeyPress事件中加入以下代码:
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
     if Key = #13 then { 如果按下了回车键 }
     begin
     Key := #0; { 吃掉回车键 }
     Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }
     end;
    end;
    
    这个方法对于大多数控件都适用,但不适用于TButton控件,因为对于按钮,回车键等于按下了按钮,不触发FormKeyPress事件。
    
    Perry问:
    非常感谢得到你的指点,你的方法确实已经非常简单,但如果要在每一个窗口都重复写以上内容,还是有些繁。怎样将其改写成一个自定义过程,然后在每一个窗口中调用此过程?
    答:要改写成一个自定义过程,可以这样:
    procedure MyKeyPress(frm:TForm; var Key: Char);
    begin
     if Key = #13 then { 如果按下了回车键 }
     begin
     Key := #0; { 吃掉回车键 }
     frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }
     end;
    end;
    
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
     MyKeyPress(Self, Key);
    end;
    
    如果你经常使用这样的窗体,你也可以在设置好KeyPreview属性和输入代码后,在Form上击右键,选择Add to Repository,这样把Form添加到Delphi的Repository库中,以后建立新窗口时,可以从Delphi的对话框的Forms中选择你添加的这个窗体作为模板。
    
    Perry问:
    非常感谢您给出以上好方法。最近我发现以上方法还有一个不足之处:
    如果我在form中使用了DBMemo控件,那么在DBMemo中(表格的备注字段)将不能輸入Enter,也就是说說在DBMemo中不能实现换行操作。因为只要你按下Enter键,光标马上就会从DBMemo中跳幵,这显然不合要求。请问这一点应如何改进?谢谢!
    答:这的确是个问题。可以这样解决:在KeyPress事件中先判断一下控件的类型,如果当前控件是TMemo或TDBMemo(甚至可以进一步检查控件的名字中是否带有Memo的),就不进行移动,对于这样的控件还是通过Tab键移动。下面是代码:
    var sClassName: string;
    begin
     if Key = #13 then { 如果按下了回车键 }
     begin
     sClassName := TForm(Sender).ActiveControl.ClassName;
     if (sClassName <> 'TDBMemo')
     And (sClassName <> 'TMemo') then
     begin
     Key := #0; { 吃掉回车键 }
     Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }
     end;
     end;
    
    刘鹰的意见:
    选中窗体上所有控件后,在他们的KEYPRESS事件中写如下代码:
    SELECTNEXT(SENDER AS TWINCONTROL,TRUE,TRUE);
    主持人注:这个方法比较麻烦,仅供参

C#按回车Enter使输入焦点自动跳到下一个TextBox的方法收集 在录入界面中,用户往往需要按回车键时光标自动跳入下一个文本框,以方便录入操作。在C#中实现该功能有多种方法,以下是小编收集的不使用TAB键,而直接用回车键将光标转到下一个文本框的实现方法。 一、利用Windows消息模拟发送Tab键 将各个TextBox的TabIndex属性按顺序编号1、2、3……,然后将TextBox的TabStop属性置为True,在每一个TextBox的键盘按下事件中,... 阅读详情

相关推荐

Delphi回车键代替Tab

Delphi回车键代替TabDelphi回车键代替TabDelphi回车键代替TabDelphi回车键代替Tab

在asp.net中用回车代替tab

在asp的时候,用回车代替tab很简单,只用在onfocus里写代码就行了,但在asp.net的时候由于服务器控件不支持这一招,实在是比较麻烦。那么能不能也很简单实现又不回调服务器呢。下面的代码可以解决这个问题: if(event.keyCode==13 && event.srcElement.type!=button && event.srcElement.type!=submit

Everything is meaningness 1365

delphi 回车Tab下移控件.rar

delphi 回车Tab下移控件

回车代替TAB切换控件——文本框失去焦点

回车代替TAB切换控件——文本框失去焦点

xwnxwn的专栏 1820

C#在WinForm和Web中实现回车键代替TAB键切换控件焦点

有文本框textbox1和textbox2,现在光标在textbox1中,按回车键后怎样让光标跳至textbox2,实现tab键的功能.首先设置textBox1和textBox2的TabIndex属性,分别设置为1,2。 private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventAr...

anna19850927的博客 422

回车键替换Tab键完成循环索引功能。

DRP视频中有个小例子,为了给用户更好的体验,加上了个回车键替换Tab键的功能。然后把视频的代码放到我这,就出不来了。最后判断是浏览器的问题。因为在我的IE8测试版能够实现,但是放到IE9就不行了,火狐,360更别提了。     最后根据浏览器的兼容法则做出以后最后的代码 经过我的测试:FF应该不支持 window.event。不过二者都可以使用 arguments[0]来代替(不用写入e)。

一个程序员的一些碎碎念 1577

表单切换,用回车键替换Tab健。

表单切换,用回车键替换Tab健。 <div> <form> <input name="a" tab="1" /> <input name="a" tab="3" /> <input name="a" tab="2" /> <input ...

weixin_30419799的博客 568

C#中将回车键替换tab

<br />protected override bool ProcessCmdKey(ref Message msg, Keys keydata)       {<br />            <br />             if (keydata == Keys.Enter &&<br />              (<br />              (<br />               !(ActiveControl is System.Windows

lionzl的专栏 1302

vxe-table 如何用回车键替换 Tab 键功能,回车切换到右侧单元格,回车切换下一个单元格

vxe-table 如何自定义 Tab 键和回车键功能 默认的快捷键功能是 Tab 键用于切换左右单元格,回车键用于切换到下面的单元格, 由于在实际的项目需求中,需要用到特殊需求,比如回车键切换向右单元格,这样就可以编辑完一个接着编辑下一个, 一般的处理方式可以通过监听 keyup 事件去实现,方式比较繁琐的。 不过看到一个 vxe-table-plugin-shortcut-key 快捷键插件...

我的博客 6007

使用回车键替换Tab键在表单项目中切换焦点

/***************************************************** * Share JavaScript (http://www.ShareJS.com) * 使用此脚本程序,请保留此声明 * 获取此脚本以及更多的JavaScript程序,请访问 http://www.ShareJS.com

IT,JAVA,编程语言,程序员 687

使用回车键代替TAB键 需jquery1.4.2版本

1 $(document).ready(function () { 2 $(':input:text:first').focus(); 3 $(':input:enabled').addClass('enterIndex'); 4 // get only input tags with class data-entry 5 textboxes = $('.enterIndex...

weixin_30663391的博客 146

pl/sql developer自定义替换关键字/设置常用关键字

2、打开PL/Sql软件,进入【工具】-【首选项】-【编辑器】,选择编辑好的txt文件,然后应用、确定保存。例如 s=select,输入s按空格键则替换为=号后面的 select * ,等号前后可以有空格。1、新键一个txt文档,例如如图“自定义替换”,编辑文档,设置关键词及替换内容。例如:输入sf ,按下空格或者tab键,即可出现 select * from。3、打开sql窗口测试,输入等号前面的词,然后按tab键 或者 空格、回车键

djlai的博客 391

让Text和Combox接受回车键,自动转移焦点

<br />原文网址:http://jcobra.blog.163.com/blog/static/470493200702733359625/<br />让Text和Combox接受回车键,自动转移焦点的方法,把下面的这段代码加入到Windows窗体中:<br />Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean<br />        Select C

顾传龙 938

IDEA开发工具16 -- 修改对象方法

原有方法为position(),此时想将其改为limit()。如果敲回车,会形成如下情况: 此时还需要手工把position方法删除。 但是IDEA提供一种快捷键,不需要手工删除position方法,直接写limit。就是把“回车键”  ==&gt; "Tab"键,即可。    ...

c123m的专栏 253

输入框中按回车相当按TAB(兼容多浏览器)

最近改一个网页在不同浏览下不兼容问题。 原来有个功能,是在输入框中,按回车相当于TAB键,到下一个输入框。 代码如下,在输入框的keydown事件中: if(event.keyCode==13)event.keyCode=9; 在IE下运行正常,在谷歌下不正常,尝试了很多种方法,无法模拟键盘事件TAB(自己估计应该是浏览器安全问题) 所以重写一个模仿TAB功能的事件 以下是JS文件中的

1648

当按回车键,焦点自动跳到下一个文本框代码

onkeydown="if(window.event.keyCode==13){window.event.keyCode=9;}" 转载于:https://www.cnblogs.com/QiuJL/archive/2011/08/09/4524297.html

weixin_30751947的博客 198
上一篇: Happy Mid-Autumn Festival !
下一篇: 几个Blog小技巧
SafeF8
博客等级 码龄22年 10粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值