Met de officiële release van Windows 11 , heeft Embarcadero een aantal specifieke VCL stijlen beschikbaar gemaakt en ik bied een aantal codeerhulpjes specifiek voor de nieuwe versie van het Microsoft desktop OS. Meer zal volgen in de loop van de tijd.
Na de aankondiging eerder dit jaar heeft Microsoft vorige week Windows 11 officieel uitgebracht. Ondanks enkele problemen met het draaien van het nieuwe besturingssysteem op oudere computers als gevolg van nieuwe hardware-eisen, biedt de nieuwe versie van Windows een prettigere gebruikerservaring en werkomgeving, met behoud van een zeer hoge mate van compatibiliteit met bestaande applicaties, waaronder die geschreven met Delphi en C++Builder. We verwachten dat veel eindgebruikers de komende maanden zullen overstappen op Windows 11.
In deze blogpost wil ik me niet richten op Windows 11 en de vernieuwde gebruikerservaring, maar meer op hoe u uw VCL applicaties verder kunt verbeteren om ze eerste klas burger te maken in het nieuwe OS. In het algemeen zijn er veel moderniseringstechnieken die Delphi en C++Builder bieden om beter aan te sluiten bij recente versies van Windows, van het gebruik van VCL-stijlen tot de adoptie van de vele nieuwe VCL-besturingselementen die de afgelopen jaren zijn geïntroduceerd (tot aan de ControlList en de NumberBox-besturingselementen in RAD Studio 10.4.2 en de vernieuwde RichEdit in RAD Studio 11 Alexandria).
Laten we ons richten op specifieke ondersteuning voor Windows 11, waarbij we zelfs verder gaan dan algemene migratiesuggesties en -ideeën. Windows 11 wordt geleverd met de WebView2-besturingselementen, dus dit is een goed moment om het volgende te implementeren TEdgeBrowser over de TWebBrowser component. Ook blijft Microsoft zich richten op packaged apps en de Microsoft Store, twee mogelijkheden die je kunt bereiken via RAD Studio IDE ondersteuning voor het MSIX deployment formaat. Deze mogelijkheden zitten in de huidige versie van RAD Studio 11 (en waren er zelfs al eerder).
Nieuwe Windows 11 VCL-stijlen
Wat we gisteren hebben uitgebracht en nu beschikbaar is in GetIt is een set van twee nieuwe VCL stijlen specifiek voor Windows 11, voor light en dark mode. Typ "Windows 11" in de zoekbalk om ze snel te vinden:

Zodra u de twee stijlen hebt geïnstalleerd, kunt u de instellingen van een VCL project openen, naar de pagina Appearance gaan, de stijlen toevoegen aan de toepassing en (als u het gebruik van VCL stijlen tijdens het ontwerpen hebt ingeschakeld) ze selecteren in de eigenschap StyleName van een formulier om ze tijdens het ontwerpen te bekijken, zoals in de onderstaande afbeelding. Let, naast andere elementen, op de moderne stijl dunne schuifbalken in het lijstvak.

We hebben hieronder wat meer "officiële" afbeeldingen van de twee stijlen, waarop je extra afgeronde elementen en kleuren kunt zien die overeenkomen met de nieuwe standaardinstellingen van het platform.


Vensters 11 Afgeronde hoeken
Een van de meest zichtbare elementen van Windows 11 is het gebruik van "afgeronde UI-elementen", te beginnen met de afgeronde hoeken van formulieren. Als je een gloednieuwe VCL-toepassing maakt zonder speciale configuratie of instellingen en deze uitvoert op Windows 11, zou je standaard rondere hoeken voor formulieren moeten zien. Dit is echter een functie waar je volledige controle over hebt met behulp van een specifieke, openbare Windows API-oproep DwmSetWindowAttribute:
|
1
2
|
Winapi.Dwmapi.DwmSetWindowAttribute(Handgreep, DWMWA_WINDOW_CORNER_PREFERENCE,
@HoekVoorkeur, grootte van(HoekVoorkeur));
|
Om het gemakkelijker te maken om deze API te gebruiken (al gedekt door Ian Barker in een gedetailleerde blogpost getiteld "Hoe je Windows 11 Afgeronde hoeken in je app kunt regelen"), schreef ik een interposer helperklasse met vergelijkbare code, beschikbaar op GitHub op:
https://github.com/marcocantu/DelphiSessions/blob/master/Win11_Delphi11/Win11Round/Win11Forms.pas
Je kunt de interface van het apparaat hier bekijken:

