In het verleden kon een ontwikkelaar met de VCL-bibliotheek één stijl (of geen stijl) kiezen voor de hele toepassing. Vanaf 10.4 kunt u met de VCL-bibliotheek meerdere VCL-stijlen tegelijk gebruiken in verschillende vormen van uw toepassingen, of zelfs verschillende besturingselementen van hetzelfde formulier. Je kunt ook elementen met een gemengde stijl (besturingselementen en formulier) en elementen met het standaard platformthema van Windows gebruiken.
Deze functie wordt geregeld door een nieuwe Stijlnaam eigenschap voor de TControl klasse. Deze eigenschap neemt als waarde de naam van een van de stijlen die actief zijn voor de toepassing, en past de stijl toe op het gegeven besturingselement. Als de eigenschap leeg is, wordt de stijl van het bovenliggende besturingselement gebruikt: dus als je de eigenschap instelt voor een formulier, krijgen alle besturingselementen in het formulier standaard de formulierstijl.
Een snelle demo
Zoals de naam al zegt, kan een ontwikkelaar met per-control styling verschillende stijlen toepassen voor besturingselementen en formulieren in dezelfde toepassing. Om te beginnen moet je meerdere stijlen toevoegen aan een toepassing, en je kunt ze allemaal gebruiken. Deze functie werkt alleen als een van de VCL Stijlen actief is. Voeg eerst meerdere stijlen toe aan een app (hint, in 10.4 kun je de nieuwe hoge-dpi stijlen gebruiken, dat is voor een andere blogpost):

Stel nu verschillende stijlen in voor verschillende besturingselementen in een formulier, zoals in het volgende DFM-bestand (ik heb hier alleen de belangrijkste relevante eigenschappen bewaard):
object Form2: TForm2
StijlNaam = 'Hemel'.
object Paneel1: TPanel
StijlNaam = 'Licht'.
object Button1: TButton...
object Knop3: TB-knop
StijlNaam = 'Hemel'.
einde
einde
object Button2: TButton
StijlNaam = 'Windows
einde
object Button4: TButton
StijlNaam = 'Luna
einde
object Knop5: TButton
StijlNaam = 'Aqua Graphite'.
einde
einde
Merk op dat Knop1 neemt de hostingpaneelstijl, terwijl Knop2 zet de stijl terug naar die van het formulier. Ten slotte is 'Windows' een waarde voor speciale doeleinden, zoals hieronder beschreven. Met deze code ziet u de UI van een formulier met 5 knoppen die 5 verschillende stijlen gebruiken:

Een paar regels
Er zijn verschillende benaderingen die je kunt gebruiken om de stijl van de verschillende formulieren en besturingselementen van een VCL-toepassing aan te passen:
1. Pas de stijllijst aan in de projectopties (maar je kunt ook stijlen laden tijdens runtime).
2. Gebruik de eigenschap TControl.StyleName om de specifieke stijl te definiëren voor elk besturingselement of elk formulier. De StyleName waarde moet een van de namen zijn van de stijlen in de projectopties. Een besturingselement kan de StyleName gebruiken die is gedefinieerd voor het bovenliggende besturingselement, dus je kunt de StyleName eigenschap van een formulier zo instellen dat een specifieke stijl wordt gebruikt door alle besturingselementen op het formulier. Extra gevallen:
- TControl.StyleName is standaard leeg en het besturingselement gebruikt een standaardstijl.
- Je kunt StyleName instellen als 'Windows' om het toepassen van een stijl voor een besturingselement of formulier uit te schakelen.
- Als je een stijlnaam instelt die niet voorkomt in de geladen VCL-stijlen, dan zal het besturingselement de standaardstijl gebruiken.
3. Je kunt ook een specifieke stijl definiëren voor gewone dialogen. Gebruik daarvoor de eigenschap TStyleManager.DialogsStyleName. Standaard is deze leeg en gebruiken gewone dialoogvensters de standaardstijl van de toepassing.
4. Je kunt de stijl van de toepassing definiëren als 'Windows'. Dit betekent dat als een besturingselement of formulier een lege StyleName eigenschap heeft, het altijd de 'Windows' stijl zal gebruiken en VCL Style altijd uitgeschakeld zal zijn. Om deze eigenschap in te schakelen moet je de TStyleManager.UseSystemStyleAsDefault property op True zetten. Gebruik deze eigenschap als je VCL Style alleen wilt inschakelen voor bepaalde formulieren, waarin je de eigenschap StyleName hebt ingesteld. Maar merk op dat VCL Styles in elk geval actief moeten zijn.
Het mechanisme beschreven in punt 4 hierboven laat een ontwikkelaar toe om componenten van derden te gebruiken die geen VCL stijlen ondersteunen binnen een gestylede toepassing, iets dat in het verleden vrij complex was om mee om te gaan. De nieuwe architectuur zou het mogelijk moeten maken om gestylede en niet gestylede controls en formulieren beter te mixen, en gebruik te maken van controls van derden zonder VCL stijlen op te geven.
Merk op dat styling per besturingselement niet automatisch wordt toegepast op besturingselementen van derden. Om deze functie te ondersteunen moet een besturingselement code gebruiken in de methode Vcl.Themes.StyleServices met TControl parameter. Bijvoorbeeld, StyleServices(Self).DrawElement.
Conclusie
De introductie van VCL stijlen per besturingselement biedt je veel meer flexibiliteit bij het introduceren van stijlen in je applicatie. Je kunt beginnen met het stijlen van slechts enkele formulieren en na verloop van tijd verder gaan met andere. Je kunt je eigen aangepaste besturingselementen of besturingselementen van derden die geen VCL-stijlen ondersteunen gebruiken binnen een gestileerde toepassing. Je kunt UI-stijlen mixen en dit dynamisch doen.
Hoewel er veel andere functies voor VCL in het algemeen en VCL stijlen in het bijzonder zullen komen in 10.4, is dit een geweldige nieuwe functie waarvan ik vond dat het de moeite waard was om er nu al over te bloggen. Blijf kijken voor meer (en ook mooiere demo's!).
Als je een update-abonnement hebt, is een van de voordelen toegang tot bètaversies van aankomende releases. Er is nog tijd om deel te nemen aan ons bètaprogramma voor 10.4!
Dit is een preview van een aankomende release van RAD Studio. Er kunnen altijd last-minute bugs of wijzigingen zijn. Niets hier is definitief totdat de release officieel beschikbaar is gemaakt.

