delphi 如何使用回车键模仿Tab键

 我来答
清静又实诚的小熊2
推荐于2016-03-09 · TA获得超过250个赞
知道答主
回答量:119
采纳率:0%
帮助的人:61.4万
展开全部
正在装载数据……回答:先将窗体的KeyPreview属性设为True。然后在FormKeyPress事件中加入以下代码: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginif Key = #13 then { 如果按下了回车键 }beginKey := #0{ 吃掉回车键 } Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }endend这个方法对于大多数控件都适用,但不适用于TButton控件,因为对于按钮,回车键等于按下了按钮,不触发FormKeyPress事件。 答:要改写成一个自定义过程,可以这样: procedure MyKeyPress(frm:TForm; var Key: Char);beginif Key = #13 then { 如果按下了回车键 }beginKey := #0{ 吃掉回车键 } frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }endendprocedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);beginMyKeyPress(Self, Key);end如果你经常使用这样的窗体,你也可以在设置好KeyPreview属性和输入代码后,在Form上击右键,选择Add to Repository,这样把Form添加到Delphi的Repository库中,以后建立新窗口时,可以从Delphi的对话框的Forms中选择你添加的这个窗体作为模板。 答:这的确是个问题。可以这样解决:在KeyPress事件中先判断一下控件的类型,如果当前控件是TMemo或TDBMemo(甚至可以进一步检查控件的名字中是否带有Memo的),就不进行移动,对于这样的控件还是通过Tab键移动。下面是代码: var sClassName: stringbeginif Key = #13 then { 如果按下了回车键 }beginsClassName := TForm(Sender).ActiveControl.ClassName; if (sClassName <'TDBMemo') And (sClassName <'TMemo') thenbeginKey := #0{ 吃掉回车键 } Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式