2013-09-26 65 views
6

我在寫一個需要看起來像舊式終端會話的備忘錄組件。這應該非常簡單,但FireMonkey樣式的工作方式看起來令人難以置信地變得複雜。在FireMonkey中更改TMemo的字體和背景顏色

在非移動FireMonkey應用程序中,我可以右鍵單擊控件並選擇「編輯自定義樣式」。此選項在移動應用中不可用。這是由FireMonkey開發人員提供的原因。

它支持iOS和Android上的不同風格。我們無法在iOS風格的Android上運行 應用程序。但是當您嘗試更改 平臺樣式時,我們會自動在每個目標平臺上使用它。 如果你想改變默認的fm控制風格,你應該把 放在窗體樣式書中,並在其中創建樣​​式,或者加載到樣式簿 平臺風格並對其進行更改。

也是非常重要的,當你在風格本書加載平臺的風格,你可以 想要的應用程序實例將不會有平臺 風格證明二份(一個 - 系統FMX包和其他副本,你的風格的書)。 爲此,您應該在TStylebook.UseStyleManager中設置標誌爲true。在 Style書中的這種風格將取代平臺風格。

好的,所以我想我需要創建一個自定義樣式。我如何去創建自定義樣式來覆蓋字體和背景屬性?

我想我可以重寫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;