注意:这个问题是关于delphi XE2更新4和delphi XE3中的行为,并且样式系统在XE4中已更改,因此这个问题不适用于Delphi版本XE4及更高版本。
许多控件如TPanel等,不支持一种简单的方法来改变任何元素的颜色而不进入“样式”功能。
我认为它的工作方式是:
让我们撇开这样一个事实,即应该很容易的东西(就像在VCL中一样)现在被Styles弄得晕头转向。 Delphi XE2(Firemonkey Update4)制作TPanel蓝色而不是灰色(默认值)的实际工作步骤是什么?
实际结果:当我尝试上述操作时,我得到一个持续约30秒的冻结,bds.exe的内存使用量超过1 GB内存,然后我崩溃了。有时候我得到“AQReporter.dll需要关闭“,有时其他IDE插件的其他错误,最后一个”Embarcadero RAD Studio for Windows已停止工作“错误。
答案 0 :(得分:3)
事实证明,除了其他错误之外,有时TForm.StyleBook属性不会自动分配。如果确定已分配,则上述步骤可以正常工作。
快速步骤:
注意:此解决方法在Delphi XE4及更高版本中无用,因为“自定义样式设置”功能已从移动应用程序FMX中删除。
答案 1 :(得分:1)
根据Warrens的回答,对于比他正在使用的更新的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',但你可以用完全不同的东西替换这个名字。