2012-05-17 16 views
6

वीएसटी में डिफ़ॉल्ट [-]/[+] बटन को प्रतिस्थापित करने के लिए मैं अपने स्वयं के कस्टम बटन (छवियों) का उपयोग कैसे कर सकता हूं?
मैं इसके बजाय तीरों का उपयोग करना चाहता हूं (enter image description here, enter image description here), लेकिन आरटीएल बिडी मोड (enter image description here, enter image description here) का समर्थन करने के लिए भी।टीवीर्टुअलस्टिंगट्री - [-]/[+] बटन कैसे बदलें?

संपादित करें: मुझे bsTriangle शैली (बटन स्टाइल) से अवगत है। यह आरटीएल का सम्मान नहीं करता है। मैं अपनी खुद की कस्टम छवियों का उपयोग करना चाहता हूँ।

उत्तर

9

आमतौर पर उन छवियों को Windows Vista और Windows 7 में नहीं हैं? जब आपके पास थीम सक्षम हों तो वृक्ष नियंत्रण उन्हें उन सिस्टम पर स्वचालित रूप से प्राप्त कर लेना चाहिए।

उस के करीब कुछ पाने का आसान तरीका ButtonStyle संपत्ति को bsTriangle पर सेट करना है। हालांकि, प्रश्न में दिखाए गए चित्र वास्तव में नहीं होंगे। "शून्य" तीर तिरछे के बजाय सीधे नीचे इंगित करेगा, और "प्लस" तीर एक रूपरेखा के बजाय ठोस होगा।

आप अपना खुद का बिटमैप प्रदान कर सकते हैं। VT_XPBUTTONMINUS और VT_XPBUTTONPLUS संसाधनों को अपनी इच्छित छवियों में बदलें, और ButtonFillMode प्रॉपर्टी को fmShaded पर सेट करें।

मुझे बाय-डी मोड के आधार पर छवि को बदलने के लिए कोई सुविधा नहीं है, हालांकि। आप एक वंशज वर्ग बना सकते हैं जो PaintNodeButton ओवरराइड करता है, और उसके बाद जो कुछ भी आप चाहते हैं उसे पेंट करें। प्लेसमेंट कोड को मूल वर्ग से कॉपी करें।

+0

धन्यवाद श्रीमान। ऐसा लगता है कि 'पेंट नोड बटन' ओवरराइड करना एकमात्र विकल्प है। – ZigiZ

1

ButtonStyle संपत्ति देखें। यकीन नहीं है कि यह आरटीएल बिडी मोड विचार का सम्मान करता है।

+0

मुझे 'bsTriangle' शैली के बारे में पता है। यह आरटीएल का सम्मान नहीं करता है। मैं अपनी खुद की छवि का उपयोग करना चाहता हूँ। – ZigiZ

7

आईआईआरसी आप इसे पेंटऑप्शन में यूयूएसएक्सप्लोररथीम सहित प्राप्त करते हैं। हालांकि यह चयन लुक (बेहतर IMNSHO तक) और शायद अधिक भी बदलता है।

उदाहरण के लिए अगर मैं एक फार्म पर एक TVirtualStringTree ड्रॉप और निम्न ईवेंट प्रबंधकों को जोड़ें:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    VT.RootNodeCount := 10; 
    VT.TreeOptions.PaintOptions := VT.TreeOptions.PaintOptions + [toUseExplorerTheme]; 
    VT.OnInitNode := VTInitNode; 
    VT.OnInitChildren := VTInitChildren; 
end; 

procedure TForm1.VTInitChildren(Sender: TBaseVirtualTree; 
    Node: PVirtualNode; var ChildCount: Cardinal); 
begin 
    ChildCount := 3; 
end; 

procedure TForm1.VTInitNode(Sender: TBaseVirtualTree; 
    ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates); 
begin 
    Include(InitialStates, ivsHasChildren); 
end; 

मैं screenshot with triangular markers

संपादित करें: दुर्भाग्य से, Form1.BiDiModebdRightToLeft को पैदावार screenshot with wrong triangular markers की स्थापना मेरे जर्मन विंडोज 7 पर। मुझे नहीं पता कि यह अरबी या हिब्रू सिस्टम पर बेहतर काम करता है या नहीं।

+0

वर्चुअलट्री का आप किस संस्करण का उपयोग कर रहे हैं? – ZigiZ

+1

@ZigiZ: VirtualTrees.pas के शीर्ष पर स्थित 'संस्करण 5.0.0' कहता है। –

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