OnKeyPress Ctrl+M = VK_RETURN !!! ( 积分: 39 )

  • 主题发起人 主题发起人 太空鼠
  • 开始时间 开始时间

太空鼠

Unregistered / Unconfirmed
GUEST, unregistred user!
在&nbsp;OnKeyPress&nbsp;写下边的代码:<br>&nbsp;&nbsp;showmessage(IntToStr(Ord(Key)));<br><br>你会发现&nbsp;Ctrl+a&nbsp;=&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ctrl+b&nbsp;=&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ctrl+m&nbsp;=&nbsp;13(这不是回车冲突了吗)<br>也就是说如果你写了下边的代码&nbsp;去响应回车键&nbsp;结果&nbsp;按Ctrl+m也会去响应<br>&nbsp;&nbsp;if&nbsp;key&nbsp;=&nbsp;#13&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;:=&nbsp;#0;<br>&nbsp;&nbsp;&nbsp;&nbsp;(Sender&nbsp;as&nbsp;TControl).perform(WM_NEXTDLGCTL,0,0);<br>&nbsp;&nbsp;end;<br><br>有没有人知道为什么Ctrl+m&nbsp;=&nbsp;13
 
1、“有没有人知道为什么Ctrl+m&nbsp;=&nbsp;13”?自己从“a”开始数吧!<br>2、“去响应回车键&nbsp;结果&nbsp;按Ctrl+m也会去响应”,改“OnKeyPress”为“OnKeyDown”或“OnKeyUp”吧,看“Shift”是否含“ssCtrl”。
 
不说还不知道,真的&nbsp;Ctrl+m=回车&nbsp;哦,打开个写字板试试,确实Ctrl+m&nbsp;会出现回车。<br><br>如果程序要判断,看来只能按照楼上的说法,判断是不是按下了Ctrl键了。<br><br>就是&nbsp;要把判断写在OnKeyUp里面(按键按下之后释放)(因为KeyPress里面没有Shift参数)
 
楼上&nbsp;好心细&nbsp;我没在写字板试过&nbsp;现在发现XP.SP2的写字板、记事本&nbsp;都有这个问题&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;但&nbsp;Word&nbsp;2003没这个问题<br><br>建议大家不要把响应回车的代码写在&nbsp;OnKeyDown或OnKeyUp&nbsp;里<br>&nbsp;&nbsp;&nbsp;&nbsp;一定要写在OnKeyPress&nbsp;里&nbsp;并且要把&nbsp;#13&nbsp;转成&nbsp;#0&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;避免在TEdit中按回车是&nbsp;砰砰乱响&nbsp;<br>你可以想想一个零售店开着音响放着音乐&nbsp;突然砰砰两下,客户不都吓跑了吗,当然你也可以修改注册表去屏蔽砰砰声<br><br>在OnKeyPress可以判断&nbsp;Ctrl是否按下的<br>var<br>&nbsp;&nbsp;CtrlDown,&nbsp;EnterDown:&nbsp;Boolean;<br>begin<br>&nbsp;&nbsp;CtrlDown&nbsp;:=&nbsp;GetKeyState(VK_CONTROL)&nbsp;&lt;&nbsp;0;<br>&nbsp;&nbsp;EnterDown&nbsp;:=&nbsp;GetKeyState(VK_RETURN)&nbsp;&lt;&nbsp;0;<br><br>&nbsp;&nbsp;if&nbsp;CtrlDown&nbsp;and&nbsp;EnterDown&nbsp;then//CtrlDown&nbsp;and&nbsp;(Key&nbsp;=&nbsp;#10)&nbsp;还和Ctrl+J冲突&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Showmessage('Ctrl+Enter')<br>&nbsp;&nbsp;else&nbsp;if&nbsp;Not&nbsp;CtrlDown&nbsp;and&nbsp;(Key&nbsp;=&nbsp;#13)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;Showmessage('Enter');<br>end;<br><br>我发这个帖的目的是让大家知道有这个情况<br>并想问问有没官方的这方面的解释资料<br><br>我知道从A数&nbsp;M是第13个字母&nbsp;要不我也不会说Ctrl+m&nbsp;和&nbsp;回车冲突
 
合到楼上
 
普及计算机基础知识任重道远啊!<br>http://www.columbia.edu/kermit/ascii.html
 
多人接受答案了。
 
后退
顶部