2013-09-26 15 views
6

Sto scrivendo un componente memo che deve apparire come una sessione di terminale vecchio stile. Questo dovrebbe essere molto semplice, ma il modo in cui funzionano gli stili di FireMonkey sembra renderlo incredibilmente complesso.Cambia il carattere e i colori di sfondo di un TMemo in FireMonkey

In un'applicazione FireMonkey non mobile, è possibile fare clic con il pulsante destro del mouse su un controllo e selezionare "Modifica stile personalizzato". Questa opzione non è disponibile nelle app mobili. Ecco la ragione fornita da uno degli sviluppatori di FireMonkey.

È supportato stile diverso su iOS e Android. Non è possibile eseguire l'applicazione su Android in stile iOS. Ma quando provi a cambiare lo stile di piattaforma , lo useremo automaticamente su ogni piattaforma di destinazione. Se si desidera modificare lo stile predefinito del controllo fm, è necessario inserire nel libro di stile del modulo e creare uno stile, oppure caricare lo stile della piattaforma di stile e apportare modifiche al suo interno.

anche molto importante, quando si carica lo stile platform in stile libro, È può desiderare che istanza dell'applicazione non avrà due copia della piattaforma stile (uno - System in Package FMX e altra copia nel vostro stile libro). Per questo dovresti impostare il flag true in TStylebook.UseStyleManager. In questo case style in Style book sostituirà lo stile della piattaforma.

OK, quindi penso di aver bisogno di creare uno stile personalizzato. Come faccio a creare uno stile personalizzato per sovrascrivere solo il carattere e le proprietà dello sfondo?

Suppongo di poter eseguire l'override della procedura ApplyStyle in questo modo.

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; 

Come faccio a sapere di che tipo è lo sfondo e quali proprietà devo modificare?

Sicuramente, cambiare il colore di sfondo di un controllo non può essere così difficile! Mi manca qualcosa di fondamentale con gli stili FM?

risposta

1

Beh, una cosa che ho scoperto è che i caratteri non possono essere modificati in FireMonkey! Puoi impostarlo su un font diverso, ma quando lo esegui su un dispositivo andrà a quello predefinito.

Se si desidera modificare il colore di sfondo per il memo, è necessario aggiungere uno stile al modulo e caricare un file di stile desiderato (come lo stile iOS light predefinito). Quando hai caricato uno stile, vai su memostyle e cambia sfondo.

Spero che questo aiuti!

0

Spero che troviate utile questa soluzione

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; 
Problemi correlati