Ultimate VCL

Eine Reihe von Tools zum Erstellen einer Berichtsinfrastruktur für Delphi-Geschäftsanwendungen und plattformübergreifende Entwicklung

v. 2025.2.1
What reports can Ultimate VCL do

Welche Berichte kann Ultimate VCL erstellen?

Praktisch alle: Rechnungen, Finanzberichte, Produktkataloge mit Farbprofilunterstützung, Restaurantmenüs, Verkaufsdetails, Fragebögen mit elektronischen Formularen, Flugtickets, Stromrechnungen und vieles mehr. Wenn Sie Daten haben, die visuell verständlich gemacht werden müssen, ist FastReport die perfekte Lösung für Sie.

Features und Vorzüge Ultimate VCL

Transport
Speichern Sie vorbereitete Berichte mit wenigen Mausklicks in den Cloud-Speichern: Google Drive, Next Cloud, Box, Dropbox, um sie bequem an Ihre Kunden zu senden
Schneller Zugriff auf den Bericht und die Datenstruktur
In der Berichtsstruktur und der Eigenschaftenstruktur können Sie die Berichtsstruktur, Parameter und Filter sowie Datenquellen mit globalen Stilen bearbeiten.
Client-Server-Komponenten
Erstellen Sie Berichte direkt im WEB mit standardmäßigen FastReport-VCL-Komponenten, ohne dass der Client direkt mit dem Datenbankserver verbunden werden muss.
Flexible und offene Architektur
Wenn Ihnen die Funktionalität von FastReport nicht ausreicht, können Sie sie verbessern, indem Sie Ihre Objekte (Exportfilter, Datenbanken) erstellen und mit Ihren Berichten verbinden.
Quellcode
Dieser Komponentensatz enthält FastReport-Quellcodes. Maximaler Komfort für Unternehmen, die den Code an ihre Bedürfnisse anpassen möchten.
Hilfreiche Ergänzungen
Ultimate umfasst Systeme für die mehrdimensionale Analyse: FastCube VCL und FMX sowie FastConverter .FP3-Plugin zum Exportieren von Berichten in allen möglichen Formaten.
The template designer in your application

Der Template Designer in Ihrer Anwendung

Der moderne Editor bietet viele Werkzeuge zum Erstellen von Berichtsvorlagen. Die flexible Architektur ermöglicht es Ihnen, Editoren für vorhandene und neue Objekte zu erstellen. Der Template Designer kann in Ihre Anwendung integriert werden. Wir unterstützen die Lokalisierung für mehr als 30 Sprachen.

Ultimate VCL ist ein bandorientierter Berichtsgenerator mit einer Vielzahl von Bändern zum Erstellen verschiedener Arten von Berichten. Sie können gemeinsame Elemente (Titel, Keller, Geschäftsdetails, Logos) in einem Basisbericht sammeln und für andere Berichte übernehmen. Die Funktion verschachtelter Berichte wird unterstützt.

Data processing

Datenverarbeitung

Ultimate VCL unterstützt das Sortieren und Filtern von Daten sowie Master-Detail-Beziehungen. Alles ist mit wenigen Mausklicks eingerichtet. Es ist möglich, eine Verbindung zu FireDAC, ADO, BDE, DBX, IBX und FIBPlus herzustellen, um auf die meisten Datenbanken, einschließlich Oracle, zuzugreifen.

Der Bericht kann Daten aus Tabellen, Abfragen und Datenbankverbindungen enthalten. Ultimate VCL verfügt über eine Skript-Engine, die PascalScript, C ++ Script, BasicScript und JScript unterstützt. Berichte können Dialogformulare zum Anfordern von Parametern vor dem Erstellen enthalten. Dialogsteuerelemente ermöglichen es Ihnen, Daten zu verbinden und zu filtern, ohne Code zu schreiben.

Client-Server-Komponenten

Erstellen Sie Berichte direkt im WEB mithilfe der Client-Server-Technologie mit Standard-FastReport-Tools, ohne dass eine direkte Verbindung zu einem Datenbankserver erforderlich ist. Sie können mehrere Client-Anfragen gleichzeitig in separaten Threads verwalten und so die Antwortzeit des Servers minimieren.

Die TfrxReportServer-Komponente ist ein autonomer HTTP-Server mit der Fähigkeit, Berichte zu erstellen. Der Berichtsserver kann mehrere Berichte gleichzeitig erstellen, Ereignisse protokollieren und Daten sammeln. Um die bereits vorhandenen Lösungen zu verwenden, die auf anderen HTTP-Servern basieren, können Sie diese mit einem CGI-Mechanismus in den FastReport-Server integrieren. Berichte können in ein bereits funktionierendes System (Site) integriert werden. HTTP-Server und Berichtsserver können auf verschiedenen Computern arbeiten und SSL-Verschlüsselung verwenden.

Printing reports

Zusätzliche Druckeinstellungen

Folgende Optionen stehen Ihnen zur Verfügung: Schneiden Sie große Berichtsseiten in kleine, Drucken Sie mehrere kleine Seiten auf eine große und drucken Sie in einem voreingestellten Format mit Skalierung.

Müssen Sie einen Bericht mit A3-Seiten auf einem normalen A4-Drucker drucken? Jetzt ist es kein Problem!

Preview and print

Vorschau und Drucken

Der vorbereitete Bericht kann im Vorschaufenster des Berichtsviewers detailliert untersucht werden. Unsere Komponente unterstützt das Arbeiten mit Parametern, mehrstufigen Details und interaktiven Berichten.

