2013-09-26 16 views
6

Ich schreibe eine Memo-Komponente, die wie eine altmodische Terminal-Sitzung aussehen muss. Das sollte wirklich einfach sein, aber die Art, wie FireMonkey-Stile funktionieren, macht es unglaublich komplex.Ändern Sie die Schriftart und Hintergrundfarben eines TMemo in FireMonkey

In einer nicht mobilen FireMonkey App kann ich mit der rechten Maustaste auf ein Steuerelement klicken und "Edit Custom Style" auswählen. Diese Option ist in mobilen Apps nicht verfügbar. Hier ist der Grund, den einer der FireMonkey-Entwickler gegeben hat.

Es ist Unterstützung verschiedener Stil auf iOS und Android. Wir können Anwendung auf Android im iOS-Stil nicht ausführen. Aber wenn Sie versuchen, Plattform-Stil zu ändern, werden wir es automatisch auf jeder Zielplattform verwenden. Wenn Sie Standard-Format von FM-Steuerelement ändern möchten, sollten Sie auf das Formular-Stil-Buch und machen Sie Stil in es, oder laden Sie auf Stil Plattform Plattform-Stil und nehmen Sie Änderungen daran.

auch sehr wichtig, wenn Sie Plattform-Stil in der Art Buch laden Sie kann wollen, dass Anwendungsinstanz nicht Stil zwei Kopie der Plattform haben (ein - System in fmx Paket und andere Kopie in Ihrem Stil Buch). Dafür sollte man in TStylebook.UseStyleManager das Flag true setzen. In wird dieser Fallstil in Stylebook den Plattformstil ersetzen.

OK, also ich denke, ich muss einen benutzerdefinierten Stil erstellen. Wie gehe ich vor, um einen benutzerdefinierten Stil zu erstellen, der nur die Schrift- und Hintergrundeigenschaften überschreibt?

Ich denke, ich kann die ApplyStyle-Prozedur etwas wie diese überschreiben.

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; 

Woher weiß ich, welchen Typ das Hintergrundobjekt hat und welche Eigenschaft ich ändern muss?

Sicherlich kann das Ändern der Hintergrundfarbe eines Steuerelements nicht so schwierig sein! Fehle ich etwas fundamental mit den FM-Stilen?

Antwort

1

Nun, eine Sache, die ich herausgefunden habe, ist, dass die Schriftarten in FireMonkey nicht geändert werden können! Sie können es auf eine andere Schriftart einstellen, aber wenn Sie es auf einem Gerät ausführen, wird es auf das Standardzeichen gesetzt.

Wenn Sie die Hintergrundfarbe für das Memo ändern möchten, sollten Sie Ihrem Formular ein Stylebook hinzufügen und eine gewünschte Style-Datei laden (wie im Standard-iOS-Stil). Wenn Sie einen Stil geladen haben, gehen Sie zu Memostyle und ändern Sie den Hintergrund.

Hoffe, das hilft!

0

Hoffe Sie diese Abhilfe nützlich finden

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; 
Verwandte Themen