Ich finde FMX Styles eigentlich schon ziemlich gut. Ein Custom Style zu erstellen funktioniert meiner Meinung nach um einiges besser und einfacher als mit VLC oder ähnlichen UI-Frameworks, die nicht auf Web-Technologien aufbauen.
Leider fehlen ein paar Dinge, wie Variablen für Farben, Textgrößen usw.
Ich habe deswegen vor einigen Monaten ein kleines Programm geschrieben, welches "CSS"-artigen Source Code nimmt und in Firemonkey's TStyleBook umwandelt. Dies kann zur Laufzeit gemacht werden, oder man kann das generierte Stylebook auch in eine Datei abspeichern und dann in der Delphi
IDE laden.
Es unterstützt alle Controls, Custom Variablen für Farben und Größen, Vererbung, "Macros" (z.B. "!Margin", der den Margin gleich für Top, Right, Bottom und Left setzt), Animationen/States (Property => {} Struktur), Kommentare usw.
Eine Button Style definition sieht dann ungefähr so aus:
Code:
TRectangle #buttonstyle {
!Radius: @radius-controls;
Stroke.Thickness: 0;
Stroke.Color => {
default: @bg-ui-5;
active: @bg-ui-2;
}
Fill.Color:@bg-ui-4;
TRectangle {
!Radius: @radius-controls;
Stroke.Thickness: 0;
Fill.Color: @color-primary;
Opacity => {
default: 0;
hover: 0.4;
}
}
TRectangle {
!Radius: @radius-controls;
Stroke.Thickness: 0;
Fill.Color: @color-primary;
Opacity => {
default: 0;
active: 1;
}
}
TText #text {
TextSettings.FontColor: @color-text;
}
}
Es ist ziemlich ähnlich wie CSS aufgebaut, hat aber ein paar kleine Unterschiede und man muss grundsätzlich wissen wie das FMX styling system funktioniert um es Anwenden zu können.
Bilder der Demo Anwendung mit den Styles findet man im Anhang. Der einzige unterschied zwischen den Bildern sind die Variabeln für die Farben.
Sollte jemand interesse daran haben das System selbst auszuprobieren oder anzuwenden kann man mir gerne eine PN schreiben. Ich wollte dies mal ganz öffentlich auf GitHub posten, kam aber leider nie dazu den Code zu verbessern und ein paar Bugs zu beseitigen...
Freundliche Grüsse