2012-03-16 9 views
8

私はvclスタイルを有効にしてコンボボックスを使用していますが、アプリケーションを実行すると、コンボボックスで使用されるハイライトカラーはウィンドウのハイライトカラーであり、vclスタイルではありません。コンボボックスは、vclスタイルのハイライトカラーを使用しません。

これを修正する方法は、コンボボックスでvclスタイルのハイライトカラーを使用することですか? RRUZためのものであるべき

enter image description here

答えて

14

唯一の回避策を(彼のすぐツー来る答えを担当者を維持していますが、スタート^ _ ^を取得します)この問題のために、コンボボックスOwnerDrawするある

OnDrawItemイベントでcsOwnerDrawFixed

    1. は、コンボボックスのスタイルプロパティを設定し、これらの手順をお試しください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の一部)を使用すると、TListBox、TComboBox、TListViewなどのコンポーネントの所有者描画ルーチンセットが含まれます。

  • 関連する問題