vcl スタイルを有効にしてコンボボックスを使用していますが、アプリケーションを実行すると、コンボボックスで使用される強調表示の色は、vcl スタイルではなく、ウィンドウの強調表示の色になります。
どうすればこれを修正できますか?つまり、コンボボックスで vcl スタイルのハイライト色を使用するということですか?
vcl スタイルを有効にしてコンボボックスを使用していますが、アプリケーションを実行すると、コンボボックスで使用される強調表示の色は、vcl スタイルではなく、ウィンドウの強調表示の色になります。
どうすればこれを修正できますか?つまり、コンボボックスで vcl スタイルのハイライト色を使用するということですか?
私の知る限り、この問題の唯一の回避策は、コンボボックスの所有者描画です
これらの手順を試してください
csOwnerDrawFixed
このサンプルコードを確認してください
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
。また、TListBox、TComboBox、TListView などのコンポーネントの一連のオーナー描画ルーチンを含むVcl.Styles.OwnerDrawFixユニット ( vcl-styles-utils プロジェクトの一部) を使用することもできます。
それはRRUZのためのものでなければなりません。:)
彼のブログ投稿を参照してください: http://theroadtodelphi.wordpress.com/2012/03/14/vcl-styles-and-owner-draw/
(彼のすぐに来る答えのために担当者を守ってください、しかしあなたは始めます^_^)