In der Vergangenheit erlaubte die VCL-Bibliothek einem Entwickler, einen Stil (oder keinen Stil) für die gesamte Anwendung auszuwählen. Ab 10.4 ermöglicht Ihnen die VCL-Bibliothek die gleichzeitige Verwendung mehrerer VCL-Stile in verschiedenen Formularen Ihrer Anwendungen oder sogar verschiedener Steuerelemente desselben Formulars. Sie können auch Elemente mit gemischten Stilen (Steuerelemente und Formular) und Elemente, die das Standard-Plattformthema von Windows verwenden, verwenden.
Diese Funktion wird über eine neue StyleName Eigenschaft für die TControl Klasse. Diese Eigenschaft nimmt als Wert den Namen eines der für die Anwendung aktiven Stile an und wendet den Stil auf das angegebene Steuerelement an. Wenn die Eigenschaft leer ist, wird der Stil des übergeordneten Steuerelements verwendet. Wenn Sie also die Eigenschaft für ein Formular festlegen, übernehmen alle Steuerelemente in diesem Formular standardmäßig den Formularstil.
Eine schnelle Demo
Wie der Name schon andeutet, ermöglicht das Styling pro Steuerelement einem Entwickler, verschiedene Stile für Steuerelemente und Formulare in derselben Anwendung anzuwenden. Zu Beginn müssen Sie einer Anwendung mehrere Stile hinzufügen, die Sie alle verwenden können. Diese Funktion funktioniert nur, wenn einer der VCL-Stile aktiv ist. Fügen Sie zunächst mehrere Stile zu einer Anwendung hinzu (Hinweis: In 10.4 können Sie die neuen High-Dpi-Stile verwenden, aber das ist ein Thema für einen anderen Blogbeitrag):

Legen Sie nun unterschiedliche Stilnamen für verschiedene Steuerelemente in einem Formular fest, wie in der folgenden DFM-Datei (ich habe hier nur die wichtigsten relevanten Eigenschaften beibehalten):
object Form2: TForm2
StyleName = 'Himmel'
Objekt Panel1: TPanel
StyleName = 'Hell'
object Button1: TButton...
object Button3: TButton
StyleName = 'Himmel'
Ende
Ende
object Button2: TButton
StyleName = 'Fenster'
Ende
object Button4: TButton
StilName = 'Luna'
Ende
object Button5: TButton
StilName = 'Aqua Graphit'
Ende
Ende
Beachten Sie, dass Taste1 übernimmt den Stil des Hosting-Panels, während Taste2 setzt den Stil auf den des Formulars zurück. Schließlich ist 'Windows' ein Wert für einen besonderen Zweck, wie unten beschrieben. Mit diesem Code sehen Sie die Benutzeroberfläche eines Formulars mit 5 Schaltflächen und 5 verschiedenen Stilen:

Ein paar Regeln
Es gibt verschiedene Ansätze, mit denen Sie den Stil der verschiedenen Formulare und Steuerelemente einer VCL-Anwendung anpassen können:
1. Passen Sie die Stil-Liste in den Projektoptionen an (Sie können die Stile aber auch zur Laufzeit laden).
2. Verwenden Sie die Eigenschaft TControl.StyleName, um den spezifischen Stil für jedes Steuerelement oder jedes Formular zu definieren. Der Wert StyleName muss einer der Namen der Stile in den Projektoptionen sein. Ein Steuerelement kann den für sein übergeordnetes Steuerelement definierten StyleName verwenden. Sie können also die Eigenschaft StyleName eines Formulars so einstellen, dass ein bestimmter Stil von allen Steuerelementen des Formulars verwendet wird. Zusätzliche Fälle:
- Standardmäßig ist TControl.StyleName leer und das Steuerelement verwendet einen Standardstil.
- Sie können StyleName auf 'Windows' setzen, um die Anwendung eines Stils für ein Steuerelement oder ein Formular zu deaktivieren.
- Wenn Sie einen Stilnamen festlegen, der nicht zu den geladenen VCL-Stilen gehört, wird das Steuerelement den Standardstil verwenden.
3. Sie können auch für allgemeine Dialoge einen bestimmten Stil festlegen. Verwenden Sie dazu die Eigenschaft TStyleManager.DialogsStyleName. Standardmäßig ist sie leer und die allgemeinen Dialoge verwenden den Standardstil der Anwendung.
4. Sie können den Anwendungsstil als 'Windows' definieren. Das bedeutet, dass, wenn ein Steuerelement oder ein Formular eine leere StyleName-Eigenschaft hat, immer der Stil 'Windows' verwendet wird und der VCL-Stil für dieses Steuerelement deaktiviert ist. Um diese Funktion zu aktivieren, müssen Sie die Eigenschaft TStyleManager.UseSystemStyleAsDefault auf True setzen. Verwenden Sie diese Eigenschaft, wenn Sie den VCL-Stil nur für einige Formulare aktivieren möchten, in denen Sie die Eigenschaft StyleName festlegen. Beachten Sie jedoch, dass VCL Styles in jedem Fall aktiv sein müssen.
Der unter Punkt 4 beschriebene Mechanismus ermöglicht es einem Entwickler, Komponenten von Drittanbietern, die keine VCL-Stile unterstützen, innerhalb einer gestylten Anwendung zu verwenden, was in der Vergangenheit ziemlich kompliziert war. Die neue Architektur sollte es ermöglichen, gestylte und ungestylte Steuerelemente und Formulare besser zu mischen und die Steuerelemente von Drittanbietern zu nutzen, ohne auf VCL-Stile verzichten zu müssen.
Beachten Sie, dass das Styling pro Steuerelement nicht automatisch für Steuerelemente von Drittanbietern angewendet wird. Um diese Funktion zu unterstützen, sollte ein Steuerelement den Code in der Methode Vcl.Themes.StyleServices mit TControl Parameter. Zum Beispiel, StyleServices(Self).DrawElement.
Fazit
Die Einführung von VCL-Stilen pro Steuerelement bietet Ihnen viel mehr Flexibilität bei der Einführung von Stilen in Ihrer Anwendung. Sie können mit der Gestaltung nur einiger Formulare beginnen und nach und nach mit anderen fortfahren. Sie können Ihre eigenen benutzerdefinierten Steuerelemente oder Steuerelemente von Drittanbietern, die keine VCL-Stile unterstützen, in einer gestylten Anwendung verwenden. Sie können UI-Stile mischen, und zwar dynamisch.
Zwar wird es in 10.4 noch viele andere Funktionen für VCL im Allgemeinen und VCL-Stile im Besonderen geben, aber dies ist eine großartige neue Funktion, über die es sich lohnt, im Voraus zu bloggen. Bleiben Sie dran für mehr (und auch schönere Demos!).
Wenn Sie ein Update-Abonnement haben, erhalten Sie unter anderem Zugang zu den Beta-Builds der kommenden Versionen. Es ist noch Zeit, an unserem Beta-Programm für 10.4 teilzunehmen!
Dies ist eine Vorschau auf eine kommende Version von RAD Studio. Es kann immer wieder zu Fehlern oder Änderungen in letzter Minute kommen. Nichts hier ist endgültig, bis die Version offiziell zur Verfügung gestellt wird.

