2012-03-16 9 views
8

मैं vcl शैलियों को सक्षम करने के साथ एक combobox का उपयोग कर रहा हूं, लेकिन जब मैं एप्लिकेशन चलाता हूं तो combobox द्वारा उपयोग किया जाने वाला हाइलाइट रंग विंडोज़ हाइलाइट रंग है और vcl शैलियों का नहीं है।combobox vcl शैली हाइलाइट रंग का उपयोग नहीं करता है।

मैं इसे कैसे ठीक कर सकता हूं, मेरा मतलब है कि combobox में vcl शैली हाइलाइट रंग का उपयोग करें?

enter image description here

उत्तर

14

, इस समस्या के लिए, बता गया ownerdraw है

csOwnerDrawFixed

  • के लिए इन चरणों

    1. बता गया की शैली प्रॉपर्टी सेट प्रयास करें OnDrawItem घटना में combobox आइटम आकर्षित करने के लिए vcl styes विधियों का उपयोग करें।

    चेक इस नमूना कोड

    uses 
    Vcl.Styles, 
    Vcl.Themes, 
    
    procedure TForm115.ComboBox1DrawItem(Control: TWinControl; Index: Integer; 
    const 
        ColorStates: array[Boolean] of TStyleColor = (scComboBoxDisabled, scComboBox); 
        FontColorStates: array[Boolean] of TStyleFont = (sfComboBoxItemDisabled, sfComboBoxItemNormal); 
    var 
        LStyles : TCustomStyleServices; 
    begin 
        LStyles :=StyleServices; 
        with Control as TComboBox do 
        begin 
        Canvas.Brush.Color := LStyles.GetStyleColor(ColorStates[Control.Enabled]); 
        Canvas.Font.Color := LStyles.GetStyleFontColor(FontColorStates[Control.Enabled]); 
    
        if odSelected in State then 
        Canvas.Brush.Color := LStyles.GetSystemColor(clHighlight); 
    
        Canvas.FillRect(Rect) ; 
        Canvas.TextOut(Rect.Left+2, Rect.Top, Items[Index]); 
        end; 
    end; 
    

    अधिक जानकारी के लिए आप इस लेख Vcl Styles and Owner Draw देख सकते हैं। इसके अलावा आप Vcl.Styles.OwnerDrawFix यूनिट (vcl-styles-utils project का हिस्सा) का उपयोग कर सकते हैं, जो मालिक के एक सेट को टीएलिस्टबॉक्स, टीसींबोबॉक्स और टीएलिस्टव्यू जैसे घटकों के लिए दिनचर्या खींचता है।

  • 4

    RRUZ के लिए एक होना चाहिए है। :)
    अपने ब्लॉग पोस्ट देखें: http://theroadtodelphi.wordpress.com/2012/03/14/vcl-styles-and-owner-draw/

    (उसकी जल्द ही होने वाली आ उत्तर के लिए प्रतिनिधि रखने के लिए, लेकिन आप एक शुरुआत^_^मिल जाएगा) केवल समाधान के रूप में जहाँ तक मुझे पता

    +6

    +1, आरआरयूजेड नियम। –

    +1

    हाँ, मैं पहले प्रश्न की प्रतीक्षा कर रहा हूं जो पूछता है कि वीएमआई के साथ वीसीएल शैलियों को कैसे पूछना है ..... –

    +0

    @ डेविड, एलओएल ... –

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