2011-01-27 169 views
5

我试图找到一种方法来使用我的第二个窗体作为组件的提示窗口(例如TLabel)在我的第一个窗体中。创建自定义提示窗口

目前,我正在探索使用THintWindowHintWindowClass,但不可能直接将TForm指定为HintWindowClass。我目前看到的一些例子使用TBitmap,然后在THintWindow.Canvas上绘制,这并不坏,但我仍然喜欢使用某种集成自动机制。

我想到的另一个解决方案是使用上述Tlabel的OnMouseEnter,OnMouseMoveOnMouseLeave事件手动实现此功能。

如果实际上有办法将TForm“分配”为HintWindowClass,我想问问是否有人可以提供说明此问题的代码片段。谢谢。

+0

http://meta.stackoverflow.com/questions/295049/criteria-for-flagging-an-off-topic-question – Will 2015-05-22 19:50:16

回答

12

THintWindowTCustomControl的后裔。 TForm不是这些类别的后代,因此您不能将TForm类别指定给HintWindowClass。提示窗口需要从THintWindow下降。任何你可以放在表格上的东西也可以放在THintWindow上。您只需手动实例化它并指定其Parent属性以使其显示。

最接近你可能会“视觉地”设计一个提示窗口是设计一个框架。让您的THintWindow后代创建框架实例,然后覆盖ActivateHint(和ActivateHintData,如果您需要数据),将提示文本和所需大小转发到您的框架。

+3

这是一个有点hacky,但你可以放置你想要使用的形式作为提示在从`THintWindow`派生的容器中。你会设置`Form.Parent:= HintWindowContainer; Form.Align:= alClient;` – 2011-01-27 15:46:13