我正在编写一个需要看起来像老式终端会话的备忘录组件。这应该非常简单,但FireMonkey样式的工作方式似乎让它变得难以置信的复杂。
在非移动FireMonkey应用中,我可以右键单击一个控件并选择“编辑自定义样式”。此选项在移动应用中不可用。以下是其中一位FireMonkey开发人员给出的原因。
在iOS和Android上支持不同的风格。我们不能跑 Android风格的Android应用程序。但是当你试图改变时 平台风格,我们将自动在每个目标平台上使用它。 如果你想改变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风格的基本内容吗?
答案 0 :(得分:2)
希望您找到有用的解决方法
uses System.UIConsts;
procedure TfPlanJob.mDetailApplyStyleLookup(Sender: TObject);
var Obj: TFmxObject;
Rectangle1: TRectangle;
begin
Obj := mDetail.FindStyleResource('background');
if Obj <> nil then
begin
TControl(Obj).Margins := TBounds.Create(TRectF.Create(-1, -1, -1, -1));
Rectangle1 := TRectangle.Create(Obj);
Obj.AddObject(Rectangle1);
Rectangle1.Align := TAlignLayout.Client;
Rectangle1.Fill.Color := claLightslategrey;
Rectangle1.Stroke.Color := claNull;
Rectangle1.HitTest := False;
Rectangle1.SendToBack;
end;
end;
答案 1 :(得分:1)
我发现有一件事是在FireMonkey中无法更改字体!您可以将其设置为其他字体,但是当您在设备上运行它时,它将转到默认字体。
如果要更改备忘录的背景颜色,则应在样板中添加样式簿并加载所需的样式文件(如默认的浅色iOS样式)。加载样式后,请转到memostyle并更改de background。
希望这有帮助!