Im Vorschaufenster können Sie eine Reaktion auf einen Mausklick auf ein Objekt definieren. Sie können beispielsweise einen weiteren Bericht erstellen und anzeigen, der detaillierte Informationen zu dem Objekt anzeigt, auf das der Benutzer geklickt hat.

Exports to convenient formats

Exportiert in praktische Formate

Filter zum Exportieren des fertigen Berichts in viele Formate: PDF, RTF, XLSX, XML, DOCX, TXT, CSV, Excel OLE, PowerPoint, HTML, MHT, XPS, JPEG, BMP, PNG, offenes Dokumentformat (ODT, ODS, ODP), XAML, Skalierbare Vektorgrafiken (SVG), ZPL usw.

Mit Ultimate VCL können Sie Berichte mit bearbeitbaren Feldern (z. B. Textfelder, Kombinationsfelder, Kontrollkästchen, Optionsfelder und Grafikfelder) schnell in PDF-Dokumente konvertieren, ohne zusätzliche Bibliotheken anzuschließen. Speichern Sie Ihre Berichte in gängigen Formaten: PDF 1.4-1.7, PDF / A-1a, PDF / A-1b, PDF / A-2a, PDF / A-2b, PDF / A-3a, PDF / A-3b, die sicher, zugänglich und zuverlässig sind.

Plattformübergreifende Entwicklung

Mit Hilfe der in der Ultimate VCL enthaltenen Komponenten FastReport FMX und FastCube FMX ist es möglich, plattformübergreifende Reporting-Anwendungen für Windows, macOS und Linux zu entwickeln. Auf diese Weise können Entwickler Dokumente erstellen, die auf verschiedenen Betriebssystemen ausgeführt werden, ohne dass eine zusätzliche Konfiguration oder Neukompilierung erforderlich ist.

Dank der mit Embarcadero RAD Studio kompatiblen FireMonkey-Umgebung wird die Erstellung von Projekten für verschiedene Bildschirmauflösungen und Gerätegrößen unterstützt, wodurch die Anpassungsfähigkeit von Anwendungen auf allen Geräten sichergestellt wird.

Benutzer auf verschiedenen Betriebssystemen können mit Ihrer Anwendung arbeiten, ohne zusätzliche Bibliotheken oder Komponenten installieren zu müssen. Dies vereinfacht den Prozess der Verteilung und Wartung der Anwendung.

FastScript formulas

FastScript-Formeln

In Ultimate VCL wird das FastScript Paket wird verwendet, um nicht standardmäßige Berechnungen durchzuführen. Mithilfe von Skripten können Sie Indikatoren und Filter berechnen. Sie können die Datenverarbeitung nach oder gleichzeitig mit Standardindikatoren einstellen.

Für Indikatoren können Sie vom Skript festgelegte Filter festlegen. Dieser Filter wird verwendet, wenn Indikatoren nicht für alle Zeilen des ursprünglichen Datensatzes, sondern nur für ausgewählte Zeilen berechnet werden müssen. Der Berechnungsfilter kann sowohl auf Kennzahlen angewendet werden, die auf Standardaggregatfunktionen basieren, als auch auf berechneten Kennzahlen.

Transports

Transport

Ultimate VCL ermöglicht den Export der vorbereiteten Berichte und Exportergebnisse in verschiedene Cloud-Speicher wie FTP, Dropbox, OneDrive, Google Drive, Box.com und andere. Es vereinfacht Prozesse zum Speichern von Berichten und stellt sie anderen Benutzern jederzeit und an jedem Ort zur Verfügung.

Cloud-Dienste ermöglichen automatische Dateisicherungen, wodurch das Risiko eines Datenverlusts bei Gerätestörungen oder anderen Notfallsituationen verringert wird. Das Speichern von Dateien in der Cloud schafft Platz für lokalen Speicher, was für Benutzer mit begrenztem Speicherplatz auf einer Festplatte oder SSD praktisch ist.

FastQueryBuilder

FastQueryBuilder

Datenbankanfragen mit SQL-Kenntnissen erstellen! Sie können FastQueryBuilder in Ihren Anwendungen, die in Embarcadero Delphi, C++ Builder, RAD Studio (VCL und FMX - FireMonkey) und Lazarus geschrieben wurden, um einen einfachen SQL-Generator zu erstellen. Visuelle Modelle der Anfrage werden zur weiteren Verwendung und Bearbeitung aufbewahrt.

FastQueryBuilder ermöglicht die Arbeit mit lokalen und Client-Server-Datenbanken mithilfe von BDE, ADO, IBX und FIBPlus. Eine vollständige visuelle Parametrierung der Anforderungen kann in jedes Fenster Ihrer Anwendung eingebaut werden.

OLAP components

OLAP-Komponenten

Ultimate VCL enthält Kreuztabellenkomponenten für VCL und FMX, ein interaktives Tool zur Datenpräsentation und analytischen Verarbeitung. Der mittlere Teil der Tabelle zeigt die Werte der Indikatoren an.

Die Kreuztabelle besteht aus vielen Bereichen: der Kopfzeile der Kreuztabelle, dem Bereich der Filterfelder, den vertikalen und horizontalen Kopfzeilen der Dimensionen, der vertikalen und horizontalen Kopfzeile der Kreuztabelle, dem Datenbereich, der Feldliste, der Liste der Top-N-Filter, dem Bereich der Aggregatberechnungen für die ausgewählten Zellen und der Skalierungssteuerung.

Lieferoptionen

