2011-01-27 12 views
5

제 2 폼을 제 1 폼의 구성 요소 (예 : TLabel)의 힌트 창으로 사용하는 방법을 찾으려고합니다. 순간 사용자 지정 힌트 창 만들기

, 나는 THintWindowHintWindowClass의 사용을 탐험 해요,하지만 직접 TForm HintWindowClass를 할당 할 수 없습니다. 필자가 지금까지 보았던 몇 가지 예는 TBitmap을 사용하며 이는 THintWindow.Canvas에 그려지는데 나쁘지는 않지만 일종의 통합 자동 메커니즘을 사용하고 싶습니다.

내 마음을 넘어선 또 다른 해결책은 상기 Tlabel의 OnMouseEnter, OnMouseMoveOnMouseLeave 이벤트를 사용하여이 기능을 수동으로 구현하는 것입니다.

TFormHintWindowClass에 "할당하는"방법이 실제로있는 경우이를 설명하는 코드 스 니펫을 누군가에게 제공 할 수 있는지 물어보고 싶습니다. 감사.

+0

http://meta.stackoverflow.com/questions/295049/criteria-for-flagging-an-off-topic-question – Will

답변

12

THintWindowTCustomControl의 자손입니다. TForm은 해당 클래스의 하위 클래스가 아니므로 TForm 클래스를 HintWindowClass에 할당 할 수 없습니다. 힌트 창은 THintWindow에서 내려야합니다. 양식에 넣을 수있는 것은 THintWindow입니다. 수동으로 인스턴스화하고 해당 Parent 속성을 지정하면 표시됩니다.

힌트 창을 "시각적으로"표시하는 데 가장 근접 할 수있는 것은 프레임을 디자인하는 것입니다. THintWindow 하위 항목에서 프레임의 인스턴스를 만든 다음 ActivateHint (및 데이터가 필요한 경우 ActivateHintData)을 재정 의하여 힌트 텍스트와 원하는 크기를 프레임에 전달합니다.

+3

조금 해킹되지만 힌트로 사용하려는 양식을 배치 할 수 있습니다. 'THintWindow'에서 파생 된 컨테이너 내부. 당신은'Form.Parent : = HintWindowContainer; Form.Align : = alClient; ' –

+0

여기에 1 년 된 질문을 "되살리는"정책에 대해서는 잘 모르겠지만, 지금 당장 가지고있는 정확한 질문입니다. 나는해야할 일이 무엇인지를 이해하지만 정확히 어떻게 해야할지 모르겠습니다. 나는'TMyHintWindow' 자손을 만들었고'ActivateHint'를 보았습니다. 그리고 거기서부터 제가 잃어 버렸습니다. 완전히 원래의 코드를 버리고, 프레임의 인스턴스를 만들어야합니까? 나는'ActivateHint'에서 그것을 시도했으나, 생성되었지만 결코 나타나지 않았습니다. 다시 원래의 코드를 재사용하지 않았습니다. 아마 완전히 잘못되었을 것입니다. 나는 이것에 약간의 도움을 주시면 감사하겠습니다. – Raith

관련 문제