Mit der offiziellen Veröffentlichung von Windows 11 hat Embarcadero einige spezielle VCL-Stile zur Verfügung gestellt und ich biete einige Programmierhilfen an, die speziell auf die neue Version des Microsoft-Desktop-Betriebssystems zugeschnitten sind. Weitere werden im Laufe der Zeit folgen.
Nach der Ankündigung Anfang des Jahres hat Microsoft nun letzte Woche offiziell Windows 11 veröffentlicht. Trotz einiger Probleme bei der Ausführung des neuen Betriebssystems auf älteren Computern aufgrund neuer Hardware-Anforderungen bietet die neue Version von Windows ein angenehmeres Benutzererlebnis und eine bessere Arbeitsumgebung, während gleichzeitig ein sehr hohes Maß an Kompatibilität mit bestehenden Anwendungen beibehalten wird, einschließlich solcher, die mit Delphi und C++Builder geschrieben wurden. Wir gehen davon aus, dass in den kommenden Monaten viele Endbenutzer auf Windows 11 umsteigen werden.
In diesem Blog-Beitrag möchte ich mich nicht auf Windows 11 und seine erneuerte Benutzererfahrung konzentrieren, sondern vielmehr darauf, wie Sie Ihre VCL-Anwendungen weiter verbessern können, um sie zu erstklassigen Bürgern im neuen Betriebssystem zu machen. Generell gibt es viele Modernisierungstechniken, die Delphi und C++Builder bieten, um besser zu den aktuellen Versionen von Windows zu passen, von der Verwendung von VCL-Stilen bis zur Übernahme der vielen neuen VCL-Steuerelemente, die in den letzten Jahren eingeführt wurden (bis hin zu den ControlList- und NumberBox-Steuerelementen in RAD Studio 10.4.2 und dem überarbeiteten RichEdit in RAD Studio 11 Alexandria).
Konzentrieren wir uns auf die Windows 11-spezifische Unterstützung, die über allgemeine Migrationsvorschläge und Ideen hinausgeht. Windows 11 wird mit den WebView2-Steuerelementen ausgeliefert, so dass dies ein guter Zeitpunkt für die Einführung von TEdgeBrowser über die Komponente TWebBrowser. Außerdem konzentriert sich Microsoft weiterhin auf gepackte Anwendungen und den Microsoft Store, zwei Funktionen, die Sie über die RAD Studio IDE-Unterstützung für das MSIX-Bereitstellungsformat erreichen können. Diese Funktionen sind in der aktuellen Version von RAD Studio 11 enthalten (und waren auch schon früher vorhanden).
Neue Windows 11 VCL-Stile
Was wir gestern veröffentlicht haben und jetzt in GetIt verfügbar ist, ist eine Reihe von zwei neuen VCL-Stilen speziell für Windows 11, für den hellen und den dunklen Modus. Geben Sie "Windows 11" in die Suchleiste ein, um sie schnell zu finden:

Sobald Sie die beiden Stile installiert haben, können Sie die Einstellungen eines VCL-Projekts öffnen, die Seite Erscheinungsbild aufrufen, die Stile zur Anwendung hinzufügen und (wenn Sie die Verwendung von VCL-Stilen zur Entwurfszeit aktiviert haben) sie in der Eigenschaft StyleName eines Formulars auswählen, um sie zur Entwurfszeit in der Vorschau anzuzeigen, wie in der Abbildung unten. Beachten Sie neben anderen Elementen auch die dünnen Bildlaufleisten im Listenfeld im modernen Stil.

Nachfolgend haben wir einige weitere "offizielle" Bilder der beiden Stile, auf denen Sie zusätzliche abgerundete Elemente und Farben sehen können, die den neuen Plattformvorgaben entsprechen.


