2014-11-19 14 views
5

Attualmente sto sviluppando un'applicazione per Windows 8.1 e OSX Yosemite.Cambiare le impostazioni di testo predefinite Font Famiglia/Dimensione (XE7)

Firemonkey utilizza Segoe UI (12) e Helvetica (13) come famiglia e dimensione di carattere predefinite.

Qualcuno sa un modo per cambiare le impostazioni predefinite o completamente li disattivarla:

enter image description here

Poiché i font predefiniti hanno diverse dimensioni di carattere (12 e 13) è difficile ottenere uno sguardo uguale e si sentono .

enter image description here

Come si può vedere le altre dimensioni sembrano tutti abbastanza uguali ad eccezione di default.

Se si desidera visualizzare un font con dimensione del testo 12 in OSX, è necessario farlo in fase di esecuzione. Questo perché se si imposta la dimensione del testo 12 nella finestra di progettazione passerà automaticamente a (Predefinito) e lo cambierà a 13 durante la compilazione per mac.

risposta

0

Mi aspetto che il valore predefinito indichi che sta utilizzando le impostazioni nello stile. È possibile aprire lo stile in Designer stili bitmap nel menu Strumenti, apportare eventuali modifiche e lo stile Salva come FireMonkey.

Non sono sicuro se c'è un modo semplice per cambiare i valori predefiniti, però. Potrebbe significare cambiare ogni carattere singolarmente.

0

Soluzione:

var 
    Settings: ITextSettings; 
    Instance: TComponent; 
    i: integer; 
begin 

    for i := 0 to ComponentCount - 1 do 
    begin 
    Instance := Components[i]; 

    if IInterface(Instance).QueryInterface(ITextSettings, Settings) = S_OK then 
    begin 
     Settings.TextSettings.BeginUpdate; 
     try 
     Settings.DefaultTextSettings.Font.Size := 12; 
     Settings.DefaultTextSettings.Font.Family := 'Comic Sans MS'; 
     finally 
     Settings.TextSettings.EndUpdate; 
     end; 
    end; 
    end; 
+0

Il problema per questa soluzione sono i componenti TStyleBook in cui, in fase di esecuzione, la sua proprietà ComponentCount è sempre zero. A parte, il programma deve fare la stessa cosa (per i: = 0 per StyleBook.ComponentCount - 1 do ...) per ogni componente TStyleBook trovato. Si prega di vedere la mia proposta di soluzione. Penso che una combinazione dei due, possa risolvere questo handicap. –

0

Il vero problema è, un cattivo utilizzo del valore predefinito per questa proprietà. È un errore di Embarcadero. Sicuro!

mia soluzione, componenti TStyleBooks all'interno, viene messo un valore vicino a 12, ma non 12.

particolare uso "11.9". Questo valore non è assunto come valore predefinito dall'editor di proprietà Delphi. Ma quando si esegue il programma, il sistema lo converte, correttamente in 12, nella dimensione del carattere. Anche in Mac OS X e Windows.

4

È possibile cambiare il tipo di carattere e la dimensione predefinita sostituendo l'IFMXSystemFontService:

unit My.FontService; 

interface 

uses 
    FMX.Platform; 

type 
    TmyFMXSystemFontService = class(TInterfacedObject, IFMXSystemFontService) 
    public 
    function GetDefaultFontFamilyName: string; 
    function GetDefaultFontSize: Single; 
    end; 

implementation 

function TmyFMXSystemFontService.GetDefaultFontFamilyName: string; 
begin 
    Result := 'Lato'; 
end; 

function TmyFMXSystemFontService.GetDefaultFontSize: Single; 
begin 
    Result := 12; 
end; 

procedure InitFont; 
begin 
    if TPlatformServices.Current.SupportsPlatformService(IFMXSystemFontService) then 
    TPlatformServices.Current.RemovePlatformService(IFMXSystemFontService); 

    TPlatformServices.Current.AddPlatformService(IFMXSystemFontService, TmyFMXSystemFontService.Create); 
end; 

initialization 

InitFont; 

end. 

La dimensione del font di default (in XE10, non so per XE7) è

  • per Windows: 12 (vedi DefaultWindowsFontSize in FMX.Platform.Win.pas)
  • per iOS: 14 (vedi DefaultiOSFontSize in FMX.Platform.iOS.pas)
  • per OS X: 13 (vedi DefaultMacFontSize in FMX.Platf orm.Mac.pas)
+0

grazie questa è la buona soluzione !! – loki

Problemi correlati