【问题标题】:Change the font and background colours of a TMemo in FireMonkey在 FireMonkey 中更改 TMemo 的字体和背景颜色
【发布时间】:2013-10-02 04:13:51
【问题描述】:

我正在编写一个需要看起来像老式终端会话的备忘录组件。这应该很简单,但 FireMonkey 样式的工作方式似乎使它变得难以置信的复杂。

在非移动 FireMonkey 应用程序中,我可以右键单击控件并选择“编辑自定义样式”。此选项在移动应用程序中不可用。这是 FireMonkey 开发人员之一给出的原因。

它在 iOS 和 Android 上支持不同的风格。我们不能跑 iOS 风格的 Android 应用程序。但是当你试图改变 平台样式,我们将自动在每个目标平台上使用它。 如果你想改变 fm 控件的默认样式,你应该穿上 表单样式书并在其中制作样式,或加载到样式簿 平台样式并对其进行更改。

也很重要,当您在样式书中加载平台样式时,您 可以希望该应用程序实例不会有两个平台副本 样式(一个 - fmx 包中的系统和样式书中的其他副本)。 为此,您应该在 TStylebook.UseStyleManager 中设置标志为 true。在 Style book 中的这种案例风格将取代平台风格。

好的,所以我认为我需要创建一个自定义样式。如何创建自定义样式以仅覆盖字体和背景属性?

我想我可以像这样覆盖 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 风格的基本内容?

【问题讨论】:

    标签: delphi styles delphi-xe5 firemonkey-fm3


    【解决方案1】:

    希望这个解决方法对您有用

    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;
    

    【讨论】:

    • 要更改字体,只需转到文本设置 > 字体颜色
    • 我认为你应该改用 Margins.Rect := TRectF.Create(...) - 或者甚至更好的是 RectF(...) 因为有一个功能 - 不泄漏内存,尝试添加 ReportMemoryLeaksOnShutdown := True;到您的程序 (.dpr) 文件
    【解决方案2】:

    我发现的一件事是在 FireMonkey 中无法更改字体!您可以将其设置为不同的字体,但是当您在设备上运行它时,它会使用默认字体。

    如果您想更改备忘录的背景颜色,您应该在表单中添加一个样式书并加载您想要的样式文件(如默认的浅色 iOS 样式)。加载样式后,转到 memostyle 并更改背景。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 2012-08-20
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多