我需要为特定控件(而不是整个应用程序)创建一个自定义提示窗口(具有它自己的颜色和布局)
提示文本本身不会连接到该特定Hint
属性控件.
正如我所建议的那样,我写了一个处理程序CM_HINTSHOW
(如果控件具有这个功能ShowHint=True
):
procedure TMyControl.CMHintShow(var Message: TMessage);
begin
Form1.caption := 'x';
// Here I will display my own Hint window
// inherited;
end;
Run Code Online (Sandbox Code Playgroud)
但现在,当提示超时时,我怎么知道何时/何处隐藏它?既没有CM_HINTSHOW
或CM_HINTSHOWPAUSE
给我这个信息.
在CM_HINTSHOW
消息处理程序中,您可以将lParam
值强制转换为PHintInfo
指针,然后根据需要自定义其字段.例如,要简单地更改背景颜色,请设置THintInfo.HintColor
字段.要更改提示的布局,可以从中派生新类THintWindow
并将该类类型分配给该THintInfo.HintWindowClass
字段.
让VCL为您管理提示,包括显示和隐藏它.