TSpeedbutton StyleLookup - 我们可以覆盖预定义的样式属性吗?

问题描述 投票:0回答:1

编辑:我正在使用 Delphi 12.1(无法添加评论)

我看到了这个链接:

在 Delphi XE2 FireMonkey 中 - 如何在按下按钮后更改按钮的颜色

我将代码设置为:

SpeedButton1.StyleLookup  := 'segmentedbuttonmiddle';

var Background: TRectangle;
if SpeedButton1.FindStyleResource('background') <> nil then
begin
  Background := SpeedButton1.FindStyleResource('background') as TRectangle;
  Background.Fill.Color := TAlphaColorRec.LightBlue;
end;

为什么找不到“背景”?

如何覆盖速度按钮的颜色?

delphi styles delphi-12-athens
1个回答
0
投票

Firemonkey 样式基于位图,并且包含针对不同状态的不同位图。 对于

TSpeedButton
,不同的状态是:

  • 热链接
  • 焦点链接
  • 正常链接
  • 按下链接

位图实际上是较大位图的一部分。 因此,对于样式化控件,您可以指定包含要使用的图像的位图,并且对于每个状态,您可以指定要使用的位图部分。 在您的情况下,您需要提供一个位图,其中包含表示

PressedLink
状态的浅蓝色区域。

样式控件具有

StyleLookup
属性。 如果未提供,则默认(在本例中)为名为
SpeedButtonStyle
的样式。 您可以选择更改表单上所有
TSpeedButton
的样式,或仅更改选定的样式。 要在设计时更改样式,请右键单击控件并选择
EditCustomStyle
EditDefaultStyle
。 如果您选择第一个选项,Delphi 将创建一个名为
SpeedButton1Style1
的样式,and
StyleLookup
属性设置为该名称。 如果您希望选定的其他按钮使用相同的样式,只需将它们的
StyleLookup
属性设置为相同的名称即可。

您可以在样式编辑器中更改该名称,但您还需要在按钮的

SourceLookup
属性中更改它。

当您在样式编辑器中时,展开样式以找到

background
子组件,然后使用对象检查器更改适当的属性(
SourceLookup
用于位图以及上面列出的不同状态的属性) .

Link
属性指定两个矩形,一个位于另一个内部。 如果我理解正确的话,内部矩形指定背景内部的外观(拉伸以填充背景),内部矩形和外部矩形之间的差异指定背景的边缘(类似拉伸)。

编辑完样式后,只需关闭该编辑器选项卡,它会询问您是否要在关闭之前应用更改(单击“否”将放弃您的更改)。

© www.soinside.com 2019 - 2024. All rights reserved.