我试图弄清楚如何使我的自定义控件(基于静态文本)响应加速键(我使用的delphi,将其命名为accelchar)按下。通过响应,我的意思是添加一些代码。我想出的最好的办法是处理WM_SYSKEYUP并手动检查标题和字符代码。我怀疑必须有一个更简单,更可靠的解决方案。
答案 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将被聚焦,但是在您的实现中,您可以简单地创建一个新的消息处理程序(如果有的话),并在其中添加您自己的实现它。