我需要为特定控件(而不是整个应用程序)创建一个自定义提示窗口(带有它自己的颜色和布局)
提示文本本身不会连接到该特定的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;
但现在,当提示超时时,我怎么知道隐藏的时间/地点? CM_HINTSHOW
或CM_HINTSHOWPAUSE
都没有给我这个信息。
答案 0 :(得分:6)
在CM_HINTSHOW
消息处理程序中,您可以将lParam
值强制转换为PHintInfo
指针,然后根据需要自定义其字段。例如,要简单地更改背景颜色,请设置THintInfo.HintColor
字段。要更改提示的布局,您可以从THintWindow
派生一个新类,并将该类类型分配给THintInfo.HintWindowClass
字段。
让VCL为您管理提示,包括显示和隐藏它。