Voeg deze eenheid gewoon toe in de uses statement van de interface sectie van een formulier, na de Vcl.Forms eenheid, en je formulier zal een nieuwe class property hebben die de standaard afronding aangeeft en een nieuwe property voor de specifieke formulierinstelling, zodat je kunt schrijven:
|
1
2
|
TForm.StandaardRondeHoeken := rcOff; // standaard instellen voor alle formulieren
RoundedCorners := rcOn; // de afronding voor de huidige vorm wijzigen
|
Deze code werkt alleen op Windows 11, omdat Windows 10 of eerdere versies het negeren (maar geen foutmelding geven). Ik heb het gebruikt in een eenvoudige demo (ook op GitHub op https://github.com/marcocantu/DelphiSessions/tree/master/Win11_Delphi11/Win11Round) met de volgende UI:

Merk tenslotte op dat VCL-toepassingen, inclusief toepassingen die de aangepaste VCL TitleBar gebruiken, ondersteuning bieden voor Snap lay-outs uit de doos:

Een klein probleem en meer in het verschiet
Zoals ik al eerder zei, werken VCL-toepassingen over het algemeen prima op Windows 11. Er is één probleem met de kleuren van menu-items met bijbehorende afbeeldingen. Er is één probleem met de kleuren van menu-items met bijbehorende afbeeldingen, aangezien het platform een andere set standaardkleuren gebruikt die een VCL-toepassing niet volledig respecteert. Dit is gemeld bij QP https://quality.embarcadero.com/browse/RSP-35049. Hoewel er een workaround is in het Quality Portal-rapport, zijn we van plan om binnenkort een fix aan te bieden voor RAD Studio 11 voor dit probleem.
We zijn van plan een aantal verdere Windows 11-gerelateerde verbeteringen en demo's van nieuwe functies in de komende maanden en in de toekomstige RAD Studio 11.1 release. Blijf op de hoogte.
Toepassingen bouwen voor Windows 11 met VCL
Het is geen mysterie dat Embarcadero versie 11 heeft gebruikt voor de laatste release van RAD Studio om het te verbinden met Windows 11. Met alle veranderingen in UI-bibliotheken die Microsoft eigen tools onderging in de afgelopen jaren, ben ik er zeker van dat de breedte van de API-ondersteuning en platform-integratie aangeboden door de VCL-bibliotheek in Delphi en C + + Builder is ongeëvenaard door Microsoft Visual Studio of een derde partij set van tools. Microsoft heeft duidelijk aangegeven dat native Windows ontwikkeling de sleutel is en blijft (zie Windows App SDK, aka Project Reunion) en de mainstream optie blijft, maar hun bibliotheken in deze ruimte (zoals MFC en WinForms) zijn niet op hetzelfde niveau als VCL en lopen achter op hun eigen platform features.
De VCL-bibliotheek, met zijn vermogen om klassieke en moderne API's te gebruiken (van Win API tot COM-gebaseerde API's tot WinRT) en zijn ondersteuning voor hoge DPI-monitoren en moderne UI-trends - allemaal zonder dat een volledige herschrijving van de toepassing nodig is - is uniek in de Windows desktopontwikkeling en onderscheidt zich duidelijk door zijn kracht. Voor de ontwikkeling van Windows 11 is de Visual Component Library de juiste keuze.
