私はvclスタイルを有効にしてコンボボックスを使用していますが、アプリケーションを実行すると、コンボボックスで使用されるハイライトカラーはウィンドウのハイライトカラーであり、vclスタイルではありません。コンボボックスは、vclスタイルのハイライトカラーを使用しません。
これを修正する方法は、コンボボックスでvclスタイルのハイライトカラーを使用することですか? RRUZためのものであるべき
私はvclスタイルを有効にしてコンボボックスを使用していますが、アプリケーションを実行すると、コンボボックスで使用されるハイライトカラーはウィンドウのハイライトカラーであり、vclスタイルではありません。コンボボックスは、vclスタイルのハイライトカラーを使用しません。
これを修正する方法は、コンボボックスでvclスタイルのハイライトカラーを使用することですか? RRUZためのものであるべき
唯一の回避策を(彼のすぐツー来る答えを担当者を維持していますが、スタート^ _ ^を取得します)この問題のために、コンボボックスOwnerDrawするある
OnDrawItemイベントで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
を確認することができます。また、Vcl.Styles.OwnerDrawFixユニット(vcl-styles-utils projectの一部)を使用すると、TListBox、TComboBox、TListViewなどのコンポーネントの所有者描画ルーチンセットが含まれます。
。 :)
彼のブログ記事を参照してください:http://theroadtodelphi.wordpress.com/2012/03/14/vcl-styles-and-owner-draw/
、限り私が知っている
+1、RRUZルール。 –
ええ、WMIでVCLスタイルをクエリする方法を尋ねる最初の質問を待っています..... –
@David、LOL ... –