Features
ab 1.299 €
ab 899 €
ab 499 €
ab 499 €
ab 499 €
ab 399 €
FastReport Engine
VCL-Komponenten
FMX Komponenten
Lazarus Komponenten
OLAP-Funktionen
OLAP-Aggregationsfunktionen
Datenverbindungen
Berichterstellungsfunktionen
Berichtsobjekte
Barcodes
Diagrammtypen
Druckfunktionen
Exportformate
Quellcode
Konverter von
Datenübertragungswege (Transports)

Neueste Artikel

24. April 2025

Öffnen und Konvertieren von FP3-Dateien mit dem FastConverter .FP3

FP3 ist ein Format für einen vorgefertigten Bericht, der mit dem FastReport-Berichtsgenerator erstellt wird und in verschiedene Geschäftsanwendungen eingebettet ist. Eine Datei in diesem Format kann von verschiedenen Softwaren wie CRM oder ERP generiert werden. Verwenden Sie den FastConverter .FP3, um sie einfach in ein beliebiges Format zu konvertieren.  Mit dem FastConverter .FP3 können Sie .fp3-Dateien in folgende Formate konvertieren: PDF Versionen 1.4, 1.5, 1.6 und 1.7, PDF / A (1, 2, 3), RTF, XLSX, XML, DOCX, TXT, CSV, PPTX, HTML, JPEG, BMP, PNG, TIFF, EMF, SVG, Open Document Format (ODT, ODS, ODP) und so weiter. Es ist möglich, eine einzelne Datei oder eine Massendatei zu konvertieren.    Konvertieren einer .fp3-Datei in PDF Schritt 1: Installation von FastConverter .FP3. Unter folgendem Link können Sie den FastConverter .FP3 herunterladen und installieren. Nach der Installation starten Sie die Software.   Schritt 2: Öffnen einer FP3-Datei. Gehen Sie auf „Datei“ → „Öffnen“, wählen Sie eine FP3-Datei aus und klicken Sie auf „Öffnen“.   Schritt 3: FP3 in ein anderes Format konvertieren. Nachdem Sie die Datei heruntergeladen haben, klicken Sie auf „Datei“ → „Speichern unter“. Eine Vielzahl von unterstützten Exportformaten wird Ihnen zur Verfügung gestellt. Wählen Sie im Feld „Zielformat“ das gewünschte Format (PDF, DOCX, XLSX, HTML, PNG, etc.) aus der angebotenen Liste aus.    Schritt 4: Endgültiger Speicherort und Name der Datei. Geben Sie im Feld „Zieldatei“ den Ordner und den Dateinamen an und klicken Sie auf Speichern. Sobald die Konvertierung abgeschlossen ist, steht die Datei im neuen Format im angegebenen Verzeichnis zur Verfügung.   Wenn Sie Fragen haben, wenden Sie sich bitte an unser Support-Team unter support@fast-report.com.
Weiterlesen
22. April 2025

Umgang mit der TfrShellTreeView-Komponente in FastReport VCL

