Изменение цвета шрифта и фона TMemo в FireMonkey

Я пишу компонент memo, который должен выглядеть как старомодный терминальный сеанс. Это должно быть очень просто, но то, как работают стили FireMonkey, кажется, делает его невероятно сложным.

в не мобильном приложении FireMonkey я могу щелкнуть правой кнопкой мыши элемент управления и выбрать "редактировать пользовательский стиль". Эта опция недоступна в мобильных приложениях. Вот причина, приведенная одним из разработчиков FireMonkey.

это поддержка другого стиля на iOS и Android. Мы не удается запустить приложение на Android в стиле iOS. Но когда ты пытаешься измениться ... стиль платформы, автоматически мы будем использовать его на каждой целевой платформе. Если вы хотите изменить стиль управления fm по умолчанию, вы должны надеть форма стиль книги и сделать стиль в нем, или загрузить в stylebook стиль платформы и внести в него изменения.

также очень важно, когда вы загружаете стиль платформы в книге стилей, вы может этот экземпляр приложения не будет иметь две копии платформы стиль (одна система в пакете fmx и другой копии в вашей книге стилей). Для этого вы должны установить флаг true в TStylebook.UseStyleManager. В этот случай style in Style book заменит стиль платформы.

OK, поэтому я считаю, что мне нужно создать пользовательский стиль. Как создать пользовательский стиль для переопределения только свойств шрифта и фона?

думаю, я могу переопределить процедуру 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?

2 ответов


Ну, я узнал, что шрифты не могут быть изменены в FireMonkey! Вы можете установить его на другой шрифт, но когда вы запускаете его на устройстве, он будет идти по умолчанию.

Если вы хотите изменить цвет фона для заметки, вы должны добавить книгу стилей в свою форму и загрузить файл стиля, который вы хотите(например, стиль iOS по умолчанию). Когда вы загрузили стиль, перейдите в memostyle и измените фон.

надеюсь, что это помогает!


надеюсь, вы найдете полезным этот обходной путь

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;