gpt4 book ai didi

delphi - 组合框不使用 vcl 样式突出显示颜色。

转载 作者:行者123 更新时间:2023-12-03 14:45:46 28 4
gpt4 key购买 nike

我正在使用启用了 vcl 样式的组合框,但是当我运行应用程序时,组合框使用的突出显示颜色是窗口突出显示颜色,而不是 vcl 样式。

我该如何解决这个问题,我的意思是在组合框中使用 vcl 样式突出显示颜色?

enter image description here

最佳答案

据我所知,解决此问题的唯一方法是所有者绘制组合框

尝试这些步骤

  1. 将组合框的 Style 属性设置为 csOwnerDrawFixed
  2. 在 OnDrawItem 事件中使用 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 等组件绘制例程。

关于delphi - 组合框不使用 vcl 样式突出显示颜色。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com