2011-01-27 19 views
5

मैं अपने पहले फॉर्म में एक घटक (उदाहरण के लिए एक TLabel) के लिए एक संकेत विंडो के रूप में अपने दूसरे रूप का उपयोग करने का एक तरीका खोजने का प्रयास कर रहा हूं।कस्टम संकेत विंडो बनाना

पल में, मैं THintWindow और HintWindowClass के उपयोग की खोज कर रहा हूँ, लेकिन यह सीधे एक TFormHintWindowClass को आवंटित करने के लिए संभव नहीं है। मैंने देखा है कि कुछ उदाहरण अब तक TBitmap का उपयोग करते हैं, जिसे THintWindow.Canvas पर खींचा जाता है, जो बुरा नहीं है, लेकिन मैं अभी भी किसी प्रकार के एकीकृत स्वचालित तंत्र का उपयोग करना चाहता हूं।

एक अन्य समाधान है कि मेरे मन को पार कर मैन्युअल रूप से कहा Tlabel की OnMouseEnter, OnMouseMove और OnMouseLeave घटनाओं का उपयोग कर इस कार्यक्षमता को लागू करने की है।

अगर वहाँ वास्तव में एक तरह से एक 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

यह थोड़ा हैकी है, लेकिन आप उस फॉर्म को रख सकते हैं जिसे आप संकेत के रूप में उपयोग करना चाहते हैं 'थिंटविंडो' से व्युत्पन्न एक कंटेनर के अंदर। आप 'फॉर्म' माता-पिता सेट करेंगे: = HintWindowContainer; फॉर्म। साइन इन करें: = alClient; ' –

+0

मुझे यहां एक वर्ष पुराने प्रश्नों को" पुनर्जीवित करने "की नीति पर यकीन नहीं है, लेकिन यह सही सवाल है कि मेरे पास अभी है। मैं समझता हूं कि क्या करने की जरूरत है, लेकिन मुझे नहीं पता कि वास्तव में कैसे किया जाए। मैंने 'TMyHintWindow' वंश बना दिया है और 'एक्टिवेटिंट' पर देखा है और वहां से मैं खो गया हूं, क्या मैं पूरी तरह से मूल कोड फेंक देता हूं, मुझे फ्रेम के उदाहरण को कहां रखना चाहिए? मैंने इसे 'सक्रियेटिंट' में करने का प्रयास किया, यह बनाया गया लेकिन कभी दिखाई नहीं देता ... फिर फिर, मैंने किसी भी मूल कोड का पुन: उपयोग नहीं किया, इसलिए शायद यह पूरी तरह से गलत है। मैं इसके साथ कुछ मदद की सराहना करता हूं। – Raith

संबंधित मुद्दे