Nicht jeder weiß, dass FastReport nicht nur Berichtskomponenten, sondern noch viel weitere Komponenten enthält. Insbesondere gibt es mehrere Komponenten, die Sie wie andere Delphi-Komponenten in Ihren Anwendungen verwenden können. Die Bibliothek solcher Komponenten wird ständig erweitert. In diesem Artikel betrachten wir eine dieser Komponenten, nämlich die TfrShellTreeView.  Diese Komponente dient zur Anzeige von Elementen des Dateisystems und ist teilweise analog zu Komponenten wie TDirectoryListBox, TDirectoryOutline in Delphi und TShellTreeView in Lazarus. Wenn Sie sehen möchten, wie sie aussieht, ohne die IDE auszuführen, ist dies der „Baum“, den Sie links im Explorer-Fenster sehen.   Die Komponente funktioniert auf Windows- und Linux-Betriebssystemen für Delphi und Lazarus problemlos. Die FMX Entwicklungsumgebung wird nicht unterstützt.  Die TfrShellTreeView-Komponente verwendet viele Betriebssystemfunktionen. Zum Beispiel können Sie unter Windows auf Zip-Archive als Ordner zugreifen und sogar deren Inhalt bearbeiten: Dateien extrahieren und hinzufügen. Unter Linux sind einige der Funktionen der Komponente je nach installierter Linux-Version möglicherweise nicht verfügbar. Wichtiger Hinweis: Die Anzeige der Baumstruktur und die Auswahl von Elementen darin sind unter jedem Betriebssystem verfügbar. Die Haupteigenschaft von TfrShellTreeView, die die Interaktion mit dem Betriebssystem steuert, ist die OptionsShell.   ContextMenu – diese Eigenschaft gibt an, ob das Systemkontextmenü für die ausgewählte Datei angezeigt werden soll. ShowFolder – diese Eigenschaft ist für die Anzeige von Ordnern zuständig. ShowHidden – diese Eigenschaft gibt an, ob versteckte Dateien sichtbar sind oder nicht. ShowNonFolders – Diese Eigenschaft ist für die Anzeige von normalen Dateien (nicht von Ordnern) zuständig. TrackShellChanges – Diese Eigenschaft ist dafür zuständig, auf Änderungen im Dateisystem zu reagieren. Wenn ein Ordner in der Komponente geöffnet ist, so wird bei einer Änderung (z. B. beim Kopieren einer Datei dorthin) automatisch auch ein Knoten, der auf diese Datei verweist, zur Komponente hinzugefügt. TfrShellTreeView unterstützt eine Reihe von Hotkeys, die typisch für einen Standard-Dateidialog oder den Explorer in Windows sind (Ctrl+С, Ctrl+V, Delete usw.). Die TfrShellTreeView-Komponente unterstützt auch Drag&Drop von Dateisystemelementen sowohl intern als auch von anderen (aber nicht allen) Dateimanagern. Die OptionsBehavior.AllowDragDrop Eigenschaft wird verwendet, um Drag&Drop-Operationen zu erlauben. Drag&Drop wird mit Funktionen des Betriebssystems durchgeführt. Andere Eigenschaften sind denen der Komponenten TTreeView und TfrTreeView ähnlich. Es ist jedoch zu beachten, dass sie je nach Art der Verwendung in Gruppen eingeteilt sind: OptionsBehavior, OptionsSelection, OptionsShell, OptionsView. So können Sie die benötigten Eigenschaften schneller finden. Wie bereits erwähnt, ist die Komponente dafür ausgelegt, das Dateisystem Ihres Computers anzuzeigen. Standardmäßig ist die Komponente so konfiguriert, dass sie den Stammordner Ihres Systems anzeigt: „Desktop“ unter Windows oder „/“ unter Linux. Die Fähigkeiten der Komponente sind jedoch nicht darauf beschränkt.  Fügen Sie die TfrShellTreeView-Komponente ins Formular ein und öffnen Sie den Editor:   Der TfrShellTreeView ähnelt sich im Aussehen den Editoren der TTreeView und TfrTreeView Komponenten, verfügt jedoch über zwei neue Schaltflächen:  New shell Root Item. New shell Root SubItem. Wie wir auf dem Editor-Bildschirm sehen können, kann die Komponente Folgendes enthalten: Normale Knoten, die nur Texte enthalten, wie z.B. „New simple item 1“.  Knoten mit einem Ort im Dateisystem, wie z.B. „Dieser Computer“, „Lazarus“, „Daten“. Diese Knoten werden als Shell-Knoten bezeichnet.  Normale und untergeordnete Knoten werden auf die gleiche Weise wie in normalen TreeViews erstellt und bearbeitet.  Knoten, die einen Verweis auf ein Dateistrukturelement haben, werden mit der Schaltfläche „New shell Root Item“ erstellt. Dadurch wird ein Shell-Knoten der gleichen Ebene wie der aktuelle Knoten erstellt. Wenn Sie auf „New shell Root SubItem“ klicken, wird ein untergeordneter Shell-Knoten in Bezug auf den aktuellen Knoten erstellt.  Bitte beachten Sie, dass ein Shell-Knoten keine untergeordneten Knoten erstellen kann, ein normaler Knoten jedoch schon.  Beim Bearbeiten von Shell-Knoten muss angegeben werden, an welchen Ordner der Knoten gebunden ist. Die Bindung an einen Ordner kann über TfrRootNodes Konstanten festgelegt werden. Diese Konstanten definieren Orte wie den Desktop, automatisches Laden usw. Wenn Sie die rfCustomPath Konstante festlegen, können Sie im folgenden Verzeichnisbaum einen Pfad zu einem Dateisystemordner hinzufügen. Sie können diesen Pfad auch über das Bearbeitungsfenster unterhalb des Verzeichnisbaums festlegen. Zum Beispiel ist im untenstehenden Bildschirm der Pfad zum Lazarus Ordner auf dem Laufwerk C:\ festgelegt.    Wie bei einer normalen TreeView-Komponente können Sie den regulären Komponentenknoten Symbole zuweisen. Den Shell-Knoten können keine Symbole zugewiesen werden, sie verwenden die im Betriebssystem festgelegten Symbole. Für Knoten wird der tatsächliche Symbolindex verwendet, der in der ImageIndex Eigenschaft hinzugefügt wird. Andere Symbolindexe werden nicht verwendet. Aufgrund der Besonderheiten bei der Verwendung der Komponente sind auch einige andere Eigenschaften nicht implementiert. Beispielsweise gibt es keine Möglichkeit, mehrere Elemente auszuwählen. Die am häufigsten verwendete Eigenschaft ist natürlich die TfrShellTreeView.SelectedPath. Wenn ein Shell-Knoten ausgewählt ist, enthält diese Eigenschaft den Pfad zu dem Ordner, auf den dieser Knoten verweist. Andernfalls ist diese Eigenschaft gleich der leeren Zeichenkette.  Darüber hinaus ist der Umgang mit der Komponente durch Programm möglich. Sie können einen normalen (nicht-Shell-) Knoten auf die gleiche Weise hinzufügen wie einen normalen TTreeView.  frShellTreeView1.Items.Add(nil,Edit1.Text); //einen Stammknoten mit dem Text aus Edit1 hinzufügen Hinzufügen eines Knotens zum aktuell ausgewählten Knoten: procedure TForm1.Button5Click(Sender: TObject); var N:TfrShellTreeViewNode; begin N:=(frShellTreeView1.Selected) as TfrShellTreeViewNode; if N=nil then Exit; frShellTreeView1.Items.AddChild(N,Edit1.Text); end; Das Löschen eines Knotens ist ebenso einfach. So wird zum Beispiel der aktuell ausgewählte Knoten gelöscht: procedure TForm1.Button2Click(Sender: TObject); var N:TfrShellTreeViewNode; begin N:=(frShellTreeView1.Selected) as TfrShellTreeViewNode; if N=nil then exit; frShellTreeView1.Items.Delete(N); end; Um einen Knoten zu löschen, können Sie jedoch einfach seine Free-Methode aufrufen. Leider unterstützt die Komponente derzeit nicht die Generierung von Ereignissen, die auftreten, wenn die zugehörigen Dateisystemordner geändert werden. Die übrige Funktionalität der Komponente entspricht weitgehend der Standard-TreeView.  Zusammenfassend lässt sich sagen, dass FastReport nicht nur ein Tool zum Erstellen von Berichten ist, sondern auch eine Quelle für zusätzliche Komponenten, die in Delphi-Anwendungen verwendet werden können. Die TfrShellTreeView bietet eine bequeme Möglichkeit, Dateisystemelemente anzuzeigen und kann in verschiedenen Projekten nützlich sein. Die Bibliothek der FastReport-Komponenten wird ständig erweitert, was dieses Tool für Entwickler noch attraktiver macht.
Weiterlesen
22. April 2025