Fenster 11 Abgerundete Ecken
Eines der sichtbarsten Elemente von Windows 11 ist die Verwendung von "abgerundeten UI-Elementen", angefangen bei den abgerundeten Formularecken. Wenn Sie eine brandneue VCL-Anwendung ohne besondere Konfiguration oder Einstellung erstellen und sie unter Windows 11 ausführen, sollten Sie standardmäßig abgerundete Ecken für Formulare sehen. Dies ist jedoch eine Funktion, die Sie über einen speziellen, öffentlichen Windows-API-Aufruf vollständig steuern können DwmSetWindowAttribute:
|
1
2
|
Winapi.Dwmapi.DwmSetWindowAttribute(Handgriff, DWMWA_WINDOW_CORNER_PREFERENCE,
@EckePräferenz, Größe von(EckePräferenz));
|
Um die Verwendung dieser API zu vereinfachen (bereits abgedeckt durch Ian Barker in einem ausführlichen Blogbeitrag mit dem Titel "So steuern Sie die abgerundeten Ecken von Windows 11 in Ihrer App"), schrieb ich ein Interposer Hilfsklasse mit ähnlichem Code, verfügbar auf GitHub unter:
https://github.com/marcocantu/DelphiSessions/blob/master/Win11_Delphi11/Win11Round/Win11Forms.pas
Hier sehen Sie den Schnittstellenbereich des Geräts:

Fügen Sie diese Unit einfach in die uses-Anweisung des Interface-Abschnitts eines Formulars ein, nach der Unit Vcl.Forms, und Ihr Formular hat eine neue Klasseneigenschaft, die die Standardrundung angibt, und eine neue Eigenschaft für die spezifische Formulareinstellung, so dass Sie schreiben können:
|
1
2
|
TForm.DefaultRoundedCorners := rcOff; // Standard für alle Formulare festlegen
AbgerundeteEcken := rcOn; // Ändern Sie die Rundung für die aktuelle Form
|
Dieser Code funktioniert nur unter Windows 11, da Windows 10 oder frühere Versionen ihn ignorieren (aber keinen Fehler auslösen). Ich habe ihn in einer einfachen Demo verwendet (auch auf GitHub unter https://github.com/marcocantu/DelphiSessions/tree/master/Win11_Delphi11/Win11Round) mit der folgenden Benutzeroberfläche:

Beachten Sie schließlich, dass VCL-Anwendungen, einschließlich derjenigen, die die benutzerdefinierte VCL-Titelleiste verwenden, Unterstützung für Snap Layouts aus der Box:

Eine kleine Ausgabe und mehr in der Zukunft
Wie ich bereits erwähnt habe, funktionieren VCL-Anwendungen im Allgemeinen gut unter Windows 11. Es gibt ein Problem mit der Einfärbung von Menüpunkten mit zugehörigen Bildern, da die Plattform einen anderen Satz von Standardfarben verwendet, die eine VCL-Anwendung nicht vollständig respektiert. Dies wurde bei QP gemeldet https://quality.embarcadero.com/browse/RSP-35049. Es gibt zwar einen Workaround im Quality Portal-Bericht, aber wir planen, in Kürze einen Fix für RAD Studio 11 für dieses Problem anzubieten.
Wir planen in den kommenden Monaten und in der zukünftigen Version RAD Studio 11.1 einige weitere Verbesserungen und Demos neuer Funktionen im Zusammenhang mit Windows 11. Bleiben Sie dran.
Anwendungen für Windows 11 mit VCL erstellen
Es ist kein Geheimnis, dass Embarcadero die Version 11 für das letzte Release von RAD Studio verwendet hat, um es mit Windows 11 zu verbinden. Bei all den Änderungen an den UI-Bibliotheken, die Microsoft in den letzten Jahren vorgenommen hat, bin ich mir sicher, dass die Breite der API-Unterstützung und die Plattformintegration, die die VCL-Bibliothek in Delphi und C++Builder bietet, von Microsoft Visual Studio oder anderen Tools von Drittanbietern nicht übertroffen wird. Microsoft hat deutlich gemacht, dass die native Windows-Entwicklung wichtig ist und bleibt (siehe Windows App SDK, auch bekannt als Project Reunion) und dass sie die wichtigste Option ist, aber ihre Bibliotheken in diesem Bereich (wie MFC und WinForms) sind nicht mit VCL vergleichbar und bleiben hinter ihren eigenen Plattformfunktionen zurück.
Die VCL-Bibliothek mit ihrer Fähigkeit, klassische und moderne APIs abzubilden (von Win API über COM-basierte APIs bis hin zu WinRT) und ihrer Unterstützung für High DPI-Monitore und moderne UI-Trends - und das alles, ohne dass eine Anwendung komplett neu geschrieben werden muss - ist einzigartig im Windows-Desktop-Entwicklungsszenario und hebt sich eindeutig durch ihre Leistungsfähigkeit ab. Für die Entwicklung von Windows 11 ist die Visual Component Library das Mittel der Wahl.
