在Delphi的Firemonkey应用程序中更改大多数控件(即TPanel)的颜色(仅限XE2 Update4和XE3)

时间:2012-03-09 18:03:13

标签: delphi delphi-xe2 firemonkey

注意:这个问题是关于delphi XE2更新4和delphi XE3中的行为,并且样式系统在XE4中已更改,因此这个问题不适用于Delphi版本XE4及更高版本。

许多控件如TPanel等,不支持一种简单的方法来改变任何元素的颜色而不进入“样式”功能。

我认为它的工作方式是:

  1. 创建表单。
  2. 在表格上放置样书。
  3. 更改或创建样式。
  4. 将样式应用于控件。
  5. 控件改变颜色。
  6. 让我们撇开这样一个事实,即应该很容易的东西(就像在VCL中一样)现在被Styles弄得晕头转向。 Delphi XE2(Firemonkey Update4)制作TPanel蓝色而不是灰色(默认值)的实际工作步骤是什么?

    实际结果:当我尝试上述操作时,我得到一个持续约30秒的冻结,bds.exe的内存使用量超过1 GB内存,然后我崩溃了。有时候我得到“AQReporter.dll需要关闭“,有时其他IDE插件的其他错误,最后一个”Embarcadero RAD Studio for Windows已停止工作“错误。

2 个答案:

答案 0 :(得分:3)

事实证明,除了其他错误之外,有时TForm.StyleBook属性不会自动分配。如果确定已分配,则上述步骤可以正常工作。

快速步骤:

  1. 创建表单。
  2. 在表单上删除样式簿,并指定Form.StyleBook = StyleBook1
  3. 右键单击要修改样式的控件,单击“编辑自定义样式”。
  4. 例如,转到对象检查器并修改“填充”属性以更改面板的背景颜色。
  5. 申请并关闭。 (由于窗口焦点错误,可能需要点击两次,三次或四次)
  6. enter image description here

    注意:此解决方法在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',但你可以用完全不同的东西替换这个名字。