关于message的简单问题。(20分)

  • 主题发起人 主题发起人 Sands
  • 开始时间 开始时间
S

Sands

Unregistered / Unconfirmed
GUEST, unregistred user!
我在窗体中定义了一个<br>procedure WMChar(var szMessage: TWMChar); message WM_CHAR;<br>然后又放了一个BITBTN上去,发现在这个事件就触发不了。为什么呢?<br>到底怎样才能正确截取键盘事件,再将所按键显示在FORM上呢? <br>
 
把你的form的previewkey设为true
 
没有这个属性啊。
 
procedure WMChar(var szMessage: TWMChar); message WM_CHAR;<br><br>procedure TForm1.WMChar(var szMessage: TWMChar);<br>begin<br>&nbsp; showmessage(chr(szMessage.CharCode));<br>end;
 
form的keypreview设成true
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);<br>begin<br>if key='a' then<br>……<br>end;<br>
 
procedure WMChar(var szMessage: TWMChar); message WM_CHAR;<br><br>procedure TForm1.WMChar(var szMessage: TWMChar);<br>begin<br>&nbsp; showmessage(chr(szMessage.CharCode));<br>end;<br>我就是这么写的。但如果窗体是空的,没有任何问题。但如果一放上控件。就不能正常的运行。<br>还有previewkey是TFORM的属性吗?没找到啊。
 
是KeyPreview属性.
 
我看了一下DELPHI的HELP关于KEYPREVIEW的描述,应该是设为TRUE后,WM就会比键盘<br>事件更早收到请求。但为什么我还是不行呢?
 
后退
顶部