定制控制感应加速

时间:2019-01-04 19:40:32

标签: delphi keyboard controls vcl accelerator

我试图弄清楚如何使我的自定义控件(基于静态文本)响应加速键(我使用的delphi,将其命名为accelchar)按下。通过响应,我的意思是添加一些代码。我想出的最好的办法是处理WM_SYSKEYUP并手动检查标题和字符代码。我怀疑必须有一个更简单,更可靠的解决方案。

1 个答案:

答案 0 :(得分:0)

您说您的控件基于TStaticText。如果您窥视TStaticText(或其祖先TCustomStaticText),您将看到一个消息处理程序,该消息处理程序处理着重于另一个控件的默认行为:

cl_int clBuildProgram ( cl_program program,
    cl_uint num_devices,
    const cl_device_id *device_list,
    const char *options,
    void (*pfn_notify)(cl_program, void *user_data),
    void *user_data)

在其实现中,您可以看到它如何验证自己的状态:

procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;

在基本实现中,当输入if (FFocusControl <> nil) and Enabled and ShowAccelChar and IsAccel(Message.CharCode, Caption) then 时,focuscontrol将被聚焦,但是在您的实现中,您可以简单地创建一个新的消息处理程序(如果有的话),并在其中添加您自己的实现它。