2011-01-27 168 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