在Delphi中的Firemonkey应用程序中更改most控件(即TPanel)的颜色(仅限XE2更新4和XE3)
注意:这个问题是关于delphi XE2 update 4和delphi XE3中的行为,并且样式系统在XE4中发生了更改,因此这个问题不适用于delphi XE4和更高版本 许多控件,如TPanel等,不支持在不进入“样式”功能的情况下更改任何元素的颜色的简单方法 我认为它应该起作用的方式是:在Delphi中的Firemonkey应用程序中更改most控件(即TPanel)的颜色(仅限XE2更新4和XE3),delphi,delphi-xe2,firemonkey,Delphi,Delphi Xe2,Firemonkey,注意:这个问题是关于delphi XE2 update 4和delphi XE3中的行为,并且样式系统在XE4中发生了更改,因此这个问题不适用于delphi XE4和更高版本 许多控件,如TPanel等,不支持在不进入“样式”功能的情况下更改任何元素的颜色的简单方法 我认为它应该起作用的方式是: 创建一个表单 在表格上放一个样式本 更改或创建样式 将样式应用于控件 控件更改颜色 让我们撇开一个事实不谈,一些本应该简单的东西(就像在VCL中一样)现在被样式所困扰。Delphi XE2(Firemo
实际结果:当我尝试上面的方法时,我得到一个持续30秒的冻结,bds.exe的内存使用超过1GB,然后我得到一个崩溃。有时我得到“AQReporter.dll需要关闭”,有时来自其他IDE插件的其他错误,最后出现“Embarcadero RAD Studio for Windows已停止工作”错误 事实证明,在其他错误中,有时TForm.StyleBook属性不会自动分配。如果确保已分配,则上述步骤将起作用 快速步骤:
注意:由于“自定义样式设置”功能已从移动应用程序FMX中删除,因此此解决方案在Delphi XE4及以上版本中没有用处。事实证明,在其他错误中,有时TForm.StyleBook属性不会自动分配。如果确保已分配,则上述步骤将起作用 快速步骤:
注意:由于“自定义样式设置”功能已从移动应用程序FMX中删除,此解决方案在Delphi XE4及以上版本中没有用处。继Warrens answer之后,对于比他使用的XE4及以上版本更新的Delphi版本,要在运行时修改面板的样式,需要在样式手册中更改样式,然后将样式重新指定给面板。具体而言:
var
R: TFMXObject;
begin
R := StyleBook1.Style.FindStyleResource('Panel1Style1');
if R is TRectangle then
TRectangle(R).Fill.Color := claRed;
Panel1.StyleLookup := 'Panel1Style1';
end;
记住这一点很重要,要想让它发挥作用,你必须在一本样式手册中创建一个自定义样式(根据Warren的回答)。在本例中,它被称为“Panel1Style1”,但您可以用完全不同的名称替换此名称。继Warrens answer之后,对于比他使用的版本更新的Delphi版本,XE4及更高版本,要在运行时修改面板的样式,需要在样式手册中更改样式,然后将样式重新指定给面板。具体而言:
var
R: TFMXObject;
begin
R := StyleBook1.Style.FindStyleResource('Panel1Style1');
if R is TRectangle then
TRectangle(R).Fill.Color := claRed;
Panel1.StyleLookup := 'Panel1Style1';
end;
记住这一点很重要,要想让它发挥作用,你必须在一本样式手册中创建一个自定义样式(根据Warren的回答)。在本例中,它被称为“Panel1Style1”,但您可以用完全不同的名称替换它。这可能与此相关:非常好!我认为,编写一个帮助函数库来设置firemonkey控件的颜色,等等,将所有的黑客行为封装在一个很好的东西中会很好;请说明为什么您认为这个问题很糟糕。将样式信息与表单设计器分开设置与不在代码中添加常量是一样的。它可能需要更多的工作来建立,但从长远来看更灵活。事实上,我希望他们能更进一步,从样式控制控制位置和大小。可以理解-但是许多人用特殊的颜色控制应用程序元素的外观-红色表示错误,有时选择颜色等。即使这种颜色是从“样式表设计”应用的,可能有必要在运行时修改颜色。这可能是相关的:非常好!我认为,编写一个帮助函数库来设置firemonkey控件的颜色,等等,将所有的黑客行为封装在一个很好的东西中会很好;请说明为什么您认为这个问题很糟糕。将样式信息与表单设计器分开设置与不在代码中添加常量是一样的。它可能需要更多的工作来建立,但从长远来看更灵活。事实上,我希望他们能更进一步,从样式控制控制位置和大小。可以理解-但是许多人用特殊的颜色控制应用程序元素的外观-红色表示错误,有时选择颜色等。即使这种颜色是从“样式表设计”应用的,可能需要在运行时修改颜色。我不确定这是否是一个bug,但这是一个“特性”,已经吸引了我好几次。可以在一个窗体上有多个样式本,并更改将哪个样式本指定给窗体的样式本属性。还可以将窗体的样式簿属性指定给另一窗体上的样式簿。默认情况下,将表单上创建的第一个样式集的forms StyleBook属性设置为自身。顺便说一句,如果您不创建样式集,但右键单击->编辑自定义样式集将自动创建并分配给表单。顺便说一句,Firemonkey移动应用程序上现在没有“编辑自定义样式”。不真实