Создание собственного окна подсказки
Я пытаюсь найти способ использовать мою вторую форму в качестве окна подсказки для компонента (например, TLabel) в моей 1-й форме.
На данный момент я изучаю использование THintWindow
а также HintWindowClass
, но невозможно напрямую назначить TForm
в HintWindowClass
, Некоторые примеры, которые я видел до сих пор, используют TBitmap
который затем рисуется на THintWindow.Canvas
, что неплохо, но я все же хотел бы использовать какой-то встроенный автоматический механизм.
Другое решение, которое пришло мне в голову, - вручную реализовать эту функцию, используя OnMouseEnter
, OnMouseMove
а также OnMouseLeave
События упомянутого Тлабеля.
Если на самом деле есть способ "назначить" TForm
в HintWindowClass
Я хотел бы спросить, может ли кто-нибудь предоставить фрагмент кода, иллюстрирующий это. Благодарю.
1 ответ
THintWindow
является потомком TCustomControl
, TForm
не является потомком ни одного из этих классов, поэтому вы не можете TForm
класс для HintWindowClass
, Подсказка окна должна сходить с THintWindow
, Все, что вы можете поместить в форму, вы также можете положить на THintWindow
, Вам просто нужно создать экземпляр вручную и назначить его Parent
свойство, чтобы оно появилось.
Самое близкое, что вы можете, вероятно, получить к "визуальному" дизайну окна подсказок, - это создать рамку. Сделай свой THintWindow
потомок создает экземпляр фрейма, а затем переопределяет ActivateHint
(а также ActivateHintData
(если вам нужны данные), чтобы переслать текст подсказки и желаемый размер для вашего кадра.