gpt4 book ai didi

delphi分组框标题颜色变化

转载 作者:行者123 更新时间:2023-12-03 15:22:38 24 4
gpt4 key购买 nike

我正在使用 BDS 2006,想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色(因为它始终是蓝色)。

最佳答案

唯一的方法是重写 TGroupBox 的 Paint 方法.

检查这个使用 Interposer 类的示例

type
TGroupBox = class(StdCtrls.TGroupBox) //declare this before of your form definition
public
procedure Paint; override;
end;

uses
Themes;

{ TGroupBox }

procedure TGroupBox.Paint;
var
H: Integer;
R: TRect;
Flags: Longint;
CaptionRect,
OuterRect: TRect;
Size: TSize;
Box: TThemedButton;
Details: TThemedElementDetails;
begin
with Canvas do
begin
Font := Self.Font;

if ThemeControl(Self) then
begin
if Text <> '' then
begin
GetTextExtentPoint32(Handle, PChar(Text), Length(Text), Size);
CaptionRect := Rect(0, 0, Size.cx, Size.cy);
if not UseRightToLeftAlignment then
OffsetRect(CaptionRect, 8, 0)
else
OffsetRect(CaptionRect, Width - 8 - CaptionRect.Right, 0);
end
else
CaptionRect := Rect(0, 0, 0, 0);

OuterRect := ClientRect;
OuterRect.Top := (CaptionRect.Bottom - CaptionRect.Top) div 2;
with CaptionRect do
ExcludeClipRect(Handle, Left, Top, Right, Bottom);
if Enabled then
Box := tbGroupBoxNormal
else
Box := tbGroupBoxDisabled;
Details := ThemeServices.GetElementDetails(Box);
//Draw the themed frame
ThemeServices.DrawElement(Handle, Details, OuterRect);
SelectClipRgn(Handle, 0);
if Text <> '' then
begin
H := TextHeight('0');
if not UseRightToLeftAlignment then
R := Rect(8, 0, 0, H)
else
R := Rect(R.Right - Canvas.TextWidth(Text) - 8, 0, 0, H);
Flags := DrawTextBiDiModeFlags(DT_SINGLELINE);
//Now using the Windows.DrawText
DrawText(Handle, PChar(Text), Length(Text), R, Flags or DT_CALCRECT);
Brush.Color := Color;//background color of the caption
Font.Color := clRed;//the color of the caption.
DrawText(Handle, PChar(Text), Length(Text), R, Flags);
end;
end
else
inherited; //if the control is not themed then use the original paint method.
end;
end;

enter image description here

关于delphi分组框标题颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740022/

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