2008-11-24 10 views
9

पर प्रगति पट्टी एनीमेशन को अक्षम करना मैं डेल्फी 200 वीसीएल टीप्रेशंसबार का उपयोग "खाली/पूर्ण" गेज के रूप में कर रहा हूं।Vista Aero

विस्टा पर, एरो थीम सक्षम के साथ, इसमें एक एनीमेशन जुड़ा हुआ है, जो एक गेज के लिए परेशान और अनुचित है।

क्या इस नियंत्रण पर एनीमेशन को रोकने के लिए इसे अक्षम करने (उपयोगकर्ता की थीम सेटिंग्स को समायोजित करके नहीं) का कोई तरीका है?

स्पष्टीकरण के लिए, मैं मूल रूप से विंडोज एक्सप्लोरर में 'डिस्क स्पेस प्रयुक्त' मीटर के समान कुछ चाहता हूं। कोई एनीमेशन नहीं, लेकिन अभी भी एक अच्छी सीमा और छायांकन प्रभाव के साथ।

अद्यतन:

मैं समझता हूँ कि मैं एक "मीटर", बजाय एक सच्चे प्रगति बार की जरूरत है। एक मानक मीटर प्रगति बार नियंत्रण का उपयोग कर एक थीम्ड मीटर लागू किया जा सकता है?

उत्तर

11

Vista UI guidelines for progress bars के अनुसार आप नहीं एक TProgressBar ऐसे प्रयोजनों के लिए बिल्कुल भी उपयोग करना चाहिए, यह कहता है: केवल प्रगति के लिए

उपयोग करते हुए प्रगति पट्टियाँ। प्रगति से संबंधित प्रतिशतों को इंगित करने के लिए मीटर का उपयोग करें।

कि प्रक्रिया स्वचालन अनुप्रयोगों और तरह के उद्देश्य से कर रहे हैं (उदाहरण के Abakus VCL के लिए), हो सकता है आप के बजाय इन नियंत्रणों में से एक का उपयोग कर सकते तृतीय-पक्ष के घटकों का एक बहुत हैं?

+1

समझा - लेकिन यह कहता है: "मीटर: यह पैटर्न प्रगति पट्टी नहीं है, लेकिन इसे प्रगति बार नियंत्रण का उपयोग करके कार्यान्वित किया जाता है।" प्रगति पट्टी नियंत्रण का उपयोग करके मैं इस तरह के "मीटर" को कैसे कार्यान्वित कर सकता हूं? एबकस घटकों के लिए, मेरा आवेदन ऐसा दिखना चाहिए जैसा कि पिछले दस वर्षों में बनाया गया था। – Roddy

+0

मुझे नहीं पता कि मीटर को कैसे कार्यान्वित किया जाए, और यहां जांच करने के लिए Vista नहीं है। क्या आप जासूस ++ चला सकते हैं और उन विंडोज नियंत्रणों के लिए सेट किए गए विंडोज स्टाइल झंडे को देख सकते हैं? जासूस ++ एमएस विजुअल सी ++ के साथ आता है। यदि आपके पास यह नहीं है तो "spy ++ फ्रीवेयर" के लिए Google। – mghie

+0

अबकस के लिए - मैं आपको सुनता हूं ;-) यदि आपको Vista में अच्छा दिखने के लिए गेज की आवश्यकता है तो यह सामान्य नियंत्रण के लिए शैली ढूंढना सबसे अच्छा होगा। मुझे प्लेटफ़ॉर्म एसडीके में कुछ भी नहीं मिला है ... उपलब्ध docu के लिए http://msdn.microsoft.com/en-us/library/cc656530(VS.85).aspx देखें। – mghie

0

this forum thread पर एक नज़र डालें। यह एकमात्र आशाजनक लिंक है जो मैंने पाया, और पहली पोस्टिंग में विभिन्न प्रगति पट्टी राज्यों का उल्लेख है, इसलिए गुणों को बदलना चिकना, राज्य और शैली शायद मदद नहीं करेगा।

यदि अंतिम पोस्टिंग में टिप वास्तव में मीटर शैली में प्रगति पट्टी को आकर्षित करने का एकमात्र तरीका है, तो आपका सबसे अच्छा विकल्प TProgressBar की एक वंशज श्रेणी बनाना है, WM_PAINT हैंडलर को ओवरराइड करना, Vista और सक्षम थीम की जांच करना , और उस मामले में नियंत्रण के विभिन्न हिस्सों को पेंट करने के लिए UxTheme में कार्यों का उपयोग करें।

9

आप उस नियंत्रण के लिए थीम को बंद करने का प्रयास कर सकते हैं;

SetWindowTheme(ProgressBar.Handle, ' ', ' '); 
+0

+1 क्योंकि यह उत्तर उपयोगी लगता है - हालांकि मुझे नहीं पता कि यह काम करता है या सही तरीका है जानबूझकर एक सामान्य नियंत्रण पर थीमिंग अक्षम करने के लिए। –

+0

मैंने इसका परीक्षण किया है और यह काम करता है, फ़ंक्शन लाइब्रेरी UxTheme (http://msdn.microsoft.com/en-us/library/bb759827(VS.85).aspx) –

+0

हां और नहीं है। यह एनीमेशन बंद कर देता है लेकिन यह नियंत्रण के * सभी * थीमिंग को भी बंद कर देता है, इसलिए आपको सीमा, छायांकन या किसी अन्य UI सौंदर्यीकरण के बिना बस एक ठोस नीला बॉक्स मिलता है। मेरा उद्देश्य एक्सप्लोरर में 'डिस्क स्पेस इस्तेमाल' मीटर से मेल खाने वाला कुछ प्राप्त करना है। – Roddy

1

मैंने अभी तक यह कोशिश नहीं की है, लेकिन इस प्रश्न में Winforms के लिए उपयोगी उत्तर दिखता है।

How can I use a meter-style progress bar?

अब यह डेल्फी में बदलने के लिए ...

3

http://rmklever.com/ पर VistaProBar प्रयास करें यह करता नहीं एनीमेशन इसके साथ जुड़े रहे हैं।

+0

धन्यवाद - उपयोगी लगता है – Roddy

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