Neuerungen
Nach oben zu Hauptseite
Nach oben zu Neuerungen in den letzten Releases
Das Release RAD Studio 12.0 Athens enthält die folgenden neuen und verbesserten Features:
Inhaltsverzeichnis
- 1 Erweiterungen des Installationsprogramms
- 2 Neue IDE-Erweiterungen
- 3 Debugger-Verbesserungen
- 4 Skia-Integration
- 5 Delphi-Compiler
- 6 C++Builder
- 7 Delphi-RTL und Datenverbesserungen
- 8 FireDAC
- 9 Änderungen bei der VCL und FireMonkey
- 9.1 VCL
- 9.1.1 MDI wurde zur Unterstützung von HighDPI und Stilen überarbeitet
- 9.1.2 Steuerelement TFormTabsBar
- 9.1.3 Schriftarten und Bildschirme
- 9.1.4 Plattformintegration
- 9.1.5 Edge-Browser
- 9.1.6 Unterstützung der Kachelansicht für TListView
- 9.1.7 TControl-Enumerator
- 9.1.8 Neue Formulareigenschaft ShowInTaskbar
- 9.1.9 Erweiterungen für Desktop Windows Manager
- 9.1.10 Neuer Doppelpufferungsmodus
- 9.2 FireMonkey
- 9.1 VCL
- 10 ToolsAPI
- 11 Siehe auch
Erweiterungen des Installationsprogramms
Neuer Feature-Manager
In RAD Studio 12.0 Athens wurden die Benutzeroberfläche und das Verhalten bei der Installation von Plattformen und anderen Elementen durch Vereinfachung der Installationsoptionen verbessert. Verwenden Sie das Dialogfeld "Feature-Manager", früher "Plattform-Manager", um Ihre Installationen auszuwählen.
Alle Features und Optionen für die Installation befinden sich auf einem Bildschirm mit den Optionen für Sprache (Delphi oder C++) und Zielplattform (Windows, iOS usw.) als zentralem Teil des Bildschirms. Die weiteren Elemente werden in einer Liste in der rechten Seitenleiste angezeigt.
In der unteren Leiste des Installationsprogramms werden hilfreiche Information angezeigt, darunter die Differenz des Festplattenspeicherplatzes, je nachdem, ob n GB mehr oder weniger genutzt werden. Zudem ist an jeder Stelle, an der Fehler angezeigt werden, die neue Schaltfläche Fehler verfügbar. Mit dieser Schaltfläche können Sie das Protokoll in der Vorschau anzeigen und die betreffende Stelle der Installationsprotokolldatei im Explorer öffnen.
Aktualisierungen von Bibliotheken
Die folgenden Aktualisierungen wurden an den im Hauptinstallationsprogramm enthaltenen Bibliotheken vorgenommen.
- Die integrierte Version von DUnitX wurde auf die neuste Bibliotheksversion aktualisiert.
- Die Version von Indy, die mit RAD Studio ausgeliefert wird, wurde auf die neueste Version im offiziellen Indy-GitHub-Repository aktualisiert.
Qualitative Verbesserungen für GetIt
RAD Studio 12.0 Athens kann mehrere GetIt-Packages simultan aus einem einzelnen Ordner auf Ihrer Festplatte laden. Öffnen Sie das Dialogfeld GetIt-Package-Manager, verwenden Sie die neue Schaltfläche Mehrere Packages laden, um ein Datei-Dialogfeld zu öffnen, und wählen Sie mehrere JSON-Dateien mit lokalen GetIt-Package-Konfigurationen aus.
Weitere qualitative Verbesserungen:
- Das Protokoll des GetItCmd-Befehlszeilentools wird nun in die Datei
GetItInstall.log
ausgegeben. - Die Fehlermeldung und die Workarounds für das Compilieren von Projekten mit GetIt-Package-Abhängigkeiten wurden verbessert.
- Installieren Sie die GetIt-Packages von der Willkommensseite aus, wenn Sie "offline" (mit dem ISO-Image) installieren.
Neue IDE-Erweiterungen
In den folgenden Abschnitten sind mehrere Verbesserungen und Erweiterungen verschiedener Teile der IDE beschrieben.
Verschiebung veralteter Features
In RAD Studio 12.0 Athens haben wir einige alte und nicht unterstützte Tools aus der Installation des Kernprodukts entfernt und sie als Add-ons bereitgestellt:
- Unterstützung für die VCL-Übersetzung.
- Modellierung. Beachten Sie, dass Sie diese installieren müssen, wenn Sie die Delphi-Quelltextformatierung verwenden möchten. Dieses Feature ist im Abschnitt Technologie des Installationsprogramms verfügbar.
Suchen
Das Dialogfeld In Dateien suchen enthält nun die neue Option Ausschlussmaske für Unterverzeichnis, die bestimmte Ordner aus der Suche ausschließt, wenn Sie die Funktionen In Verzeichnissen suchen und Unterverzeichnisse einbeziehen verwenden. Es gibt Standardausschlüsse für Delphi und C++, und das Dialogfeld wurde vergrößert, damit der neue Inhalt aufgenommen werden kann.
GDI-Ressourcenverbrauch
Die Anzahl der GDI-Bitmaps ist jetzt in der IDE niedriger. Bilder können jetzt in den Ruhezustand (Dormant) versetzt werden, wenn sie länger als eine Minute nicht verwendet werden. Alle IDE-Bilderlisten, einschließlich solcher für Symbolleisten und Menüs, Komponentenbilder für die Palette usw., versetzen ihre Bilder in den Ruhezustand, wenn sie nicht verwendet werden.
CodeInsight und DelphiLSP
RAD Studio 12.0 Athens enthält eine neue Version der Funktion zum automatischen Aufrufen der Programmierhilfe. LSP und die Programmierhilfe in RAD Studio für Delphi-Versionen vor 10.4 wurden nach einer kurzen Verzögerung aufgerufen. Das bedeutete, dass Sie ein paar Buchstaben eines Symbols eingeben und warten konnten, bis das Programmierhilfefenster angezeigt wurde.
In RAD Studio Version 12.0 wurde die Funktion zum automatischen Aufrufen der Programmierhilfe wieder implementiert. Die Programmierhilfe wird nun angezeigt, wenn Sie:
Strg+Leer
drücken oder ".
" (nur ein Punkt) eingeben, wie in Version 11.3.- etwas eingeben und einen Moment warten.
- in einem Bezeichner schreiben (wurde früher nur am Beginn aufgerufen).
Die Funktion zum automatischen Aufrufen der Programmierhilfe ist nicht standardmäßig aktiviert. Wählen Sie zum Aktivieren dieser Funktion Optionen > Editor > Sprachen > Delphi > Code Insight aus. Aktivieren Sie das Kontrollkästchen "Automatisch aufrufen" und wählen Sie eine Zeitverzögerungsoption im Dropdown-Menü aus. Auch wenn das Kontrollkästchen nicht aktiviert ist, wird die Programmierhilfe angezeigt, wenn Sie einen ".
" eingeben.
Sie können konfigurieren, wie schnell die Programmierhilfe angezeigt wird, oder das alte Verhalten verwenden, bei dem die Programmierhilfe nur angezeigt wurde, wenn ein "." (nur ein Punkt) eingegeben oder Strg+Leer
gedrückt wurde.
Durch Drücken von (, [,
oder <
kann die Programmierhilfe auch automatisch ausgelöst werden. Das bedeutet, dass Sie einen Methodenaufruf, ein Generic oder einen Array-Zugriff eingeben können und die Programmierhilfe automatisch angezeigt wird. DelphiLSP versucht auch, gültige Typen innerhalb einer generischen <>
-Deklaration anzuzeigen.
Die Programmierhilfe fügt nun Klammern [ ]
für Array-Typen hinzu und setzt den Cursor in die Klammern. Im Programmierhilfefenster können die Tasten angezeigt werden, die sich auf die Programmierhilfe auswirken, wie z. B. Eingabe, Leer, Esc
usw.
In Version 12.0 wurden dem Hauptmenü Suchen die neuen Befehle "Zu Definition wechseln" und "Zu Implementierung wechseln" (Delphi) bzw. "Zu Definition wechseln" und "Zu Implementierung wechseln" (C++) hinzugefügt, was den Pfeiltasten Strg+Umschalt+Auf/Ab
im Editor entspricht (beachten Sie, dass Sie jede der beide Pfeiltasten drücken können, beide Tastenkürzel funktionieren gleich und wechseln nur die jeweilige Position). Dadurch wird eine transparentere Tasteninteraktion sichergestellt.
Quelltext-Schlüsselwörter
In RAD Studio 12.0 Athens sind Sprachschlüsselwörter in der Programmierhilfeliste enthalten. Schlüsselwörter werden vor Bezeichnern automatisch ausgewählt. Das bedeutet Folgendes: Auch wenn die Programmierhilfe automatisch aufgerufen wird, wird alles, was Sie eingeben, korrekt vervollständigt, solange es gültig ist.
Delphi LSP-Qualität
- Dem Menü "Tools" wurde ein Befehl zum Neustarten des LSP-Servers, falls erforderlich, hinzugefügt.
- Die Darstellung der Farbkonstanten für die Programmierhilfe wurde verbessert. Beim Eingeben einer Farbkonstante werden die Farben größer und in einem Quadrat angezeigt. Die Hex- und RGB-Werte werden angezeigt und die Systemfarben werden korrekt angezeigt (entsprechend dem Systemdesign, nicht dem IDE-Design). Dies gilt für TColor und TAlphaColor.
Visual Assist für C++
In RAD Studio 12.0 Athens wurde die Integration von Visual Assist eingeführt, einem führenden C++-Produktivitätstool, das früher nur in Visual Studio verfügbar war. Visual Assist ist ein umfangreiches Produkt, und dieses Release enthält die meisten Kern- und nützlichen Features für die Produktivität in den Bereichen der Programmierhilfe sowie eine Untermenge für Durchsuchen/Suchen, Navigation und Refactoring.
Zu den Visual Assist-Features für C++Builder und C++ in RAD Studio gehören:
- Code Insight (standardmäßig aktiviert, Sie können aber auch die frühere LSP-cquery-Implementierung aktivieren):
- Programmierhilfe, Parametervervollständigung und Tooltip Insight.
- Refactorings:
- Umbenennen: zum Umbenennen von Symbolen (Methoden, Klassen usw.) in Ihrer Projektgruppe.
- Include hinzufügen: Klicken Sie mit der rechten Maustaste auf ein Symbol, wie vector oder TButton und Visual Assist kann die richtige Header-Datei in eine include-Anweisung oben in der Unit einfügen.
- "Deklaration erstellen" und "Implementierung erstellen": die die Erstellung von Methoden unterstützen: Geben Sie eine Methode in eine Typdeklaration ein und Visual Assist erstellt automatisch eine leere Implementierung, oder geben Sie eine Implementierung ein und Visual Assist fügt dem Typ die Deklaration hinzu.
Navigationen:
- Symbol suchen: findet jedes Symbol sowohl in Ihrem Projekt oder Ihrer Projektgruppe als auch in den Headern – jedes Symbol, das Visual Assist aus dem Parsing kennt.
- Referenzen suchen: findet, wo ein Symbol (Methode, Klasse usw.) in Ihrer gesamten Projektgruppe verwendet wird, sowie eine Miniversion, die Referenzen in der aktuellen Unit findet.
- "Zu Definition wechseln" und "Zu Implementierung wechseln": mit denen Sie zwischen der Deklaration und der Implementierung einer Methode umschalten können, entsprechen der Funktion in Delphi (die Implementierung dieser Funktion für C++ wurde mit am häufigsten Wünsche für den Quelltext-Editor gewünscht).
- Zu Zugehörigem wechseln: eine außerordentlich nützliche Funktion, mit der Sie zu allem navigieren können, was mit einem Symbol (Methode, Typ, Include usw.) zusammenhängt, einschließlich des Konstruktors eines Typs, der Vorfahr- und Nachkommentypen, der Überschreibungen von Vorfahren und Nachkommen virtueller Methoden und mehr.
Die Features von Visual Assist sind sehr leistungsstarke Produktivitätstools, und wir freuen uns sehr über diese erste Integration.
Neuer WinAPI-App-Experte für C++
In RAD Studio 12.0 Athens wurde ein neuer WinAPI-Anwendungsexperte für C++Builder eingeführt.
Um eine Anwendung zu erstellen, rufen Sie einfach Datei > Neu > WinAPI auf oder besuchen Sie unsere Dokumentationsseite und befolgen Sie die Anleitung zur Verwendung des Experten.
Allgemeine IDE-Erweiterungen
Neue Designer
In RAD Studio 12.0 Athens wurden einige der Designer der KSVC-Bibliothek in das Kernprodukt übernommen. Dazu gehören folgende Designer:
- StringList-Editor: Symbolleiste, die das Laden und Speichern von Textdateien und Standardoperationen der Zwischenablage ermöglicht, sowie eine Statusleiste mit Positionsinformationen.
- Mehrzeilen-String-Editor: Dieses Feature ist für die Eigenschaft "Hint" aller und für die Eigenschaft "Caption" einiger Steuerelemente aktiviert.
- Schnelle Schaltflächenkonfiguration: Fügt eine schnelle Konfiguration für TButton hinzu.
- Schnelle Optionsfeldgruppenkonfiguration: Einführung eines neuen speziellen Editors für das Optionsfeldgruppen-Steuerelement.
- Schnelle Bereichskonfiguration: Neues Konfigurationsdialogfeld für das Steuerelement "TPanel".
Syntaxhervorhebung in der gesamten IDE
In RAD Studio 12.0 Athens wurde die Syntaxhervorhebung mit der IDE-Farbpalette zu folgenden Bereichen hinzugefügt:
- Zu Kurzhinweisen im Debugger
- Zu Fehlermarkierungsmeldungen in der Strukturansicht
- Zu Methoden und Typen in der Strukturansicht
- Zu Methoden und Typen in der Navigationssymbolleiste
- Zu Methoden und Adressen oder Modulen im Aufruf-Stack
Die Navigationssymbolleiste am oberen Rand des Editors wurde in mehreren Punkten erweitert, um das Feature intuitiver zu gestalten und ein besseres Verständnis der Ergebnisse zu ermöglichen. Im Folgenden sind einige Erweiterungen aufgeführt:
- Die Dropdown-Listen enthalten jetzt visuelle Hinweise auf ihre Funktion, wenn noch kein Text eingegeben wurde:
- Bei der Suche nach einem Typ oder einer Methode werden zunächst alle Ergebnisse angezeigt (in der Vergangenheit wurde ein leeres Ergebnisfenster geöffnet und nur Ergebnisse angezeigt, wenn Sie einen Suchbegriff eingegeben haben).
- Die Suchergebnisse werden syntaktisch hervorgehoben, und die aktuelle Suchübereinstimmung wird angezeigt:
Die Navigationssymbolleiste wird nun auch in den Farben des Editordesigns, nicht in den des IDE-Designs angezeigt:
Allgemeine IDE-Verbesserungen
- Die Seite Optionen > IDE > Speichern und Wiederherstellen enthält ein neues Kontrollkästchen zum Speichern des Editorstatus.
- Editorregisterkarten verfügen nun über den Menübefehl Dateipfad kopieren > mit Unterbefehlen für den vollständigen Pfad, für nur den Dateinamen und für nur den Ordner.
- Im Editor können Sie jetzt die Zeilenhöhe als Vielfaches der Schriftgröße einstellen (z. B. 1,1).
- Die Editor-Optionen sind jetzt ein Eintrag auf oberster Ebene im Dialogfeld "IDE-Optionen" und nicht mehr unter "Benutzeroberfläche" integriert.
- Die Such-Elemente des Delphi-Refactorings wurden in ein Untermenü verschoben: Suchen (Hauptmenü) > Suchen > Symbole suchen. Dies verbessert die Leistung beim Öffnen des Menüs.
- Leistensymbole, wie Haltepunkte, werden jetzt basierend auf der Schriftgröße mit dem Editor skaliert. Die ToolsAPI INTACodeEditorState290 enthält die neuen Eigenschaften "CharWidth" und "CharHeight" und die Methode "Refresh".
- Der Aufruf-Stack und das Debug-Ereignisprotokoll ermöglichen nun das Kopieren in die Zwischenablage und das Auswählen aller Elemente über das Kontextmenü.
- Es gibt neue Stile, die im VCL-Designer verwendet werden, wenn "Windows nachahmen" aktiviert ist und die IDE unter Windows 11 ausgeführt wird, sowohl für den hellen als auch den dunklen Modus.
Qualitative IDE-Verbesserungen
Es gibt zahlreiche qualitative Verbesserungen in folgenden Bereichen:
- Inline-Suche im Editor.
- High-DPI-Formulardesign, einschließlich der Größenänderung des Formulars und der Platzierung nicht visueller Komponenten sowie des Ziehens des Formular-Designers zwischen mehreren Fenstern.
Debugger-Verbesserungen
In früheren Versionen wurde erst nach einer längeren Verzögerung ein mögliches Problem angezeigt. In RAD Studio Version 12.0 wurde diese Verzögerung erheblich auf nur 6 Sekunden verkürzt. Wenn Sie auf die Schaltfläche Warten klicken, verlängert sich die Wartezeit um 3 Sekunden (d. h. 9 Sekunden, 12 Sekunden) bis maximal 15 Sekunden.
Wenn der Debug-Kernel nicht reagiert, wird ein Dialogfeld angezeigt, in dem der Benutzer die Möglichkeit hat, zu warten oder den Prozess zu beenden. Diese Verbesserung gilt für Win64, macOS, Linux, iOS und Android.
Sonstige Debugger-Verbesserungen
- Das Debuggen auf dem iOS-Simulator für iOS 17 funktioniert, aber das Debuggen auf einem Gerät mit iOS 17 wird nicht unterstützt. Dies ist auf eine iOS-Änderung zurückzuführen, die mehrere Anbieter (nicht Apple) betrifft.
- Xcode 15 wird für ausgeführte Apps unterstützt.
- macOS LLDB wurde aktualisiert.
- Linux LLDB wurde entsprechend aktualisiert.
- PAServer-Meldungen, einschließlich von Hinweisen, werden im Fenster "IDE-Meldungen" angezeigt.
- Das Betriebssystem-Thread-Handle wird in der Ansicht "Threads" angezeigt.
- Die Anzeige der FPU-Register auf Intel Mac wurde verbessert.
- Beim Debuggen von Delphi-Quelltext mit anonymen Methoden werden erfasste Variablen angezeigt.
- Die Debugger-Kurzhinweise im Editor sind nun an die Schriftgröße angepasst und verfügen über Syntaxhervorhebung.
- FPU- und XMM-Register werden für Windows 64 Bit mit LLDB, macOS und Linux korrekt angezeigt.
- Die ST- und XMM-Register werden für beide Win64-C++-Plattformen korrekt angezeigt.
- Änderung der FPU- und ST.XMM-Register für Linux und macOS.
Skia-Integration
In RAD Studio 12.0 wurde die Unterstützung für Skia für alle von FireMonkey unterstützten Plattformen hinzugefügt. Die Skia-Bibliothek unterstützt alle von RAD Studio Athens unterstützten Plattformen, in C++Builder und Delphi, vollständig, einschließlich der jüngsten Ergänzungen: iOS Simulator ARM und macOS ARM 64 Bit.
RAD Studio arbeitet mit Skia zusammen, indem es das Open-Source-Projekt Skia4Delphi nutzt, enthält aber zusätzliche Funktionen, die nicht in den Open-Source-Projekten enthalten sind, wie den Vulkan-Treiber.
Über Skia
Skia4Delphi ist eine plattformübergreifende 2D-Grafik-API für Delphi und C++Builder, die auf der Skia Graphics Library von Google basiert. Es bietet eine umfassende 2D-API zum Rendern von Bildern für mobile, Server- und Desktop-Modelle. Es ist mit allen RAD Studio-Frameworks (Konsole, FMX und VCL) und -Plattformen kompatibel.
Es stellt gebräuchliche 2D-APIs bereit, indem die Komplexität der Implementierung von Low-Level-Bibliotheken wie OpenGL, Vulkan, DirectX oder Metal abstrahiert wird und Optimierungen und neue Funktionen implementiert werden. In der Skia-Dokumentation (EN) finden Sie eine Beschreibung aller Hauptfunktionen und Informationen dazu, wie die Skia-Integration aktiviert wird.
Auf Skia basierende UI-Steuerelemente
Die Skia-Bibliotheksintegration enthält zudem einige neue Steuerelemente und Komponenten. Diese Steuerelemente sind nur verfügbar, wenn Skia aktiviert und auf der Zielplattform bereitgestellt ist.
- TSkAnimatedImage: Steuerelement zum Laden und Rendern animierter Bilder, einschließlich Vektoranimationen.
- TSkLabel: Implementiert neue Features, die entweder nicht von TLabel unterstützt wurden oder deren Implementierung schwierig war, wie z. B:
- Schriftartfamilien (Fallback-Liste für Schriftarten wie CSS)
- Strichstärke und Neigung für Schriftarten
- Unterstützung für mehrere Textstile
- Unterstützung für BiDi (rechts nach links)
- Unterstützung für bündige horizontale Ausrichtung
- Unterstützung für die Hintergrundfarbe für Teile von Text
- Option zur automatischen Größenanpassung
- Erweiterte Auszeichnungen (gewellter Unterstrich, Überstrich, gestrichelte Linie und mehr)
- TSkPaintBox: Steuerelement zum direkten Zeichnen auf dem Bildschirm mit Skia-APIs und dem Ereignis "OnDraw".
- TSaAnimatedPaintBox: Ermöglicht das Festlegen der Dauer einer Animation und das Zeichnen des Verlaufs dieser Animation mit Skia-APIs über das Ereignis "OnAnimationDraw".
- TSkSVG: Steuerelement zu Anzeige von SVG.
Rendern von FireMonkey mit Skia
Mit der Skia-Unterstützung ist es möglich, ein Standard-Canvas von FMX durch ein Skia-basiertes Canvas zu ersetzen. Wenn Skia aktiviert ist, werden alle FMX-Steuerelemente automatisch mit der Skia-basierten Implementierung gezeichnet. Dadurch werden die Leistung und die Qualität der Zeichnungen für FMX (hauptsächlich auf Mobilgeräten) und die gesamte Bibliothek verbessert.
Auf unserer Skia-Dokumentationsseite finden Sie Informationen zum Rendern mit Skia.
Vulkan-Backend
Skia mit RAD Studio unterstützt das Vulkan-Backend für Android und optional für Windows. Das Skia-Canvas mit RAD Studio nutzt automatisch Vulkan auf Android, falls unterstützt. Dies führt zu einer verbesserten grafischen Leistung und Energieeffizienz im Vergleich zu OpenGLES. Um Vulkan unter Windows zu aktivieren, falls unterstützt, legen Sie im initialization-Abschnitt FMX.Types.GlobalUseVulkan auf True
und FMX.Skia.GlobalUseSkiaRasterWhenAvailable auf False
fest.
uses
System.StartUpCopy,
FMX.Forms,
FMX.Types,
FMX.Skia,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
GlobalUseSkia := True;
GlobalUseSkiaRasterWhenAvailable := False;
GlobalUseVulkan := True;
Application.Initialize;
...
False
festgelegt werden.Skia-Shading-Sprache (SKSL)
Wenn Sie das Skia-App-Rendern mit GPU-Beschleunigung anstelle der Rasterung verwenden, nutzt FireMonkey die leistungsstarke SKSL zum Rendern von Effekten und Filtern. Dieser Ansatz bietet eine bessere Leistung als die derzeitige Methode und erhöht die Effizienz des Skia-Canvas.
Einer der Hauptvorteile von SKSL zum Erstellen von Effekten und Filtern ist die vereinfachte Wartung. Eine einzige Shader-Codebasis funktioniert konsistent auf allen Plattformen, wodurch die Notwendigkeit mehrerer Codes für die einzelnen Backend-APIs entfällt und einheitliche Ergebnisse gewährleistet werden.
Animiertes Codec: WebP-Encoder
Die in RAD Studio integrierte Skia-Version unterstützt die Codierung von animiertem WebP. Mit der neuen animierten Codec-Basis von FireMonkey können neue Encoder registriert werden, die in der Lage sind, zu codieren und/oder zu decodieren.
WebP ist eines der am weitesten verbreiteten Formate im Internet, da es im Vergleich zu JPEG besser komprimiert werden kann, was zu kleineren Dateien bei gleichzeitig höherer Qualität führt. Es bietet auch Animationsmöglichkeiten ähnlich wie GIFs, jedoch mit verlustfreien Frames, d. h. ohne Verlust von Qualität und/oder Komprimierung. Außerdem unterstützt es Transparenz, was es zu einem äußerst vielseitigen Format macht. Beispiele und weitere Informationen finden Sie unter Skia: Animiertes Codec.
Druckerunterstützung und Drucken in PDF
Wenn Skia aktiviert ist, verwendet der native Drucker für Windows von FireMonkey Skia als Backend für den physischen Drucker und stellt die Unterstützung für alle anderen Plattformen über das Drucken von PDF-Dokumenten sicher, wobei auch optional XPS-Dateien gedruckt werden können, wenn das Ziel Windows ist. Unter iOS und Android generiert der Drucker eine druckbare Datei, die automatisch freigegeben wird. Beispiele und weitere Informationen finden Sie in der Dokumentation Skia für FireMonkey-Drucker.
Skia-Unterstützung für C++Builder
RAD Studio Athens bietet Skia4Delphi-Unterstützung für C++Builder, einschließlich für die in C++ geschriebene Hauptdemo des Projekts, um Benutzer bei der Implementierung zu unterstützen. Um während der Installation von RAD Studio auf die Demo zuzugreifen, installieren Sie die Beispiele oder laden Sie das Repository von [Embarcadero GitHub (EN)] herunter.
Skia-Demos
Die folgenden Skia-Demos sind in der Installation enthalten.
Delphi-Compiler
Im folgenden Abschnitt sind Verbesserungen und Aktualisierungen des Delphi-Compilers beschrieben.
Lange und mehrzeilige String-Literale
RAD Studio 12.0 Athens enthält wichtige Änderungen der Art und Weise, wie der Delphi-Compiler String-Literale behandelt, die seit den frühen Versionen von Delphi an das klassische Pascal-String-Design (kurze Strings) gebunden sind.
String-Literale können jetzt länger als 255 Zeichen sein, sie sind also nicht mehr auf den klassischen Pascal-ShortString-Typ begrenzt. Beachten Sie, dass die Länge eines literalen Strings durch die Beschränkungen des Editors begrenzt sein kann (auf 4 K Zeichen pro Zeile). Die Syntax hat sich nicht geändert; Sie können einfach einen literalen String ohne Anführungszeichen verwenden, der länger als 255 Zeichen ist.
Die Sprache unterstützt auch mehrzeilige Strings. Ein mehrzeiliger String wird mit einem dreifachen Anführungszeichen (’’’)
und einer neuen Zeile begonnen, kann mehrere Zeilen von Quelltext umfassen und endet mit einem schließenden dreifachen Anführungszeichen (’’’) in einer Zeile ohne Text. Beachten Sie, dass zusätzlicher Text nach dem dreifachen Anführungszeichen in der ersten Zeile ungültig ist. Wichtig ist, dass die Zeilen nicht mehr wie bisher mit einem +
-Zeichen zu einzeiligen Strings verkettet werden müssen.
Weitere Informationen zu langen und mehrzeiligen String-Literalen und den Einzugsregeln finden Sie auf unserer Dokumentationsseite zu String-Typen.
NativeInt als schwacher Alias
In RAD Studio 12.0 Athens wurde eine signifikante Compiler-Änderung vorgenommen, die sich hauptsächlich auf das Überladen für einige Integer-Typen und die Kompatibilität von 32-Bit- und 64-Bit-Code auswirkt. Der Delphi-Compiler verwendet einen Gleitkommatyp namens NativeInt (oder NativeUInt), der der Plattform-Bitanzahl entspricht.
Ab RAD Studio 12.0 wurde NativeInt in einen schwachen Alias geändert. Das bedeutet, dass Benutzer ihn nicht als separaten Typ verwenden können. Informationen zur Verwendung und ein Beispiel finden Sie auf unserer Seite NativeInt.
Unterstützung von NaN-Vergleichsoperationen gemäß IEEE
IEEE erfordert, dass alle Vergleichsoperationen mit NaN false
zurückgeben. Die Regel lautet: "IEEE 754 weist allen relationalen Ausdrücken, die NaN beinhalten, Werte zu. In der C-Syntax ist das Prädikat x != y
True
, aber alle anderen x < y
, x <= y
,x == y
, x >= y
und x > y
sind False
, wenn x oder y oder beide NaN sind ..."
Der Delphi-Win32-Compiler arbeitet nun entsprechend dieser Regel. Weitere Informationen dazu finden Sie auf unserer Dokumentationsseite Interne Datenformate.
Verbesserte Warnungen in generischen Klassen
Für Code in generischen Klassen wurden in mehreren Szenarien nicht die gleichen Warnungen wie für nicht generischen Code angezeigt. Der Compiler analysiert jetzt Methoden in generischen Typen oder generischen Methoden, erzeugt die gleichen Hinweise und Warnungen wie für reguläre Methoden und gibt die folgenden Meldungen aus:
W1035 Return value of function '%s' might be undefined
W1036 Variable '%s' might not have been initialized
H2077 Value assigned to '%s' never used
H2164 Variable '%s' is declared but never used in '%s'
Folgende Beispiele sind spezifische Warnmeldungen von unserem Testcode.
Warning: W1035 Return value of function 'TEStatic.Func<T1,TResult>.[0]' might be undefined
Warning: W1035 Return value of function 'TEStatic.Func<T1,T2,TResult>.[0]' might be undefined
Hint: H2077 Value assigned to 'G<T>.foo' never used
Neues LLVM-Symbol
In RAD Studio Athens 12.0 wurde allen LLVM-basierten Delphi-Compiler das vordefinierte LLVM-Symbol hinzugefügt. Dadurch wird vom Backend des Compilers abhängiger Code erleichtert. Verwenden Sie das Symbol EXTERNALLINKER in den letzten Versionen, um die gleiche Prüfung durchzuführen. Dies ist aber weniger offensichtlich und schlechter lesbar.
Delphi exportiert das uses-Diagramm in eine GraphViz-Datei
Der Delphi-Compiler verfügt über ein neues Feature, das Benutzern das Verständnis der Struktur eines Projekts erleichtert und unnötige zirkuläre Unit-Referenzen vermeidet, was die Compilierung verlangsamen und in Kombination mit anderen Sprachmerkmalen negative Nebeneffekte für den Compiler selbst haben kann. Die Möglichkeit, direkt auf Compiler-Ebene ein uses-Anweisungsdiagramm zu generieren (ohne ein separates Analysetool) kann in vielen anderen Szenarien nützlich sein, um die Struktur einer Anwendung zu verstehen.
Der Compiler verfügt über die neue Option --graphviz
, die ein Unit-Abhängigkeitsdiagramm in einer .gv-GraphViz-Datei generiert. Diese Datei kann von verschiedenen Tools und sogar online verarbeitet werden.
Oder Benutzer können Units (einzeln oder nach Familie) aus dem Diagramm ausschließen:
--graphviz
gibt die Datei <exe-Name>.gv aus.--graphviz-exclude:<Unit-Liste>
schließt bestimmte Unit-Namen aus der Ausgabe aus.
Mit dem Muster --graphviz-exclude:<Unit-Liste>
kann der Platzhalter '*'
verwendet werden und mehrere Unit-Namensmuster können in der <Unit-Liste>
durch ';'
getrennt angegeben werden.
Zum Beispiel:
--graphviz-exclude:System.*;VCL.*;FMX.*
schließt alle System-, VCL- und FireMonkey-Units aus.
Denken Sie zum Beispiel an eine einfache Anwendung mit einem Hauptformular, einem sekundären Dialogfeld und einem Datenmodul. Sie beziehen sich über einige uses-Anweisungen im interface- oder implementation-Abschnitt aufeinander. Sie wird mit der folgenden Befehlszeile erstellt (ohne System-Units):
dcc32 --graphviz --graphviz-exclude=System.*;Vcl.*;WinApi.* GraphTest.dpr
Es wird die folgende .gv-Datei generiert, in der "style=dashed" für uses-Anweisungen im implementation-Abschnitt verwendet wird:
digraph GraphTest {
GraphTest -> { GT_mainform GT_dialog GT_datamodule }
GT_mainform -> { GT_datamodule GT_dialog }
GT_datamodule
GT_dialog -> { GT_datamodule GT_mainform } [arrowhead=open,style=dashed]
}
Die .gv-Datei enthält detaillierte Informationen über die Beziehungen von Units. Es handelt sich um eine Textdatei, die von benutzerdefiniertem Code analysiert werden kann, um Informationen über Unit-Zyklen zu extrahieren. Sie kann auch direkt verwendet werden, um ein Diagramm zu generieren (dies kann allerdings für ein großes Projekt sehr komplex werden). Das vorliegende Beispiel erzeugt ein Diagramm wie das folgende:
Qualitative Verbesserungen
Zu den wichtigsten qualitativen Compiler-Verbesserungen gehören:
- Optimierter generierter Code für verschiedene Operationen, wenn der Divisor eine Konstante ist.
- Der Compiler verwendet jetzt, wie erwartet, das Ausgabeverzeichnis für die XML-Dokumentation für die XMLDoc-Artefakte. Zuvor wurde stattdessen der C++-.hpp-Ordner verwendet.
- Der Typ des verborgenen "high bound"-Parameters für ein offenes Array wurde von Integer in NativeInt geändert, einem Alias von Integer oder Int64, je nach Ziel-CPU. Das bedeutet, dass "Length", "High" und "Low" für offene Array-Parameter in 64-Bit-Compilern jetzt einen 64-Bit-Wert zurückgeben.
- Der Delphi-Compiler stellt jetzt detaillierte Informationen bei einem Fehler bezüglich zirkulärer Unit-Referenzen bereit. Wenn Sie die Fehlermeldung erweitern, erhalten Sie weitere Informationen zur tatsächlichen Reihenfolge der Unit-Referenzen, die zu der zirkulären Unit-Referenz führen, wie im folgenden Beispiel:
[dcc32 Fatal Error] GT_mainform.pas(7): F2047 Circular unit reference to 'GT_MainForm'
GT_dialog.pas(7): Unit 'GT_datamodule' is used by 'GT_dialog'
GT_mainform.pas(7): Unit 'GT_dialog' is used by 'GT_mainform'
GT_datamodule.pas(6): Unit 'GT_MainForm' is used by
'GT_datamodule'
C++Builder
Im folgenden Abschnitt sind Verbesserungen und Aktualisierungen von C++Builder beschrieben.
iOS und Android entfernt
In RAD Studio Athens wurden die Plattformen iOS 64 Bit und Android 32 Bit entfernt, weil die Plattformen nicht unterstützen werden können, wenn die Bereitstellung von Anwendungen in deren Stores nicht unterstützt wird. Bitte verwenden Sie 11.3, um mit C++ iOS oder Android zu erzeugen.
Clang-Upgrade
RAD Studio 12.0 enthält eine Vorschauversion eines aktualisierten Clang-Win64-Compilers. Der Vorschau-Compiler und seine Toolkette sind im Installationsprogramm enthalten. Beide Win64-Toolketten, die aktuelle (Clang 5) und die Vorschauversion (Clang 15), stehen in 12.0 zur Verfügung. Einzelheiten zu den Merkmalen und ein Beispiel finden Sie auf unserer Seite Clang-Win64.
Informationen zu Toolketten
- Verwendet Clang 15.
- Verwendet LLVM-lld als Linker.
- Verwendet Itanium-ABI (nicht Microsoft-ABI).
- Verwendet LLVM-libc++-STL.
- Verwendet UCRT für die C-Laufzeit.
- Verwendet eine Kombination von LLVM und Mingw für die C++-Laufzeit.
- Nur Befehlszeilentools. Compilieren oder Linken aus der IDE ist nicht zulässig. Führen Sie daher bcc64x manuell aus.
- Benutzer können von der IDE aus debuggen. Verwenden Sie Start > Prozess laden oder Start > Mit Prozess verbinden und wählen Sie den korrekten Debugger aus: "Embarcadero Windows 64-Bit-Debugger (Modern)".
- Debug-Informationen im PDB-Format mit der Debugger-Option Start > Mit Prozess verbinden > Moderner LLDB und debuggen Sie eine C++-App mit PDB-Debug-Informationen.
Delphi-RTL und Datenverbesserungen
Delphi-RTL
RAD Studio 12.0 umfasst viele wichtige Erweiterungen der RTL-Bibliothek.
GetCompilerVersion und GetRTLVersion
RAD Studio 12.0 enthält zwei neue Funktionen in der Unit System:
- GetCompilerVersion: Gibt die Versionsnummer des Compilers dieser System-Unit zum Zeitpunkt der Compilierung zurück. Das höherwertige Byte enthält die Hauptversion des Compilers, das niederwertige Byte die Nebenversion des Compilers.
- GetRTLVersion: Gibt die Versionsnummer der RTL dieser System-Unit zum Zeitpunkt der Compilierung zurück. Das höherwertige Byte enthält die Hauptversion der RTL, das niederwertige Byte die Nebenversion der RTL.
Deaktivieren der Gleitkomma-Exceptions auf allen Plattformen
In RAD Studio 12.0 wurde der Standardwert der Einstellungen für die RTL-Gleitkomma-Exceptions geändert: Default8087CW, DefaultMXCSR, DefaultFPSCR und DefaultFPSCR. Das Ziel war, alle Gleitkomma-Exceptions standardmäßig zu deaktivieren, wenn eine Gleitkommaoperation einen Störfall erkennt. Alle Plattformen (Windows, macOS, iOS, Android und Linux) und C++Builder sind davon betroffen. Benutzer können Gleitkomma-Exceptions manuell in einer Anwendung auf Thread-Ebene wieder aktivieren.
Diese Änderung hat die folgenden Auswirkungen:
- Ausdrücke, die die grundlegenden vier arithmetischen Operationen (Addition, Subtraktion, Multiplikation und Division) enthalten:
- Windows-32- und -64-Plattformen werden geändert, damit Gleitkomma-Exceptions unterdrückt werden.
- Andere Plattformen und Windows-FMX-Anwendungen werden nicht geändert (das frühere Verhalten war, diese Exceptions nicht auszulösen).
- Mathematische Funktionen, einschließlich trigonometrische (sin, cos, tan) und transzendente Funktionen (ln, exp):
- Windows-32- und -64-Plattformen und die meisten anderen Plattformen werden geändert, damit Gleitkomma-Exceptions unterdrückt werden.
- Nur macOS-/Arm64- und Windows-FMX-Anwendungen werden nicht geändert, da sie bereits Exceptions unterdrücken.
Wenn Ihre Anwendung Gleitkomma-Exceptions erwartet, versuchen Sie Folgendes:
- Stellen Sie das alte Verhalten wieder her.
- Aktualisieren Sie den Quelltext, um Exceptions zu vermeiden (empfohlen zur Unterstützung neuer Plattformen außer Windows und zukünftigen Windows-Releases).
Einzelheiten finden Sie auf unserer Dokumentationsseite Exception-Masken für Gleitkommaoperationen.
Verbesserungen an Listen, Arrays und Sammlungen
Hier ist eine Liste der Verbesserungen:
- Für TList und abgeleitete Klassen wurde die Fehlermeldung "Listenindex außerhalb des gültigen Bereichs" erweitert und der verwendete Index und der gültige Bereich (oder dass die Struktur leer ist) hinzugefügt. Die Fehlermeldung enthält auch den Klassennamen.
- Die Funktion TSparseArray.Add wurde optimiert.
- Neue TArray-Methoden wurden hinzugefügt: IndexOf, LastIndexOf, Contains.
- Die Art und Weise wurde geändert, wie TDictionary Hash-Schlüssel für dieselbe Größe wie den Hash für Schlüsseltypen erstellt. Zudem wurden einige GetHashCode-Funktionen verbessert.
- System.Generics.Collections, System.Generics.Default und System.Classes.TList verwenden jetzt NativeInt anstatt Integer für alle Indizes.
Verbesserte Unterstützung für UTF-Dateien ohne BOM
In RAD Studio 12.0 wurde die Unterstützung für UTF-Textdateien ohne BOM-Codierung verbessert.
Mit der neuen Eigenschaft TEncoding.UseBOM, die in allen Unterklassen verfügbar ist, kann das Verhalten in früheren Versionen geändert werden. Dieser Wert kann als Parameter an einen neuen überladenen Konstruktor übergeben werden. Im Code wird er zum Lesen und Schreiben eines Streams verwendet.
Es gibt außerdem neue überladene TEncoding.IsBufferValid-Methoden (mit unterschiedlichen Eingabewerten). Das Ziel ist es zu prüfen, ob ein bestimmter Puffer gültige Daten für eine gegebene Codierung enthält. Dies ist insbesondere relevant, um zu ermitteln, ob eine Textdatei ohne BOM in UTF-8 oder ASCII codiert ist. Das wichtigste Feature ist die Implementierung dieser Methode für die Klasse TUTF8Encoding.
Der TEncoding.IsBufferValid-Code verwendet den Björn-Höhrmann-Algorithmus, der eine schnelle, plattformübergreifende Lösung ermöglicht.
Weitere RTL-Verbesserungen
Im Folgenden sind weitere Verbesserung in RAD Studio 12.0 aufgeführt:
- Zu System.UIConsts.Colors (verwendet von den Funktionen StringToColor und ColorToString) wurden weitere Farben hinzugefügt und diese werden im Objektinspektor angezeigt.
- Die FListeners in TMessageManager sind jetzt "protected".
- Zu System.Generics.Collections.TArray wurde eine vereinfachte Möglichkeit zum Konvertieren einer Liste mit Elementen in eine String-Repräsentation mit angegebener Formatierung und Trennzeichen hinzugefügt:
class function ToString<T>(const Values: array of T; const AFormatSettings: TFormatSettings; const ASeparator: string = ','; const ADelim1: string = ''; const ADelim2: string = ''): string; reintroduce; overload; static;
class function ToString<T>(const Values: array of T; const ASeparator: string = ','; const ADelim1: string = ''; const ADelim2: string = ''): string; reintroduce; overload; static;
- Verbesserungen der Zip-Unterstützung:
- Die Eigenschaft TZipHeader.ModifiedTime sowie die Unterstützung für Deflate64 wurden zu TZipFile hinzugefügt.
- Es wurde die Unterstützung für größer Dateien als 4 GB für Win64 hinzugefügt.
- Das Interface IZipCryptor wurde mit den Methoden Decrypt und Encrypt hinzugefügt, damit Kunden Verschlüsselungsunterstützung in Zip-Dateien aufnehmen können.
- Parallel Programming Library:
- TThreadPool bietet nun eine Möglichkeit, Threads mit den folgenden Eigenschaften zu initialisieren.
- Eigenschaften TThreadPool.InitializeCOM und InitializeCOMFlags
- Ereignisse TThreadPool.OnThreadStart und OnThreadTerminate
- RAD Studio 12.0 fügt dem Thread-Pool eine neue Konfiguration hinzu: die neue Eigenschaft UnlimitedWorkerThreadsWhenBlocked der Klasse TThreadPool mit dem Standardwert
True
. Legen Sie diesen Wert aufFalse
fest, um das Verhalten umzukehren und zu erzwingen, dass das System einen harten Grenzwert verwendet, wenn der MaxWorkerThreads-Schwellenwert erreicht ist.
- TThreadPool bietet nun eine Möglichkeit, Threads mit den folgenden Eigenschaften zu initialisieren.
- TPath.Combine in System.IOUtils hat jetzt mehrere überladene Versionen.
- Folgende neuen Zugriffsmethoden für den Standardpfad wurden hinzugefügt: TPath.GetDesktopPath und TPath.GetAppPath.
- Die neue Methode CreateImplementation wurde der Klasse TRttiInvokableType hinzugefügt.
- Zum Lesen von Dateiinhalt wurden neue Enumeratoren hinzugefügt:
Daten und Internet
In den folgenden Abschnitten sind Verbesserungen in den Bereichen Daten und Internet beschrieben.
JSON und der JSON-Datenbindungs-Experte
Es gibt einen neuen JSON-Datenbindungs-Experten. Er ist verfügbar unter Neu > Objektgalerie > Delphi > Web. Der JSON-Datenbindungs-Experte ermöglicht das Erstellen von Delphi-Datentypen auf Basis einer JSON-Datenstruktur.
IBLite/IBToGo für iOS-Simulator
RAD Studio unterstützt jetzt eingebettete InterBase-Versionen für die Delphi-iOS-Simulator-Plattform.
RAD Server
Die RAD Server Engine ist mit dem FastMM5-Speichermanager ausgestattet, der die Leistung verbessert, insbesondere in Szenarien mit intensivem Multithreading. Im Durchschnitt wird eine Leistungssteigerung von 5 % erzielt. Die folgenden Abschnitte enthalten weitere Verbesserungen im Bereich RAD Server.
Paging-Verbesserungen
In RAD Studio 12.0 wurde die Option für an TEMSDataSetResource gesendete LIST-Anforderungen hinzugefügt, damit eine dynamische Seitengröße in einem Parameter angegeben werden kann. Dies erfolgt mithilfe dieser beiden neuen Eigenschaften:
- TEMSDataSetResource.PageSizeParamName: Definiert den Namen des Parameters in einer LIST-Anforderung, der eine dynamische Seitengröße angibt. Der Standardwert ist psize. Wenn nicht angegeben, wird TEMSDataSetResource.PageSize verwendet.
- TEMSDataSetResourceOption.roEnablePageSizing: Wenn in TEMSDataSetResource.Options enthalten, berücksichtigt das System den Parameter für die dynamische Seitengröße mit dem durch die Eigenschaft PageSizeParamName definierten Namen.
Sqids für URLs
Standardmäßig stellt RAD Server beim Navigieren in einer Datenstruktur (z. B. einer Datenbanktabelle) URLs bereit, die spezifische Informationen über die Datensätze enthalten können. Dies ist aus mehreren Gründen nicht ideal, angefangen bei der Tatsache, dass Sie interne Details weitergeben, bis hin zu den potenziellen Sicherheitsimplikationen der Offenlegung einer Datensatz-ID.
Deshalb wurden in RAD Server Sqids eingeführt, eine verbesserte Version von Hashids, um vertrauliche Daten zu schützen. Detaillierte Informationen dazu finden Sie hier (EN).
Dazu enthält RAD Studio 12.0 eine neue Klasse namens System.NetEncoding.TSqidsEncoding. Klicken Sie hier, um Informationen zu deren Anwendung zu erhalten.
Verbesserung der Sitzungsauthentifizierung von RAD Server
Mit der Komponente TBackendAuth können Benutzer einen Benutzernamen und ein Passwort angeben. Nach Anmeldung bei RAD Server haben Benutzer ein schwer verwaltbares Sitzungs-Token. In RAD Studio 12.0 wurde anhand der folgenden neuen Methoden die Art und Weise verbessert, wie dieses Token verwaltet werden kann:
- TCustomBackendAuth.ExportLogin: Exportiert die Anmeldeinformationen (z. B. Token und zugehörige Details) als String, optional verschlüsselt.
- TCustomBackendAuth.ImportLogin: Importiert die zuvor exportierten Anmeldeinformationen aus einem String. Wenn ein String-Argument angegeben wurde, dann wird er entschlüsselt.
Qualität von RAD Server
- RAD Server Console wurde dem Menü "Tools" in der RAD Studio-IDE in zugefügt.
- TBackendAuth.LoggedInValue.ExpiresAt gibt jetzt eine lokale Uhrzeit zurück, zu der das Authentifizierungs-Token abläuft.
- Jetzt wird ein clientseitiges OnNeedClientCertificate-Ereignis angeboten, das gleiche wie das Ereignis OnValidateCertificate.
Allgemeine Internet-Verbesserungen
- FormatXMLData enthält nun einen Parameter zum Angeben der Anzahl der Leerzeichen, die für den Einzug verwendet werden soll. Der Standardwert ist 2 Leerzeichen.
- Die Methode TWinHTTPClient.DoExecuteRequest unterstützt die Datenübertragung von mehr als 4 GB.
- Es wurde Unterstützung für die Methode HTTP DELETE mit folgendem Inhalt hinzugefügt:
- Überladene THttpClient.Delete/BeginDelete-Methoden mit dem Argument AStream.
- Überladene TNetHTTPClient.Delete-Methode mit dem Argument AStream.
- Verbesserungen der REST-Clientbibliothek umfassen:
- RESTClient erkennt eine Antwort als JSON, wenn der "Content-Type" "application/vnd.retailer.v8+json" ist (war bereits in den Hotfixes 1 für 11.3 verfügbar).
- Zu TCustomRESTRequest wurde das neue Ereignis OnBeforeExecute hinzugefügt.
- Zur besseren Verwaltung der Weiterleitung und von Cookies wurden in RAD Studio 12.0 die folgenden Ereignisse hinzugefügt:
- Zur Verbesserung der Unterstützung großer Dateien in der Klasse TMultipartFormData (in der Unit System.Net.Mime) wurde in RAD Studio 12.0 Folgendes hinzugefügt:
- Eine überladene TMultipartFormData.AddStream-Methode
- Ein neues Argument "AHeaders: TStrings = nil" in TMultipartFormData-Methoden
- Eine neue TProxyAggregateStream-Klasse in System.Classes
- Die HTTP-Clientbibliothek verwendet standardmäßig die APIs des zugrunde liegenden Betriebssystems, um HTTP(S)-Anforderungen auszuführen. Die Bibliothek verwendet libcurl, eine plattformübergreifende und keine Linux-spezifische HTTP-Bibliothek für Linux. Aus diesem Grund wurde in RAD Studio 12.0 Unterstützung für Curl auf anderen Plattformen hinzugefügt. Dadurch ist es möglich, einige der Plattformbeschränkungen zu umgehen. Damit THTTPClient libcurl auf Windows verwendet, müssen Benutzer der uses-Klausel System.Net.HttpClient.Linux hinzufügen.
- Es wurde die Möglichkeit hinzugefügt, auf Daten zuzugreifen, während sie in einer HTTP- (oder REST-) Anforderung empfangen werden, da es Server gibt, die die Daten in logischen Blöcken in einer einzigen HTTP-Anforderung zurückgeben (z. B. KI-fokussierte REST-APIs). RAD Studio 12.0 fügt Folgendes hinzu, um ähnliche Szenarien zu berücksichtigen.
- In System.Net.HttpClient:
- In System.Net.HttpClientComponents:
- In REST.Client:
FireDAC
QBE
In RAD Studio 12.0 wurde FireDAC-Unterstützung für QBE (Query By Example, Abfrage anhand von Beispielen) mithilfe der neuen Komponente TFDQBE eingeführt, die eine Query-By-Example-Komponente darstellt:
- Nach Verwendung von FDQBE.Edit erstellt die Komponente eine In-Memory-Datenmenge, deren Felder dieselben sind wie die der Hauptdatenmenge, aber alle Felder sind ftString. Diese In-Memory-Datenmenge ersetzt TDataSource.DataSet.
- Der Benutzer kann Filterkriterien in das Formular der datenbanksensitiven Steuerelemente oder Tabellen eingeben. Für die Kriteriensprache ist kein Feldname erforderlich und sie bietet weitere Vereinfachungen. Um beispielsweise nach
"OrderID < 10255"
zu filtern, schreiben Sie"< 10255"
, um auf Gleichheit abzufragen, schreiben Sie einfach "10255", für "like" schreiben Sie "1025%" usw. - Wenn die Methode FDQBE.Post aufgerufen wird, ändert die Komponente die ursprüngliche FDQuery-Abfrage oder die Filter-Eigenschaft (abhängig von der Eigenschaft FDQBF.Language) und erstellt anhand der eingegebenen Werte eine neue Abfrage.
Das funktioniert mit einer aktiven oder inaktiven Datenmenge mit persistenten Feldern. Dieser Ansatz ermöglicht auch, nach Nachschlagefeldern zu filtern und vieles mehr.
Versions-Update für FireDAC SQLite
RAD Studio 12.0 enthält Unterstützung für SQLite 3.42 mit der Option zur Verwendung von SQLite 3.31.1 mit FireDAC-Verschlüsselung (FDE). Ab Version 3.42 enthält SQLite den Mechanismus nicht mehr, den FireDAC für die Verschlüsselungsunterstützung verwendet. Daher gibt es drei verschiedene Möglichkeiten, SQLite mit FireDAC zu verwenden:
- Verwenden Sie die letzte Version ohne FireDAC-Verschlüsselung.
- Verwenden Sie das kostenpflichtige SQLite EE (mit der nativen SQLite-Verschlüsselungsunterstützung), die FireDAC seit RAD Studio 11.0 unterstützt.
- Verwenden Sie weiterhin SQLite 3.31.1 oder frühere Versionen mit FireDAC-Verschlüsselung (FDE).
FireDAC und Sicherheit
In RAD Studio 12.0 wurden sicherheitsrelevante Features für FireDAC hinzugefügt. Diese Features und guten Praktiken für die Sicherheit insgesamt können zur Entwicklung sicherer Datenbankanwendungen beitragen. Die folgenden Eigenschaften stehen unter TFDSecurityOptions zur Verfügung:
- AllowedCommandKinds: Beschränkt die Ausführung von SQL-Befehlen und verhindert so, dass ein Hacker eine Abfrage modifizieren und unerwünschte Änderungen an der Datenbank vornehmen kann.
- AllowMultiCommands: Aktiviert oder deaktiviert die Ausführung von mehreren SQL-Befehlen. Diese Eigenschaft ist standardmäßig aktiviert und funktioniert nur mit Datenbanken, die die Abgleichsfunktion bieten: SQLite, PostgreSQL und MySQL.
- AllowSQLChange: Wenn aktiviert, verhindert diese Einstellung Änderungen des Textes einer FireDAC-SQL-Abfrage zur Laufzeit. Eine Methode wie DoSQLChanging würde CheckCanChangeSQL aufrufen und nun die spezifische Einstellung (neben anderen Bedingungen) überprüfen.
- ExactUpdatedRecsNum: Diese Eigenschaft ist ein Integer mit dem Standardwert -1. Wenn sie in Verbindung mit
FDQuery.FetchOptions.Mode := fmExactRecsMax;
FDQuery.FetchOptions.RecsMax := 1;
auf > 0 festgelegt wird, nimmt FireDAC für SQL UPDATE-Befehle zusätzlichen Prüfungen vor.
FireDAC-Erweiterungen
- Es gibt im FireDAC-Verbindungsobjekt eine neue Eigenschaft: TFDCustomConnectionCommandsExecuted. Dabei handelt es sich um einen UInt64-Wert, den Benutzer verwenden können, um zu ermitteln, ob eine Verbindung neu ist (z. B. beim Verbindungs-Pooling) oder ob sie wiederverwendet wird und bereits für die Interaktion mit der Datenbank verwendet wurde. Im Idealfall, wenn die Eigenschaft 0 ist, wurden für diese Verbindung keine Befehle ausgeführt.
- Die Unit FireDAC.Phys.SQLiteWrapper.Stat.pas verwendet jetzt SQLite 3.42, die neueste Version.
- Die neue Unit FireDAC.Phys.SQLiteWrapper.FDEStat.pas verwendet SQLite Version 3.31.1, bei der die FireDAC-Verschlüsselung (FDE) noch verfügbar ist.
- FireDAC unterstützt nun Decimal128 in MongoDB.
- FireDAC unterstützt nun das HTTP-Protokoll für DataSnap.
- FireDAC unterstützt nun die Escape-Sequenz
{INTO }
für SQL Server (siehe Einheitliche Unterstützung für RETURNING (FireDAC)). - Der Typ TSQLiteEngineLinkage wurde aktualisiert:
- slFDEStatic wurde hinzugefügt - FireDAC.Phys.SQLiteWrapper.FDEStat.pas.
- slStatic - FireDAC.Phys.SQLiteWrapper.Stat.pas.
- Der Standard-Link-Modus ist statisch mit SQLite Version 3.31.1 mit FDE.
Für Android-, Linux- und iOS-Plattformen kann gleichzeitig nur eine Unit für das statische Linken in ein Projekt einbezogen werden. Das heißt, Sie können entweder FireDAC.Phys.SQLiteWrapper.Stat oder FireDAC.Phys.SQLiteWrapper.FDEStat, aber nicht beide in demselben Projekt verwenden. Falls Sie beide verwenden, generiert der Linker Fehler aufgrund von doppelten Symbolen.
Durch die Umstellung auf eine neuere Version von SQLite kann FireDAC nun DDL-Befehle verwenden, die in neueren Datenbankversionen hinzugefügt wurden, wie ALTER TABLE, einschließlich DROP für Spalten.
Änderungen bei der VCL und FireMonkey
VCL
RAD Studio Version 12.0 enthält viele wichtige Erweiterungen der VCL-Bibliothek.
MDI wurde zur Unterstützung von HighDPI und Stilen überarbeitet
In RAD Studio 12.0 wurde die Unterstützung für das VCL-MDI (Multi Document Interface) erheblich überarbeitet und der vom MDI-Experten generierte Quelltext aktualisiert. Es wurde eine neue MDI-Architektur für Formulare mit Registerkarten eingeführt, die über das neue TFormTabsBar-Steuerelement verfügbar ist.
In diesem Abschnitt sind einige spezielle Erweiterungen und einige verbliebene Vorbehalte aufgeführt.
Benutzerdefinierte Rahmen für untergeordnete MDI-Fenster
Untergeordnete MDI-Formulare können nun unter Windows 10- und 11-Systemen einen modernen flachen Rahmen haben. Im Einzelnen:
- Der Rahmen hat eine Systemgröße und einen Systembereich mit Bildlaufleisten (wie in unserem VCL-Designer).
- Der Rahmen verwendet feste Standardsystemfarben, die mit der clBtnFace-Farbe und ähnlichen hell-/dunkelgrauen Farben kompatibel sind, die normalerweise für den MDI-Client-Bereich verwendet werden.
- Der Rahmen sieht für Windows 10 und 11 gleich aus und funktioniert auch für beide gleich.
- Im Minimierungszustand werden zum Zeichnen eines benutzerdefinierten Rahmens die DPI des Formulars verwendet, da der Systemrahmen nur die DPI-Größen des primären Monitors verwendet.
- Deaktivierte Rahmensymbole werden nicht gezeichnet (die gleich Lösung wie bei VCL-Stilen). Beispielsweise ist die Schaltfläche "Minimieren" nicht sichtbar, wenn der biMinimize-Wert nicht in BorderIcons enthalten ist.
- Es wurde eine neue globale Einstellung zum Deaktivieren der Behandlung von Rahmen untergeordneter Fenster hinzugefügt: TStyleManager.ChangeChildFormSystemBorder. Dadurch werden die oben genannten Änderungen in Bezug auf den untergeordneten Rahmen deaktiviert.
- Diese Lösung verfügt über PerMonitorV2-High-DPI-Unterstützung.
Benutzerdefinierter Rahmen für Formulare mit der zugewiesenen Eigenschaft "Parent"
Formulare mit Rahmen müssen die Botschaft WM_NCActivate erhalten und verarbeiten, aber das Betriebssystem sendet diese nicht mit einem übergeordneten Formular an Windows. Damit dieses Szenario funktioniert, mussten wir die Aktivierung des Formulars im übergeordneten Steuerelement emulieren, alle Probleme in Bezug auf High-DPI- und PerMonitorV2-Unterstützung beheben und Änderungen für VCL-Stile hinzufügen.
Details:
- Es wurde eine neue TWinControlHandler-Klasse für die Klasse TWinControl und eine TChildMessageHandler-Klasse zur Verwendung in der Klasse TCustomForm eingeführt. Damit wird ein benutzerdefinierter Rahmen für untergeordnete MDI-Formulare und Formulare mit einer zugewiesenen Parent-Eigenschaft unterstützt.
- Für den minimierten Zustand gelten dieselben Einschränkungen wie für untergeordnete MDI-Fenster und Benutzer können mit dem neuen TFormTabsBar-Steuerelement minimierte Formulare ausblenden und verwalten.
- Formulare funktionieren wie ein Steuerelement in einem übergeordneten Steuerelement. Die Verarbeitung der Steuerelemente erfolgt nicht im einzelnen Formular, sondern im obersten übergeordneten Formular.
- Erstellung und Initialisierung dieser Formulare sind spezifisch (die Eigenschaft Visible sollte standardmäßig
False
sein; die Festlegung von Parent und der anfänglichen Skalierung erfolgt manuell für verschiedene Szenarien). - Das Formular hat als untergeordnetes MDI-Fenster einen modernen Rahmen.
- Das Formular kann im übergeordneten Steuerelement maximiert werden und mit diesem seine Größe ändern.
- Es wurde die vollständige Emulation der Aktivierung/Deaktivierung von Formularen im übergeordneten Formular hinzugefügt.
Das Interface IFormVisualManager und die Eigenschaft VisualManager der Klasse TCustomForm
Um ein neues Steuerelement zur Verwaltung von Formularen hinzuzufügen, wurde in Athens 12.0 das neue Interface IFormVisualManager eingeführt. Es enthält grundlegende Methoden, die in die Klasse TCustomForm integriert sind, um Botschaften und Aktionen von Formularen abzurufen und sie zu verwalten.
Version 12.0 enthält auch die neue Eigenschaft TCustomForm.VisualManager von Typ IFormVisualManager und die Methoden, die für die Implementierung des Interface benötigt werden.
Das allgemeine Ziel ist es, dass Entwickler ihre visuellen Manager-Steuerelemente erstellen können, indem sie das Interface IFormVisualManager in einem abgeleiteten Steuerelement oder einer Komponentenklasse implementieren, ebenso wie es im Steuerelement TFormTabsBar implementiert ist.
Steuerelement TFormTabsBar
In RAD Studio Athens 12.0 wurde ein neues FormTabsBar-Steuerelement als universelle und sofort einsatzbereite Lösung zum Hosten mehrerer untergeordneter Formulare in einer modernen registerkartenänlichen Benutzeroberfläche als eine Modernisierungsmöglichkeit für vorhandene MDI-Anwendungen eingeführt, aber auch als Weg, um ganz neue Anwendungen mit VCL zu erstellen.
Das neue Steuerelement FormTabsBar ist von IFormVisualManager geerbt, arbeitet mit den Klassen TForm und TScreen und kann alle Formulare aus Screen.Forms widerspiegeln (anstelle des Hauptformulars und des übergeordneten Formulars des Steuerelements). Die neuen Steuerelemente können mit MDI-Formularen, aber auch mit SDI-Formularen und der zugewiesenen Eigenschaft "Parent" mit und ohne Rahmen arbeiten. Die Steuerelemente können für ein Haupt-/übergeordnetes Formular festgelegt werden, damit sie automatisch von untergeordneten Formularen verwendet werden. TFormTabsBar verfügt auch über die Eigenschaft AcceptMode und das Ereignis OnAcceptForm, um die Annahme von Formularen an das Steuerelement anzupassen.
Weitere Einzelheiten:
- Jedes TForm kann als Registerkarte zu TFormTabsBar hinzugefügt werden, wenn sein Handle erstellt wurde. Wenn das Handle freigegeben wird, wird die Registerkarte gelöscht.
- Das Steuerelement zeigt sichtbare und unsichtbare Formulare an. Wenn Sie auf die Registerkarte klicken, wird das Formular angezeigt und aktiviert.
- TFormTabsBar kann minimierte Formulare (MDI und SDI) ausblenden und sie durch einen Klick auf die Registerkarte wiederherstellen und aktivieren. Dieses Feature vermeidet inkorrektes Systemverhalten und falsche Größen der minimierten Formulare.
- Unsichtbare oder minimierte Formulare können in dem Steuerelement gekennzeichnet werden, um anzugeben, dass das Formular gerade nicht sichtbar ist.
- Rufen Sie das Systemmenü des Fensters auf, indem Sie mit der rechten Maustaste auf die Registerkarte oder den Symbolbereich klicken.
- Registerkarten können gezogen werden und Benutzer können die Position jeder Registerkarte in dem Steuerelement ändern.
- Die Breite der Registerkarte kann mit einem festen Wert oder durch eine automatische Berechnung der Breite abhängig vom Formulartitel angepasst werden (in diesem Fall definieren Sie eine Min- und Max-Breite der Registerkarte). Außerdem gibt es eine Eigenschaft zum Aktivieren von Hinweisen für lange, abgeschnittene Titel.
- Registerkarten können eine Schließen-Schaltfläche haben, die die Methode TForm.Close aufruft.
- Das Steuerelement kann eine Sonderschaltfläche zum Aufrufen des Menüs mit allen Registerkarten zur schnellen Auswahl eines der Formulare anzeigen.
- Das Steuerelement kann auch den Fokus haben und über Tastaturunterstützung verfügen, aber nur, wenn es mit der Taste TAB den Fokus erhält (das heißt, wenn TabStop
True
ist). In diesem Fall kann der Benutzer Registerkarten mit der Taste EINGABE oder LEER auswählen, in diesen scrollen und sie aktivieren. - Das Steuerelement verfügt über High-DPI-PerMonitorV2-Unterstützung und arbeitet mit allen DPIs korrekt.
- VCL-Stile werden gut unterstützt. Einige Elemente verwenden Stilfarben, um bestimmte Elemente zu zeichnen (wie die Schließen-Schaltfläche oder das Trennzeichen).
Update des MDI-Experten
In RAD Studio 12.0 wurden auch die MDI-Experten-Projekte für Delphi und C++Builder aktualisiert. Der vom Experten generierte Quelltext verwendet:
- Die Komponente TActionMainMenuBar anstatt der Komponente TMainMenu.
- Die Kombination aus TImageCollection und TVirtualImageList anstatt der Komponente TImageList.
- Ein TFormTabsBar-Steuerelement.
Schriftarten und Bildschirme
Die VCL-Bibliothek verfügt über eine neue, überarbeitete Unterstützung für die Skalierung von Schriftarten unabhängig von der DPI-Skalierung. Die Änderungen befinden sich hauptsächlich in der Klasse TFont der VCL-Bibliothek.
In RAD Studio Athens wurden der Klasse TFont die folgenden neuen Methoden und Eigenschaften hinzugefügt:
- TFont.IsDPIRelated: ermöglicht die Verwendung der Eigenschaft TFont.PixelsPerInch und deren Änderung in Abhängigkeit vom CurrentPPI des Host-Steuerelements.
- TFont.IsScreenFont: für unsere globalen Schriftarten in der Klasse TScreen.
- TFont.ChangeScale: wird in der Methode TControl.ChangeScale aufgerufen, um jede DPI-bezogene Schriftart zu initialisieren und zu skalieren.
- TFont.ScaleForDPI: wird im Quelltext verwendet, um eine Schriftart an jede DPI anzupassen. Sie prüft die Eigenschaft IsDPIRelated und skaliert die Schrifthöhe.
Die Hauptänderung besteht darin, wie Size verwendet wird und beim Aufruf von TFont.Assign die DPI und der IsScreenFont-Wert berücksichtigt werden. Diese Änderung betrifft bestehenden Quelltext und die VCL-Bibliothek wurde angepasst, um die neue Schriftartskalierung zu unterstützen. Zum Beispiel sollte Quelltext wie:
Font.Height := MulDiv(Font.Height, M, D)
geändert werden in
Font.ChangeScale(M, D, isDpiChanged)
Darüber hinaus sollte der neue Ansatz eine doppelte Skalierung der Schriftart verhindern, da die Eigenschaft TFont.PixelsPerInch überprüft wird.
Plattformintegration
Für RAD Studio 12.0 wurden die Windows-API- und die WinRT-API-Zuordnungen bereinigt, indem die WinRT-APIs und die WebView 2-Steuerelemente auf die neuesten Versionen aktualisiert wurden.
WinAPI-Delphi-Header aus WinMD-Metadaten
Für RAD Studio 12.0 wurde ein internes Importtool erstellt, das Delphi-Definitionen für die klassischen Windows-APIs anhand der von Microsoft im WinMD-Format verfügbaren Metadaten generierten kann, und wir haben die erste Version dieser generierten Units in GetIt bereitgestellt.
Öffnen Sie den GetIt-Package-Manager und suchen Sie nach dem Package Windows API from WinMD.
Das Package installiert 311 Header-Dateien mit 41 MB Delphi-Quelltext in einen Ordner wie:
C:\Benutzer<Name>\Documents\Embarcadero\Studio\23.0\CatalogRepository\WindowsAPIfromWinMD-1.0
.
Diese neuen Header sind im Vergleich zu dem in der Kern-RTL enthaltenen Header-Satz viel umfangreicher und decken alle aktuellen APIs ab.
Edge-Browser
In RAD Studio 12.0 wurde die API des Steuerelements WebView 2 auf eine neuere Version aktualisiert: WebView2 SDK 1.0.1774.30. Dadurch wird die Unterstützung vieler neuer Funktionen des zugrunde liegenden WebView 2-Steuerelements ermöglicht, einschließlich:
- UserAgent ist in ICoreWebView2Settings verfügbar.
- ICoreWebView2Profile2 enthält die Methoden ClearBrowsingData, ClearBrowsingDataAll und ClearBrowsingDataInTimeRange.
Darüber hinaus hat TEdgeBrowser eine neue Methode, die während der Navigation Postdaten oder zusätzliche Anforderungs-Header liefert. Die Header in ARequest überschreiben Header, die von der WebView2-Laufzeit hinzugefügt wurden, mit Ausnahme von Cookie-Headern. Die Anforderungsmethode für die Webressource muss GET oder POST sein.
function NavigateWithWebResourceRequest(const ARequest:
ICoreWebView2WebResourceRequest): Boolean;
Unterstützung der Kachelansicht für TListView
Die VCL-Bibliothek unterstützt jetzt diese Option, die im zugrunde liegenden Plattformsteuerelement verfügbar ist. Dies erfolgt durch Folgendes:
- Der vsTile-Wert wurde der Aufzählung TViewStyle hinzugefügt.
- Das Ereignis OnCancelEdit wurde dem Steuerelement TListView hinzugefügt.
- Die neue Eigenschaft TileOptions wurde dem Steuerelement zum Anpassen der Kachelelemente hinzugefügt. Diese Eigenschaft beinhaltet:
- SizeType: definiert den Größentyp des Elements (automatische oder feste Größenvariationen).
- Width und Height der Kachel, wenn ein fester Größentyp festgelegt wurde.
- LabelMargins: die Ränder für die Labels (alle Textzeilen) innerhalb eines Elements.
- SubLineCount: die Anzahl der Zeilen, die sich unterhalb des Elementtitels befinden können.
- Die neue Eigenschaft TileColumns wurde hinzugefügt, um zusätzliche Zeilen im Element anzupassen und Unterelementtext aus Spalten anzuzeigen. Die Eigenschaft TileColumns des Steuerelements passt Kachelinformationen automatisch für alle in der Liste vorhandenen Elemente an.
TControl-Enumerator
In RAD Studio Athens wurde der VCL-Bibliothek ein TControl-Enumerator und der TComponent-Enumerator hinzugefügt. Bei TComponent besteht die Logik darin, die Komponenten zu scannen, die zu einer bestimmten Komponente gehören. Für den TControl-Enumerator besteht die Logik darin, die untergeordneten Steuerelemente zu scannen. Ein Beispiel dazu finden Sie auf der Seite GetControls.
Die verschiedenen Filter des Steuerelement-Enumerators finden Sie auf der Seite "TControlEnumeratorFilterType".
Neue Formulareigenschaft ShowInTaskbar
Die Klasse TForm verfügt über die neue Eigenschaft ShowInTaskbar, die steuert, ob ein Formular einen entsprechenden Eintrag in der Windows-Taskleiste haben soll, auch wenn es nicht das Hauptformular ist.
Erweiterungen für Desktop Windows Manager
In RAD Studio Athens wurde Unterstützung für einige erweiterte Desktop-Verwaltungsmanagement-Features in Windows 11 hinzugefügt. Diese Features funktionieren nicht unter älteren Versionen des Betriebssystems.
In der Version 12.0 wurden der Unit Winapi.DwmApi.pas mehrere neue DWMWA_xxx-Konstanten zur Aktivierung der neuen Plattform-Features hinzugefügt. Aktivieren Sie diese Features, indem Sie die DwmSetWindowAttribute-API in derselben Unit aufrufen.
Außerdem unterstützen VCL-Formulare jetzt den immersiven dunklen Modus von Windows 11. Rufen Sie die neue Methode EnableImmersiveDarkMode der Klasse TForm auf, um ihn zu aktivieren.
Neuer Doppelpufferungsmodus
In RAD Studio 12.0 wurde der neue Aufzählungstyp TDoubleBufferedMode für alle Steuerelemente, die neue Eigenschaft DoubleBufferedMode dieses Typs und die neue Methode CanUseDoubleBuffering eingeführt.
Durch das Aktivieren von DoubleBuffering in Steuerelementen mit Design, wie TButton, TCheckBox und TRadioButton, wird die native Systemanimation unterbrochen, wenn das Steuerelement seinen Zustand ändert. Aus diesem Grund haben wir die Methode CanUseDoubleBuffering eingeführt und sie für die TButtonControl-Steuerelementklassen überschrieben, um die Doppelpufferung zu deaktivieren.
FireMonkey
Für die FireMonkey-Bibliothek wurde in RAD Studio das neue Feature Skia-Bibliotheksintegration hinzugefügt. RAD Studio Version 12.0 enthält jedoch weitere neue Features und Verbesserungen.
Android-Ziel-API Level 33
In RAD Studio Version 12.0 wurde die Delphi-Android-Unterstützung auf das Ziel-API-Level 33 aktualisiert, wie von Google für Store-Einreichungen vorgeschrieben. Dazu zählen Verbesserungen und Erweiterungen der Android-Bibliotheken wie die folgenden:
- Verbesserungen der Android-Plattformimplementierungen der Plattformdienste IFMXCameraService und IFMXTakenImageService. Die Implementierungen sind jetzt asynchron und kompatibel mit dem Android-Bereichsspeichermodell. Außerdem wird der Haupt-Thread nicht mehr blockiert. Das Gleiche gilt für die Implementierung des Plattformdienstes IFMXPhotoLibrary.
- Aktualisierungen der Klassen JManifest_permissionClass und JManifest_permission_groupClass, damit die statischen Felder aus neueren Android-API-Levels aufgelistet werden.
- Aktualisierungen des Interface-/Plattformdienstes IFMXExtendedClipboardService, damit Anwendungen verhindern können, dass sensible Inhalte im Overlay des Zwischenablage-Editors angezeigt werden, der in Android 13 eingeführt wurde.
- Aktualisierungen der Optionsseite Anwendung > Verwendet Berechtigungen, um Berechtigungen zu entfernen, die nur Systemanwendungen gewährt wurden.
- Unterstützung für den neuen Android-Startbildschirmstandard, der seit Android 12 hier (EN) verfügbar ist.
- Aktualisierungen der Unterstützung für In-App-Käufe in FireMonkey-Android, damit die neueste Version der Google Play Billing Library (6.0.1) verwendet wird. Dies ist ab 1. November 2023 vorgeschrieben.
Unterstützung der Bildschirmaufteilung
Ab Athens 12.0 unterstützt RAD Studio das Erstellen von FireMonkey-Apps für mobile Plattformen, die nur einen Teil des verfügbaren Bildschirms nutzen, ein Feature, das besonders bei Tablet-Geräten mit einem großen Bildschirm nützlich ist.
Diese Version enthält internen Quelltext für die FireMonkey-Bibliothek sowohl für iOS als auch für Android, um dieses Szenario vollständig zu handhaben. Beachten Sie, dass Änderungen am Android-Manifest vorgenommen wurden. Benutzer müssen daher gegebenenfalls das Manifest einer Anwendung oder das in der Benutzerkonfiguration aktualisieren. Zu den neuen und geänderten Android-Manifesteinträgen zählen:
android:resizeableActivity="true"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout"
(hier ist die Ergänzung der Wert "screenLayout").
Verbesserungen für TEdit und TMemo
Ab Athens 12.0 wurden in RAD Studio die Steuerelemente TEdit und TMemo erheblich verbessert. Wir haben mit Desktop-Plattformen (Windows und macOS) begonnen und planen, auch mobile Plattformen einzubeziehen.
Die Verbesserung basiert auf einer umfangreichen Neugestaltung der internen Elemente für mit Stilen versehene Steuerelemente. Die Darstellung des mit Stilen versehenen Eingabesteuerelements (TEdit) wurde durch Verwendung der kürzlich hinzugefügten TMemo-Implementierung (bereits in RAD Studio 11.3 vorhanden) umgestaltet.
Wichtige FireMonkey-Aktualisierungen
Allgemeine FireMonkey-Änderungen
- Neue TEdit-Eigenschaften AutoSelect und CharCase.
- TEdit unterstützt jetzt die "Rückgängig"-Funktionalität. Der kürzlich hinzugefügte TUndoManager wird von TEdit und TMemo verwendet.
- TMemo implementiert IME-Texteingaben wie im nativen TEdit.
- TEdit berücksichtigt die Vordergrund-Pinselressource.
- Verbesserte Auswahl mit Umschalt-Klick.
Für die iOS-Plattform
- Umgestaltung der virtuellen Tastatur für iOS: Durch die FMX-Implementierung der virtuellen iOS-Tastatur, die zur Ausrichtung der Symbolleiste der virtuellen Tastatur mit benutzerdefinierten Schaltflächen verwendet wird, wurde die Logik für die Ausrichtung/Animation der Symbolleiste manuell auf iOS verlagert, unnötiger komplexer Code entfernt und die Unterstützung durch die Verlagerung des größten Teils der Logik auf die iOS-Plattform erleichtert.
Für die Android-Plattform
- Die interaktive Auswahl von Text wurde verbessert.
- Die Position und der Ort des Auswahlpunkts wurden an die linke untere Textauswahl angepasst.
- Der Auswahlpunkt für den Positionscursor wurde in TMemo und TEdit aufgenommen.
- Die Art und Weise, wie PointInObjectLocal den Bereich behandelt, wenn ein Stil mit einem Offset von Objekten verwendet wird, wurde verbessert.
- Plattform- und Premium-Stile zur Unterstützung einer verbesserten Textauswahl wurden aktualisiert.
- Die Erstellung von FireMonkeystyle für TEdit/TMemo/usw. wurde aktualisiert. CaretPoint für Texteingabesteuerelemente für Android wurde hinzugefügt.
- Unterstützung für Fingergesten zum Bewegen des Cursors in TMemo auf Android.
Einzelnes Symbol und Android Adaptive Icon für alle Plattformen
Der App-Experte "Einzelnes Symbol" ist ein umfassendes, in die RAD Studio-IDE integriertes Tool, das den Prozess der Generierung von Symbolen und Startbildschirmen für Benutzeranwendungen auf verschiedenen Plattformen optimieren soll. Eines der wichtigsten Features ist die Unterstützung des Formats "Android Vector Drawable", das das Erstellen skalierbarer und reaktionsfähiger Symbole und Startbildschirme speziell für Android-Geräte ermöglicht.
Verwenden Sie dieses Feature, um Adaptive Icons mithilfe des speziellen Tools SVG2VectorDrawable zu generieren. Dies ermöglicht die Erstellung vielseitiger und reaktionsfähiger Symbole, die sich an verschiedene Gerätedisplays und Benutzeroberflächenstile anpassen und so das gesamte Benutzererlebnis verbessern.
Zusätzlich implementiert RAD Studio Unterstützung für einen vektorisierten Startbildschirm. Die Implementierung ist mit der Funktionalität des Experten "Einzelnes Symbol" verbunden. Mit diesem Feature können Entwickler hochwertige Startbildschirme für mehrere Plattformen erstellen, indem sie eine einzige SVG-Datei (Scalable Vector Graphics) verwenden.
Für Android stellt der Experte "Einzelnes Symbol" auch Unterstützung für das Format "Vector Drawable" für Startbildschirme bereit, die (intern) mit dem speziellen Tool SVG2VectorDrawable generiert wurden, wodurch die Kompatibilität und Anpassungsfähigkeit innerhalb des Android-Ökosystems weiter verbessert wird. Eine Anleitung zur Verwendung des Grafikgenerators weitere Informationen finden Sie auf unserer Dokumentationsseite Programmsymbol.
Weitere FMX-Verbesserungen
Im Folgenden sind weitere Verbesserung in RAD Studio 12.0 aufgeführt.
- Neuer TFontManager für Windows und macOS, der es ermöglicht, eine Schriftart dynamisch in eine Anwendung zu laden.
- Erweiterte FMX-Multitouch-Unterstützung durch Hinzufügen dieser neuen Felder zum Datentyp TTouch:
- Neuer TWinFormPositionerService, der FMX bei der Verwaltung des Bildschirmlayouts und der -positionen unterstützt, die Mitte des Bildschirms ermittelt und einige der Probleme mit den Koordinaten behandelt.
- Unterstützung für die Übergabe von ssDouble in Mausereignissen bei Doppelklick oder doppeltem Antippen auf mobilen Plattformen. Die Reihenfolge der Mausoperationen (bei Doppelklick) ist nun für alle Plattformen:
- OnMouseDown
- OnClick
- OnMouseUp
- OnMouseDown (State = ssDouble)
- OnDoubleClick
- [OnMouseMove] (State = ssDouble)
- OnMouseUp (State = ssDouble)
- ErrorRadius von TLocationSensor wurde für mobile Plattformen implementiert.
- FireMonkey enthält einen neuen Windows 11-Stil.
- Für das FireMonkey-Kalendersteuerelement wurde die neue Eigenschaft FirstWeekMode hinzugefügt. Sie können die Modi "ISO8601" oder "FirstDayOfYear" auswählen.
- Für FireMonkey wurde aktiviert, die globale Sperre von TCanvas zu entfernen, wenn eine Backend-Implementierung (wie Skia) mit Multithreading-Unterstützung verwendet wird. Dies kann mit dem neuen TCanvasStyle-Flag DisableGlobalLock erreicht werden.
- Für die Klasse TColumn wurde die neue Eigenschaft HeaderSettings hinzugefügt, damit Benutzer den Stil der Spaltenüberschrift angeben können. Dazu gehört auch die neue Eigenschaft HeaderStyleLookup.
ToolsAPI
Der Quelltext-Editor verfügt über mehrere Möglichkeiten, Inhalt zu lesen und zu schreiben. In diesem Release haben wir die vorhandenen Interfaces erweitert oder neue hinzugefügt, um einige hochleistungsfähige APIs hinzufügen.
Spezifische Beispielprojekte sind als Teil der Produktdemos verfügbar:
- Editor Raw Read Demo.
- Editor Write Demo.
Weitere Informationen zu diesen Features finden Sie auf den Seiten Lesen aus dem Editorpuffer und Schreiben aus dem Editorpuffer.
In RAD Studio 12.0 wurden zudem Verbesserungen am Standardzeichnen für jede Textzelle (Zeichenbereich) im Editor und an anderen Schlüsselinformationen für den Zeilenstatus vorgenommen. Weitere Informationen zu diesen Aktualisierungen finden Sie auf der Seite ToolsAPI-Unterstützung für den Quelltext-Editor.