gpt4 book ai didi

delphi - 带有 Delphi VCL 样式的平面工具栏按钮——用下拉菜单修复工具栏项目?

转载 作者:行者123 更新时间:2023-12-03 15:46:39 25 4
gpt4 key购买 nike

这是 this question 的后续内容关于在启用 VCL 样式时使工具栏按钮变平。使用该问题中的解决方案,现在我的大多数 TActionToolbar 按钮都是扁平的。不过,有一个工具栏按钮带有一个带有附加操作的下拉菜单:

enter image description here

并且它仍然在其周围绘制按钮边缘。如何删除带有下拉菜单的工具栏按钮的按钮边框,以便它们与其他普通按钮匹配,并且看起来更像禁用 VCL 样式时的效果?

最佳答案

这种按钮是由TThemedDropDownButton类绘制的,因此您必须重写该类和TThemedDropDownButton.DrawBackground方法。

使用same unit of the previous answer添加一个名为 TThemedDropDownButtonEx

的新类
  TThemedDropDownButtonEx= class(TThemedDropDownButton)
protected
procedure DrawBackground(var PaintRect: TRect); override;
end;

然后像这样实现DrawBackground方法

procedure TThemedDropDownButtonEx.DrawBackground(var PaintRect: TRect);
const
CheckedState: array[Boolean] of TThemedToolBar = (ttbButtonHot, ttbButtonCheckedHot);
var
LIndex : Integer;
begin
LIndex := SaveDC(Canvas.Handle);
try
if Enabled and not (ActionBar.DesignMode) then
begin
if (MouseInControl or IsChecked or DroppedDown) and
(Assigned(ActionClient) and not ActionClient.Separator) then
begin
StyleServices.DrawElement(Canvas.Handle, StyleServices.GetElementDetails(CheckedState[IsChecked or (FState = bsDown)]), PaintRect);

if IsChecked and not MouseInControl then
StyleServices.DrawElement(Canvas.Handle, StyleServices.GetElementDetails(ttbButtonPressed), PaintRect);
end
else
;
end
else
;
finally
RestoreDC(Canvas.Handle, LIndex);
end;
end;

最后按此方式修改TPlatformVclStylesStyle.GetControlClass方法

更改此代码

if AnItem.HasItems then
case GetActionControlStyle of
csStandard: Result := TStandardDropDownButton;
csXPStyle: Result := TXPStyleDropDownBtn;
else
Result := TThemedDropDownButton;
end
else

按此

if AnItem.HasItems then
case GetActionControlStyle of
csStandard: Result := TStandardDropDownButton;
csXPStyle: Result := TXPStyleDropDownBtn;
else
Result := TThemedDropDownButtonEx;
end
else

enter image description here

关于delphi - 带有 Delphi VCL 样式的平面工具栏按钮——用下拉菜单修复工具栏项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842046/

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