我目前正在处理多表单应用程序,并且在注册del键时遇到问题,需要del键的应用程序是带有框架的表单,在它上面可以选择,按下del键后,所选对象将通过deleteObjects方法删除。我目前正在使用的代码如下删除密钥不会触发KeyUp&KeyDown事件
void __fastcall TF_Image::KeyUpKbd(WORD &Key)
{
if(Key == VK_DELETE || Key == VK_DKEY)
{
deleteSelectedObjects();
}
}
(注:有在函数调用其他paramenters但他们不使用)
TF_Image从TFRAME
继承我试图映射除了del键以外的其他键,即D键,并且发现该方法被调用没有问题。我发现当按下(物理上)del键时,不会调用与KeyUp相关的方法。
编辑:所以我试图添加DeleteSelectedOb()方法到我的WndProc方法没有太多的运气。
void __fastcall TF_ImgBrowserOA::WndProc(TMessage &Message)
{
if (Message.Msg == WM_KEYDOWN)
{
if (Message.WParam == VK_DELETE)
{
F_Image->DeleteSelectedOb();
}
}
//code that manages window resize
TForm::WndProc(Message);
}
doent出现击键
您的问题标题是“删除键不会触发KeyPress事件”,正如您已经注意到并现在编辑的那样。这就是我基于我的答案,但如果这不是你正在使用的事件,那么是的,我的答案不会帮助你。除非其他组件在您自己的事件处理程序获得该机会之前正在处理它们,否则Delete键应该会引发键向下和向上事件,假设该控件是具有键盘焦点的事件。如果您在没有其他组件的情况下尝试使用干净的表单,它会工作吗? – hvd
在我的应用程序中没有其他任何形式的KeyUp或KeyDown事件处理程序,我试图检查的第一件事是它对第一个加载执行的表单的响应,再次事件没有触发,我怀疑它是一个系统处理事件之前我的表单被大声朗读,所以是否有一种方法来覆盖行为 –
在XE3中使用TMemo时,我遇到了类似的问题,除了OnKeyUp是删除键触发的唯一事件。 –