2013-09-26 5 views
6

Я пишу компонент заметок, который должен выглядеть как старомодный сеанс терминала. Это должно быть очень просто, но работа стилей FireMonkey, похоже, делает его невероятно сложным.Изменение цвета шрифта и цвета TMemo в FireMonkey

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

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

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

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

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

ответ

1

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

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

Надеюсь, это поможет!

0

Надеется, что вы найдете полезным это временное решение

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; 

 Смежные вопросы

  • Нет связанных вопросов^_^