Catalog · How the catalog works
hiiGrid
Delphi Grid+Tree Component (VCL/FMX pre-beta)
- ★ 3 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
# hiiGrid – VCL-/FMX-/LCL-Grid-Prototyp
hiiGrid ist ein quelloffener Teststand für ein erweiterbares Delphi-/Lazarus-Grid mit gemeinsamem Daten-/Controllerkern und getrennten VCL-/FMX-/LCL-Präsentationen.
Das Paket dient dazu, Architektur, API, Design-Time-Verhalten und die wichtigsten Interaktionspfade früh in einer realen Delphi-Umgebung zu erproben. Es ist ausdrücklich ein Prototyp 0.1.4 und noch keine vollständige Grid-Suite.
Der Common-Kern und die LCL-Fassade ThiiGrid unterstützen FreePascal/Lazarus
mit {$MODE OBJFPC}{$H+}. Die Packages heißen h5uGridLcl.lpk und
h5uGridLclDesign.lpk; drei Lazarus-Demos liegen unter Demos/LCL.
Installation, Verwendung und Tests: FreePascal / Lazarus.
Namen und öffentliche Units
Die Grid-Komponente heißt in VCL, FMX und LCL jeweils ThiiGrid, ihre
Basisklasse ThiiCustomGrid. Öffentliche Anwender- und Erweiterungstypen
tragen das Präfix Thii; interne Hilfstypen behalten Th5u.
Unit- und Packagenamen bleiben bei h5u.
Die Framework-Grid-Units bieten gezielte Typ-Aliase für ihre Spalten,
Konfigurationsobjekte und Ereignissignaturen. Für eine Dataset-Anwendung
genügen in der Formular-Unit beispielsweise Vcl.h5u.Grid und
h5u.Grid.Data.Dataset; eigene Factory-/Style-/Editor-Erweiterungen benötigen
gegebenenfalls zusätzliche Units. Siehe Kurzhilfe.
Der PropertyEditor ist eine eigene Runtime-Komponente in
Vcl.h5u.PropertyEditor beziehungsweise Fmx.h5u.PropertyEditor.
Sein gemeinsames Modell, der Listencontroller und die Werteditoren liegen
zusammen in h5u.PropertyEditor. Die Grid-Units binden ihn nicht ein.
Siehe PropertyEditor und Strukturansicht.
Die Umbenennung ändert die öffentliche Quell- und Formular-API. Bestehende Anwendungen müssen die Typnamen und DFM-/FMX-/LFM-Klassennamen anpassen; die mitgelieferten Demos und Tests sind bereits umgestellt. Es werden keine alten öffentlichen Typ-Aliase zur Kompatibilität hinzugefügt.
Enthaltene Testschwerpunkte
- gemeinsame Daten- und Spaltenklassen für VCL und FMX,
- getrennte DataController für
TDataSource, RTTI-Objektlisten, Memory-Daten und Event-/VirtualSource, ThiiSampleClientDatasetmit selbst erzeugtem Schema und Designer-Musterdaten,- per Gridinstanz isolierter Factory-/Registry-Scope,
GetClass-,OnGetClass-,OnCreateInstance- undOnConfigureInstance-Erweiterungspunkte,- mehrzeilige Header mit
RowSpanundColumnSpan, - AutoWidth, Prozentbreiten, Gruppenbudgets und Grenzen der Gesamtbreite,
- variable Zeilenhöhen einschließlich Text-AutoHeight und begrenzter Maximalhöhe,
- pixelweises, zeilenweises und einrastendes Scrollmodell,
- vertikale und horizontale Thumb-Hints,
- Zeilen-, Spalten- und Mehrbereichs-Zellselektion,
- periodische Zeilenstyles und Style-Auswahl über eine Daten-Column,
- Text-, Boolean- und Bild/BLOB-Darstellung; aktive Editoren werden als echte Controls erzeugt,
- Spalten verschieben, ausblenden, fixieren und in ihrer Breite verändern,
- konfigurierbare Controller-Caches und Pagination-Grundlagen,
- native VCL-/FMX-Style-Anbindung, eingebaute Classic-/Modern-/Dark-Paletten und CustomDraw-Hooks,
- standardmäßig 1 Pixel breite hellgraue Trennflächen zwischen Rows und Columns sowie am äußeren Inhaltsrand,
- deaktivierbare Abstände (
0), vererbbarer Column-Abstand (RightSpacing = -1) und eigene Grid-/Column-Farben, - Tree-Abschlussleiste nach dem letzten sichtbaren Child: größere Höhe und eigener Style ersetzen dort das normale Row-Spacing.
- Adjacent-Group-Folding für direkt aufeinanderfolgende gleiche IDs: unabhängige Läufe, Plus-/Minus-Symbol, unveränderte Quellreihenfolge und Abschlussleiste wahlweise nie, nur eingeklappt, nur ausgeklappt oder immer.
- Delphi-Quellen mit 150-Zeichen-Grenze; Properties und Methodensignaturen bleiben bis 180 Zeichen einzeilig. Operatoren stehen bei Umbrüchen vorne.
Die VCL-Ausgabe bildet im ersten Stand den umfassenderen Referenzpfad. Die FMX-Ausgabe verwendet denselben Core und dieselben Controller, besitzt aber noch nicht bei allen Komfortfunktionen vollständige Parität. Die genaue Abdeckung steht in der Funktionsmatrix.
Verzeichnisstruktur
Source/
Common/ gemeinsamer Core und DataController
Vcl/ VCL-Control, Painter, Styles und Editoren
FMX/ FMX-Control, Painter, Styles und Editoren
LCL/ Lazarus-Control, Styles, Editoren und Typanpassungen
Design/ Komponentenregistrierung
Packages/ Runtime- und Design-Time-DPKs sowie Lazarus-LPKs
Demos/
VCL/
ClientDataset/
ObjectList/
VirtualLive/
FMX/
ClientDataset/
ObjectList/
VirtualLive/
LCL/
ClientDataset/
ObjectList/
VirtualLive/
Docs/ Konzept, Kurzhilfe, Build- und Demo-Hilfe
Build/ Buildskript, Deklarationsformatter und statische AuditsDemos
Es liegen neun eigenständige Anwendungen bei:
| Plattform | Demo | Zweck |
|---|---|---|
| VCL | ClientDataset | Designer-Daten, viele zuschaltbare Layout-/Funktionsbeispiele |
| VCL | ObjectList | RTTI-Objektliste, optionaler Cache, Liveänderungen |
| VCL | VirtualLive | Daten vollständig aus Events, laufende Updates, Paging/Cache |
| FMX | ClientDataset | gemeinsamer Dataset-Core im FMX-Control |
| FMX | ObjectList | gemeinsame Objektlisten-Anbindung unter FMX |
| FMX | VirtualLive | Event-/VirtualSource unter FMX |
| LCL | ClientDataset | TBufDataset-Musterdaten, Layout und Optionen unter Lazarus |
| LCL | ObjectList | published-RTTI, UTF-8-Bearbeitung und Liveänderungen |
| LCL | VirtualLive | virtuelle Datenereignisse, Paging und Live-Updates |
Die ClientDataset-Demos benötigen keine Datenbank und keine externe .cds-Datei. ThiiSampleClientDataset legt Felder und Datensätze beim Laden selbst an; nach Installation des Design-Packages können dadurch bereits im Formulardesigner Inhalte erscheinen. Das Feld TREE_LEVEL enthält eine kleine, vorab sortierte Beispielhierarchie für die Tree-Abschlussleiste. Das ausgeblendete Feld FOLD_GROUP enthält zusammenhängende gleiche IDs; dieselbe ID erscheint später erneut, damit unabhängige Faltzustände direkt getestet werden können.
Weitere Hinweise: Demoübersicht.
Erste Schritte
- Die Runtime-Packages in der dokumentierten Reihenfolge bauen.
- Für Designer-Unterstützung die passenden Design-Time-Packages bauen und installieren.
- Eine der sechs Demo-DPRs öffnen.
- Zunächst die VCL-ClientDataset-Demo als umfassendsten Referenzfall testen.
Build-Reihenfolge und Skriptparameter: BUILD.md.
Dokumentation
- Architektur und Konzept
- Kurzhilfe für Entwickler
- Demoübersicht
- Funktionsmatrix und Grenzen des Prototyps
- automatisch erzeugter API-Auszug
- Formatierungsrichtlinie für Delphi-Quellen
- aktueller Prüfstatus
- Pascal-Format-Audit
- reproduzierbarer Release-Audit
Namenskonvention
Die Marke bleibt in Delphi-Bezeichnern kleingeschrieben:
ThiiGrid
ThiiDatasetController
Ih5uDataController
Eh5uFactoryErrorGemeinsame Units:
h5u.Grid.Types
h5u.Grid.Columns
h5u.Grid.Data.CorePlattformunits:
Vcl.h5u.Grid
Fmx.h5u.GridMit passenden Delphi Unit Scope Names kann Anwendungscode für die jeweilige Plattform einfach h5u.Grid in uses aufnehmen.
Factory-Regel
Austauschbare Frameworkobjekte werden nicht direkt als feste konkrete Klasse erzeugt. Die Auflösung erfolgt über stabile String-IDs und eine Factory-Kaskade. Jeder Gridinstanz steht ein eigener FactoryScope zur Verfügung. Factory-Ereignisse erhalten den vollständigen Kontext, unter anderem Grid, View, DataController, Column, RowKey und Elementart.
Dadurch können mehrere Gridinstanzen gleichzeitig unterschiedliche Cells, Header, Fixed Cells, Editoren, Caches oder Renderer verwenden, ohne globale Seiteneffekte zu erzeugen.
Prüfstatus
Der Quellstand wurde mit statischen Struktur-, Namespace-, Projektpfad-, DFM/FMX-, Event-, Namens- und Factory-Policy-Prüfungen sowie einem semantischen Test der Tree-Abschlusslogik auditiert. Die konsolidierten Ergebnisse stehen unter Build.
Im Erstellungscontainer war kein Embarcadero-Delphi-Compiler vorhanden. Das Paket enthält deshalb keine BPL/DCU/EXE-Dateien und behauptet keinen erfolgreichen DCC-Build. Der maßgebliche nächste Schritt ist der Build mit der konkret eingesetzten Delphi-Version; dabei können insbesondere versionsabhängige VCL-/FMX- und DesignIDE-Details sichtbar werden.
Noch nicht als vollständige Produktmodule enthalten
Unter anderem sind die folgenden Bereiche im Konzept berücksichtigt, im ersten Teststand aber nicht vollständig umgesetzt:
- vollständiger Filtereditor und Backend-Filterübersetzung,
- mehrstufige Gruppierung mit allen Aggregaten,
- TreeView-, VerticalGrid-, Card- und Pivot-Views,
- komplexe Master-/Detail-SubViews,
- produktionsreifer XLSX/PDF-Export und Druck,
- vollständige Accessibility-Implementierung,
- vollständige FMX-Funktionsparität,
- umfassende Performance- und Plattformtests mit sehr großen realen Datenbeständen.
Die vorhandenen Klassen und Demos sollen zuerst die Kernentscheidungen validieren, bevor diese Module darauf aufgebaut werden.

