你如何吃 Delphi VCL TPageControl键来阻止它发出哔哔声?

pgx2nnw8  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个TPageControl有几页。表单有一个OnKeyDown事件处理程序,它检测是否按下了Alt-n,并将ActivePage切换到正确的页面。可以但会有哔声。
我尝试通过设置Key:=0来吃掉From.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);中的密钥,但这不起作用。
我为表单设置了一个OnKeyPress处理程序,但没有调用它。
我假设它生成了一个需要被吃掉的WM_CHAR消息,但我不知道你在 Delphi 中的哪里拦截了它?
我看到了一些特殊的CM_消息, Delphi 有,但找不到任何细节。不确定这些是否有帮助?我在某个地方看到一个线程说你可以用WinSvc单元来做,但这就是它的范围。
谁能解释一下如何防止哔哔声?
TIA!!

oxiaedzo

oxiaedzo1#

根据评论,使用TApplicationEvents是可行的。

procedure TMyForm.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message=WM_SYSCHAR then
   if Windows.GetForegroundWindow()=Handle then
      if (Msg.WParam>=Ord('0')) and (Msg.WParam<=Ord('9'))  then
         Handled:=True;
end;

相关问题