Umgang mit XML- und JSON-Formaten in FastScript

XML und JSON sind inzwischen zu den wichtigsten Standards für die Datenspeicherung und den Informationsaustausch zwischen Computersystemen geworden. Als Reaktion auf Benutzeranfragen wurden Klassen für die Arbeit mit XML und JSON zu FastScript hinzugefügt. In diesem Artikel sehen wir uns genauer an, wie man mit diesen Klassen arbeitet, über welche Eigenschaften und Methoden sie verfügen und wie man Berichte aus Skriptcode erstellt.     XML-Format In Skripten werden 2 Klassen verwendet, um mit XML zu arbeiten. Diese Klassen sind auf maximale Leistung und geringen Speicherverbrauch ausgerichtet.   TfrXMLDocument – ist eine Klasse, die die Funktionalität eines XML-Dokuments kapselt. Die folgenden Eigenschaften und Methoden sind in dieser Klasse verfügbar. Eigenschaften und Methoden der Klasse Beschreibung procedure SaveToStream(Stream: TStream); speichert XML im übergebenen Stream procedure LoadFromStream(Stream: TStream; AllowPartialLoading: Boolean = False); lädt XML aus dem übergebenen Stream hoch procedure SaveToFile(const FileName: string); speichert XML in einer Datei mit dem angegebenen Namen procedure LoadFromFile(const FileName: string); lädt XML aus einer Datei mit dem angegebenen Namen hoch procedure Clear; Entfernt alle XML-Knoten aus dem Baum außer dem Stammknoten. Der Inhalt des Knotens wird NICHT geleert. property Root: TfrXMLItem; ermöglicht den Zugriff auf das Stammelement des Baums property AsText: string; ermöglicht, XML als Zeichenkette abzurufen und festzulegen (mit dieser Eigenschaft können Sie beispielsweise XML mithilfe einer Berichtsvariablen an ein Berichtsskript übergeben) property AutoIndent: Boolean; legt fest, wie die XML-Ausgabe generiert werden soll: als einzelne Zeile oder als eingerückter Text   TfrXMLNode – a class that encapsulates the properties of an XML document node. You cannot create an object of this type directly. It is created by calling the Add() method of the element to which you want to add a child element. Let’s take a closer look at the properties and methods of the TfrXMLNode class. Eigenschaften und Methoden der Klasse Beschreibung function Add(AName:string):TfrXMLItem; erstellt ein untergeordnetes TfrXMLItem Element mit dem angegebenen Namen und gibt es zurück procedure Clear; löscht die Liste der untergeordneten Elemente procedure InsertItem(Index:integer; AItem: TfrXMLItem); fügt ein untergeordnetes Element an der angegebenen Position ein; das Element kann zu einem anderen Dokument gehören function Find(AName:string):Integer; sucht unter den untergeordneten Elementen ein TfrXMLItem mit dem angegebenen Namen und gibt es zurück. Wenn das Element nicht gefunden wird, wird -1 zurückgegeben. Wenn es mehrere Elemente mit dem angegebenen Namen gibt, wird das erste von ihnen zurückgegeben function FindItem(AName:string):TfrXMLItem; sucht unter den untergeordneten Elementen ein TfrXMLItem mit dem angegebenen Namen und gibt es zurück. Wenn das Element nicht gefunden wird, wird ein neues Element mit dem angegebenen Namen erstellt und zurückgegeben. Wenn es mehrere Elemente mit dem angegebenen Namen gibt, wird das erste von ihnen zurückgegeben. function Root: TfrXMLItem; gibt das Stammelement des Dokuments zurück property Count:Integer; Gibt die Anzahl der untergeordneten Knoten des Elements zurück property Items[AIndex:Integer]: TfrXMLItem; gibt ein untergeordnetes Element anhand seines Indexes zurück property Prop[AName:string]:string; gibt den Wert des Knotenattributs mit dem angegebenen Namen zurück oder legt ihn fest  property Name: string; Name des Element-Tags property Parent: TfrXMLItem; Name des übergeordneten Elements. Bei Root ist es gleich nil property Text:string; Eine Zeichenkette mit einer Liste von Knotenparametern in der folgenden Form: Name1=”Value1” Name2=”Value2”… Sonderzeichen sind in dieser Zeichenkette Escapezeichen. procedure Delete(AIndex: Integer); löscht das untergeordnete Element mit dem AIndex-Index  procedure DeleteProp(const APropName: string); löscht ein Knotenattribut mit dem angegebenen Namen property Value: string; Text, der zwischen dem öffnenden und dem schließenden Tag des Elements steht function PropExists(APropName:string):Boolean; hilft festzustellen, ob ein Element ein Attribut mit dem angegebenen Namen hat function IndexOf(AItem: TfrXMLItem):Integer; gibt den Index des übergebenen Elements zurück function GetPropNames(ANames:TStrings); Füllt die übergebene Zeichenkettenliste mit TfrXMLItem-Attributnamen   Versuchen wir, einen Bericht mithilfe von Klassen für das Arbeiten mit XML zu erstellen. Als Beispiel werden wir Daten aus der Datei „country.xml“ in einem Bericht anzeigen, dabei jedoch nicht TClientDataSet verwenden, sondern auf die XML-Datei direkt zugreifen. Erstellen Sie einen neuen Bericht, wechseln Sie in den Bearbeitungsmodus und fügen Sie MasterData in den Bericht ein. Und obendrauf fügen Sie mehrere Memos hinzu, um die Daten anzuzeigen. Erstellen Sie außerdem das OnBeforePrint Ereignis für das MasterData-Objekt.  Der endgültige Code des Berichtsskripts sieht wie folgt aus: var doc: TfrXMLDocument; item: TfrXMLItem; IIndex: Integer;   procedure MasterData1OnBeforePrint(Sender: TfrxComponent); var cur: TfrXMLItem; S: string; begin cur := item[IIndex]; mmNum.Text := cur.Prop['Code']; mmName.Text := cur.Prop['Name']; mmCapital.Text := cur.Prop['Capital']; mmArea.Text := cur.Prop['Area']; mmPopulation.Text := cur.Prop['Population']; mmContinent.Text := cur.Prop['Continent']; Inc(IIndex); end;   begin Doc := TfrXMLDocument.Create; Doc.LoadFromFile('..\..\Data\country.xml'); item := Doc.Root[1]; IIndex := 0; MasterData1.RowCount := item.count; end. Führen Sie den Bericht aus. Zur besseren Lesbarkeit haben wir auch Spaltenüberschriften hinzugefügt.     JSON Format Wechseln wir vom XML-Format zu JSON-Format. FastReport verwendet auch 2 Klassen um mit JSON zu arbeiten. Das sind TfrJSON und TfrJSONArray. In diesem Fall sind diese Klassen nur ein Wrapper um Klassen von System.JSON in der Delphi Plattform oder ähnliche Klassen in Lazarus.   TfrJSONObject ist eine Klasse, die Funktionen für die Arbeit mit JSON-Objekten kapselt.  Eigenschaften und Methoden der Klasse Beschreibung function Create(const JSONstring: string); erzeugt ein JSON-Objekt und füllt es mit der übergebenen Zeichenkette function IsValid:Boolean; gibt True zurück, wenn das Objekt gültiges JSON enthält procedure LodFromFile(const AFilName:string); lädt Daten aus der angegebenen Datei. Wenn das Objekt Daten enthält, gehen diese verloren procedure LoadFromtStream(const AStream:TStream); lädt Daten aus dem übergebenen Stream. Wenn das Objekt Daten enthält, gehen diese verloren function ToString:string;   gibt eine Zeichenkette zurück, die die alphabetische Darstellung des JSON-Objekts enthält procedure SaveToFile(const AFileName: string); speichert die alphabetische Darstellung eines JSON-Objekts in einer Datei procedure SaveToStream(AStream: TStream speichert die alphabetische Darstellung eines JSON-Objekts in einem Stream function IsNameExists(const AName:string); gibt True zurück, wenn das Objekt eine Eigenschaft mit dem angegebenen Namen hat function IsNameValueExists(const Name, Value: string): boolean; gibt True zurück, wenn das Objekt eine Eigenschaft mit dem angegebenen Namen hat und ihr Wert mit dem angegebenen Wert übereinstimmt function Count:Integer; gibt die Gesamtzahl der Eigenschaften eines JSON-Objekts zurück property Names[AIndex:Integer]:string; gibt den Namen der Eigenschaft mit dem angegebenen Index zurück Property ValueType[IndexOrName:Variant]:TfrJSONType; gibt den Typ der Eigenschaft mit dem angegebenen Index oder Namen zurück. Der Typ kann einer der folgenden Werte sein: – jsUnknown – der Eigenschaftstyp ist unbekannt (es ist ein Parsing-Fehler aufgetreten oder es gibt keine Eigenschaft mit diesem Index oder Namen).– jsNumber – die Eigenschaft ist vom numerischen Typ.– jsString – die Eigenschaft ist vom Zeichenkettentyp.– jsBoolean – die Eigenschaft ist vom Booleschen Typ (true/false).– jsNull – der Eigenschaftstyp ist null (der Wert ist nicht festgelegt).– jsList – der Eigenschaftentyp ist ein JSON-Array.– jsObject – der Eigenschaftstyp ist ein verschachteltes JSON-Objekt. Mit den folgenden Eigenschaften können Sie die Werte eines JSON-Objekts in der einen oder anderen Form abrufen. Bei allen diesen Eigenschaften erfolgt die Indizierung entweder über die Eigenschaftsnummer in der Eigenschaftsliste oder über ihren Namen. Beachten Sie, dass AsString[‘1’] <> AsString[1] nicht gleich sind. Auch wenn Sie versuchen, den Eigenschaftswert mit einer ungeeigneten Methode abzurufen, können Fehler auftreten und falsche Eigenschaftswerte zurückgegeben werden. Wenn eine Eigenschaft beispielsweise vom Typ „Objekt“ oder „Array“ ist und Sie versuchen, ihren Wert mithilfe der Eigenschaft „AsString“ abzurufen, erhalten Sie eine leere Zeichenkette zurück. In anderen Fällen gibt AsString eine Zeichenkettendarstellung des Eigenschaftswerts zurück. Eigenschaften und Methoden der Klasse Beschreibung property AsObject[IndexOrName: Variant]: TfrxJSON; ermöglicht es, ein verschachteltes JSON-Objekt abzurufen property AsArray[IndexOrName: Variant]: TfrJSONArray; ermöglicht es, ein verschachteltes JSON-Array abzurufen Property AsString[IndexOrName: Variant]: string; ermöglicht es, den Eigenschaftswert als Zeichenkette anzurufen. Diese Methode kann auf Eigenschaften von anderen Typen als Objekten und Arrays angewendet werden. Für logische Werte wird eine Zeichenkette mit dem Wert „True“ oder „False“ zurückgegeben. Bei Zahlen mit einem Bruchteil wird unabhängig von den regionalen Einstellungen immer ein Punkt als Dezimaltrennzeichen verwendet. property AsNumber[IndexOrName: Variant]: Extended; ermöglicht es, den Eigenschaftswert als Zahl abzurufen. Wenn die Eigenschaft nicht numerisch ist, wird 0 zurückgegeben property AsBoolean[IndexOrName: Variant]: Boolean; ermöglicht es, den Eigenschaftswert als Booleschen Wert abzurufen. Wenn die Eigenschaft von einem anderen Typ ist, wird False zurückgegeben.  Um ein Nullfeld zurückzugeben, müssen Sie sich etwas mehr Mühe geben. Im Allgemeinen gibt es keine solche Methode. Sie können jedoch die ValueType-Eigenschaft verwenden, die für ein Nullfeld jsNull zurückgibt, oder die AsString-Eigenschaft verwenden, die die Zeichenkette „null“ zurückgibt. Betrachten wir näher die Methoden zur Behandlung von Objekteigenschaften. Methoden der Klasse Beschreibung Procedure Delete(AName: String);   löscht die Eigenschaft des Objekts mit dem angegebenen Namen function AddObject(const AName: string): Integer fügt dem Objekt ein leeres untergeordnetes Objekt mit dem angegebenen Namen hinzu function AddArray(const AName: string): Integer; fügt dem Objekt ein leeres Array mit dem angegebenen Namen hinzu function AddString(const AName, AValue: string): Integer; fügt dem Objekt eine Zeichenkette mit dem angegebenen Namen hinzu function AddBool(const AName: string; AValue: boolean): Integer; fügt dem Objekt einen booleschen Wert mit dem angegebenen Namen hinzu function AddNumber(const AName: string; AValue:Extended): Integer; fügt dem Objekt einen numerischen reelen Wert mit dem angegebenen Namen hinzu function AddInteger(const AName: string; AValue:Integer): Integer; fügt dem Objekt einen numerischen Ganzzahlwert mit dem angegebenen Namen hinzu function AddNull(const AName: string): Integer; Fügt dem Objekt einen Nullwert mit dem angegebenen Namen hinzu Die Methoden geben eine Ganzzahl zurück, die den Index des hinzugefügten Elements in der Liste aller Felder darstellt. Alle Methoden, die einem Objekt Felder hinzufügen, überwachen nicht, ob bereits Felder mit gleichem Namen vorhanden sind. Die Verantwortung dafür liegt beim Programmierer, der diese Klasse verwendet. Diese Überwachung ist notwendig, um zu verhindern, dass mehrere Felder mit denselben Namen in der JSON-Ausgabe erscheinen. Das Verhalten des Systems in diesem Fall ist nicht definiert - es hängt vom Parser ab, der das empfangene JSON weiter parst. Das bedeutet, dass jeder beliebige Wert mit demselben Namen in der Arbeit erscheinen kann!  Die Klasse TJSONArray kapselt Methoden und Eigenschaften für die Arbeit mit JSON-Arrays. Die Grundeigenschaften sind grundsätzlich gleich, aber auf sie kann nur per Index zugegriffen werden. Es werden nur Operationen unterstützt, die auf ein beliebiges Element zugreifen, seinen Wert abfragen oder ein Element löschen. Es ist nicht möglich, Elemente im Array zu verschieben oder ihren Typ zu ändern. Betrachten wir die Eigenschaften und Methoden zum Abrufen der Werte von Elementen in dieser Klasse. Eigenschaften und Methoden der Klasse Beschreibung function Count:Integer; gibt die Anzahl der Elemente in einem Array zurück property ValueType[AIndex: Integer]: TfrJSONType; gibt den Typ des Array-Elements mit dem angegebenen Index zurück property AsObject[AIndex: Integer]: TfrJSONObject; gibt ein Objekt zurück, das den Zugriff auf ein Array-Element als JSON-Objekt ermöglicht Property AsArray[AIndex: Integer]: TfrJSONArray gibt ein Objekt zurück, das den Zugriff auf ein Array-Element als JSON-Array ermöglicht property AsString[AIndex: Integer]: string; gibt den Wert eines Array-Elements als Zeichenkette zurück property AsNumber[AIndex: Integer]: Extended; gibt den Wert eines Array-Elements als Zahl zurück property AsBoolean[AIndex: Integer]: Boolean; gibt den Wert eines Array-Elements als booleschen Wert zurück Wie bei einem Objekt sollten Sie beim Abrufen von Werten von Array-Elementen vorsichtig sein. Je nach dem Wert-Typ sollten Sie die entsprechende Methode verwenden, um ihn abzurufen. Nachfolgend werden Methoden zum Bearbeiten von Elementen eines JSON-Arrays beschrieben. Eigenschaften und Methoden der Klasse Beschreibung procedure Delete(AIndex:Integer); lLöscht ein Array-Element mit einem angegebenen Index function AddObject: Integer; fügt ein verschachteltes JSON-Objekt am Ende des Arrays hinzu function AddArray: Integer; fügt ein verschachteltes JSON- Array am Ende des Arrays hinzu function AddString(const AValue: string): Integer; fügt eine Zeichenkette am Ende des Arrays hinzu function AddBool(AValue: boolean): Integer; fügt einen booleschen Wert am Ende des Arrays hinzu function AddNumber(AValue:Extended): Integer; fügt eine reelle Zahl am Ende des Arrays hinzu function AddInteger(AValue: Integer): Integer; fügt eine Ganzzahl am Ende des Arrays hinzu function AddNull: Integer; fügt Null am Ende des Arrays hinzu Alle diese Methoden geben die Position des zum Array hinzugefügten Elements zurück. Sie können kein Element in die Mitte eines Arrays einfügen – dies ist eine Einschränkung der Basisklassen in System.JSON.     Besonderheiten der Verwendung von Klassen für den JSON-Zugriff  Bei der Verwendung von Objekten ist zu beachten, dass alle Wrapper-Objekten nach ihrer Verwendung aus dem Code entfernt werden müssen.  Bitte beachten Sie, wenn Sie ein untergeordnetes Objekt oder Array abrufen möchten und stattdessen ein Skalarwert oder überhaupt kein Wert vorhanden ist, gibt die Eigenschaft „nil“ zurück und der weitere Zugriff auf eine solche Eigenschaft führt zu einer Ausnahme. Sie sollten keine Methoden verwenden, die nicht für die Arbeit mit Werten bestimmter Typen ausgelegt sind, die in einem Element gespeichert sind, um diese Werte abzurufen.  Beachten Sie auch, dass bei den Namen der Objekteigenschaften zwischen Groß- und Kleinschreibung unterschieden wird, d.h., „Item1“ und „item1“ sind unterschiedliche Namen! Sie können den Objektelementen nur dann Werte zuweisen, wenn der Typ dieser Werte mit dem Typ übereinstimmt, der dem Element zugewiesen ist. Wenn Sie einen Elementtyp neu definieren müssen, löschen Sie dieses Element und fügen Sie ein neues Element mit demselben Namen und dem erforderlichen Typ hinzu. Es ist nicht möglich, neue Werte für Array-Elemente einzugeben. Sie müssen ein JSON-Array löschen und es dann mit den gewünschten Werten neu erstellen. Verwenden wir die oben beschriebenen Klassen und schreiben ein Skript, das Daten (ohne Typinformationen) aus einer XML-Datei extrahiert und in ein JSON-Objekt einfügt. procedure XMLToJSON; var XML: TfrXMLDocument; xi, xi1: TfrXMLItem; I, J: Integer; JO: TfrJSONObject; JA, JA1: TfrJSONArray; SL: TStringList; begin XML:=TfrXMLDocument.Create; XML.LoadFromFile('.\..\..\data\country.xml'); JO:=TfrJSONObject.Create('{}'); JO.AddArray('data'); JA:=JO.AsArray['data']; xi:=X.Root[1]; xi1:=xi.Items[0]; SL:=TStringList.Create; xi1.GetParamNames(SL); for I:=0 to xi.Count - 1 do begin xi1:=xi.Items[I]; JA1:=JA.AsArray[JA.AddArray]; for J:=0 to SL.Count-1 do JA1.AddString(xi1.Prop[SL[J]]); JA1.Free; end; JA.Free; JO.SaveToFile('.\..\..\data\country.json'); JO.Free; SL.Free; end; Versuchen wir nun, einen Bericht auf der Grundlage der erhaltenen Daten zu erstellen (fügen Sie die entsprechenden Komponenten MasterData und Memo auf der Berichtsseite ein): var J:TfrJSONObject; A:TfrJSONArray; curr:Integer;   procedure MasterData1OnBeforePrint(Sender: TfrxComponent); var A1:TfrJSONArray; begin A1:=A.AsArray(curr); Memo1.Memo.Text:=A1.AsString[0]; Memo2.Memo.Text:=A1.AsString[1]; Memo3.Memo.Text:=A1.AsString[2]; Memo4.Memo.Text:=A1.AsString[3]; Memo5.Memo.Text:=A1.AsString[4]; Memo6.Memo.Text:=A1.AsString[5]; A1.Free; curr := curr + 1; end;   begin J:=TfrJSONObject.Create(''); J.LoadFromFile('.\..\..\data\country.json'); A:=J.AsArray[0]; MasterData1.RowCount:=A.Count; curr:=0; end.   Sie können diese Objekte auch im Delphi-Code verwenden - verbinden Sie einfach die frXML- und frJSON-Module in der uses-Anweisung.      Schlussfolgerung In diesem Artikel haben wir die Verwendung von Klassen für die Arbeit mit JSON und XML in FastReport betrachtet. Wenn Sie sowohl in Delphi als auch in Lazarus nicht nur Berichte entwickeln, wird die Verwendung dieser Klassen Probleme reduzieren, wenn Sie von einer Umgebung zur anderen wechseln. In beiden IDEs ist das Verhalten gleich.  Zu Ihrem Komfort haben wir zwei Beispiele beigefügt, die die Erstellung von XML- und JSON-basierten Berichten veranschaulichen. Sie können sie sofort in FastReportDemo öffnen und ausführen, das im Lieferumfang von FastReport enthalten ist. Möglicherweise müssen Sie die Berichte vor dem Start konfigurieren – geben Sie den richtigen Pfad zur Datendatei „country.xml“ an. Sie befindet sich sowohl im DemoCenter als auch im Ordner mit den Beispielen.  Beispiele herunterladen
Weiterlesen

Kostenlos testen

Noch weitere Fragen?

Kontaktieren Sie den Manager
Fast Reports
  • 800-985-8986 (Englisch, USA)
  • +31 97 01025-8466 (Englisch, EU)
  • +49 30 56837-3928 (Deutsch, DE)
  • +55 19 98147-8148 (Portugiesisch, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.