我正在编写一个备忘录组件,需要呈现成老式终端会话的样式。这本应该很简单,但是 FireMonkey 样式的工作方式使其变得难以置信复杂。
在非移动版的 FireMonkey 应用程序中,我可以右键单击控件并选择“编辑自定义样式”。但是移动应用程序中没有此选项。下面是一位 FireMonkey 开发人员给出的原因:
iOS 和 Android 支持不同的样式。我们不能在 Android 上运行 iOS 样式的应用程序。但是,当您尝试更改平台样式时,自动地会在每个目标平台上使用它。如果您想更改 fm 控件的默认样式,应将其放入窗体样式簿中,并在其中设置样式或加载到样式簿中的平台样式并进行更改。
还有一个非常重要的问题,当您将平台样式加载到样式簿中时,您可能希望应用程序实例不会有两个平台样式副本(一个来自 fmx 包中的系统样式,另一个副本在您的样式簿中)。为此,您应该在 TStylebook.UseStyleManager 中设置标志为 true。在这种情况下,样式簿中的样式将替换平台样式。
好的,我想我需要创建一个自定义样式。我该如何创建一个只覆盖字体和背景属性的自定义样式呢?
我猜可以像这样重写 ApplyStyle 过程。
procedure TMyMemo.ApplyStyle;
var
BackgroundObject: TFmxObject;
begin
inherited;
BackgroundObject := FindStyleResource('content');
if Assigned(BackgroundObject) then
begin
// Change the background color of the background
end;
end;
我该如何知道背景对象的类型以及需要更改哪个属性?
肯定,改变控件的背景颜色不可能这么难!我是否在FM样式中遗漏了一些基本的东西?