如何启用应用程序范围的配色方案?

时间:2012-01-03 19:05:12

标签: delphi background-color color-scheme

我想将颜色方案应用到我的应用程序中。这是通过将所有组件的ParentColor设置为true以及ParentBackgroundParentFont来完成的。当我改变表格颜色时,一切都会改变。有一个例外:工具栏和工具按钮不会改变。是否可以使用表单的颜色更改它们,还是必须以单独的方式实现它?

这同样适用于字体颜色,但这有点奇怪。当我更改表单的字体颜色时,组框标题的字体颜色不会改变,但标签标题的标题(也在组框内)也会改变。

当实现某种方式允许用户选择自己的颜色时,这是一种方法(更改表单颜色,使所有组件都设置ParentColor)还是有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

实现这一目标的一种方法是使用interfaces

这是一些(手动)工作,但是如果您想以简单的方式完成它,您可以简单地定义一个接口并确保所有表单都实现此接口。

例如:

type ITheme = interface
  procedure SetTheme(const AColor : TColor);
end;

然后在每个表单中,您都可以实现此接口。

因此,要更改所有表单的颜色,只需调用1个函数:

procedure SetGlobalTheme(const AColor : TColor);
var Intf : ITheme;
begin
  for i:=0 to screen.Formcount-1 do
  begin
    if Supports(Screen.Forms[i],ITheme,intf) then
      intf.SetTheme(AColor);
  end;
end;

使用此方法可以完全控制每种组件的颜色,尽管可以进行更多编码。另一种方法是使用David建议的VCL样式(如果你的IDE支持它)