Создание собственного окна подсказки

Я пытаюсь найти способ использовать мою вторую форму в качестве окна подсказки для компонента (например, 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(если вам нужны данные), чтобы переслать текст подсказки и желаемый размер для вашего кадра.

Другие вопросы по тегам