如何在Delphi的Form中将Enter的键入自动换为TAB及附带问题?
设置Form的KeyPreview属性为True,并将Form地OnKeyPress定义设置如下:ifkey=vk_returnthenPostMessage(Handl...
设置Form的KeyPreview属性为True,并将Form地OnKeyPress定义设置如下:
if key = vk_return then
PostMessage(Handle,WM_KEYDOWN,VK_TAB,0);
运行后确实可以实现,但是出现很多BUG:
1.由于我的控件顺序拖放没有按照先后顺序,导致在enter按了以后TAB的顺序一会儿下一会儿上,我想知道通过控件的哪个属性来控制TAB的顺序?
2.用回车代替TAB显然不适合于BUTTON,你在它上面按回车的时候它会执行OnClick,所以不会TAB,应该怎么去解决呢 ,是不是当焦点在button上了去判断它的onclick事件是否为空?还是有另外的好办法?做到既用enter实现了TAB又在button上有所改观?(比如可以换成当焦点在Button上时候用空格来代替enter,应该在什么属性上修改呢)
3.在多文本框memo中回车应该是换行而不再是TAB这又应该怎么去实现这个特例呢? 展开
if key = vk_return then
PostMessage(Handle,WM_KEYDOWN,VK_TAB,0);
运行后确实可以实现,但是出现很多BUG:
1.由于我的控件顺序拖放没有按照先后顺序,导致在enter按了以后TAB的顺序一会儿下一会儿上,我想知道通过控件的哪个属性来控制TAB的顺序?
2.用回车代替TAB显然不适合于BUTTON,你在它上面按回车的时候它会执行OnClick,所以不会TAB,应该怎么去解决呢 ,是不是当焦点在button上了去判断它的onclick事件是否为空?还是有另外的好办法?做到既用enter实现了TAB又在button上有所改观?(比如可以换成当焦点在Button上时候用空格来代替enter,应该在什么属性上修改呢)
3.在多文本框memo中回车应该是换行而不再是TAB这又应该怎么去实现这个特例呢? 展开
1个回答
展开全部
1.在窗口上点右键,有个tab order可以改变窗口上的tab顺序
2.button上其实也可以实现的,我觉得你可以这样试试。你的主要目的是按回车后直接tab到下一个控件,可以在当前控件比如说你有一个Edit1,在edit1的onkeypress事件下写:
if Key=13(或者按你上面的写)then button1.setfocus(); (button1是你想tab到的下一个控件,根据需要可改)。
你想在button上用空格来代替enter也可以在keypress下写 ifkey=空格then button.click()
3.和2一样,用setfocus同样可实现
哦,对了button上空格好像本来就和回车一样的。。。
2.button上其实也可以实现的,我觉得你可以这样试试。你的主要目的是按回车后直接tab到下一个控件,可以在当前控件比如说你有一个Edit1,在edit1的onkeypress事件下写:
if Key=13(或者按你上面的写)then button1.setfocus(); (button1是你想tab到的下一个控件,根据需要可改)。
你想在button上用空格来代替enter也可以在keypress下写 ifkey=空格then button.click()
3.和2一样,用setfocus同样可实现
哦,对了button上空格好像本来就和回车一样的。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询