# geheimniswelten/hiigrid architecture

> Architecture diagram of the GitHub repository geheimniswelten/hiigrid, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/geheimniswelten/hiigrid
- Repository: https://github.com/geheimniswelten/hiigrid

## Overview

hiiGrid is a Delphi/Lazarus grid prototype: an application supplies data through an adapter, and a platform-specific ThiiGrid presents and supports interaction with it. The documented architecture separates shared data/controller logic from VCL, FMX, and LCL presentations; it also includes per-grid factory extension points and a separate PropertyEditor. The README documents the shared-core relationship and major features, but no source excerpts were provided, so internal call paths and finer-grained feature ownership are not asserted.

Main entry points: [`Source/Common/h5u.Grid.View.pas`](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.View.pas) (Grid core), [`Source/VCL/Vcl.h5u.Grid.pas`](https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.Grid.pas) (VCL grid), [`Source/FMX/Fmx.h5u.Grid.pas`](https://github.com/geheimniswelten/hiigrid/blob/main/Source/FMX/Fmx.h5u.Grid.pas) (FMX grid), [`Source/LCL/Lcl.h5u.Grid.pas`](https://github.com/geheimniswelten/hiigrid/blob/main/Source/LCL/Lcl.h5u.Grid.pas) (LCL grid)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Grid presentations"]
  node_vclgrid["VCL grid<br/>[Vcl.h5u.Grid.pas]"]
  node_fmxgrid["FMX grid<br/>[Fmx.h5u.Grid.pas]"]
  node_lclgrid["LCL grid<br/>[Lcl.h5u.Grid.pas]"]
end

subgraph group_core["Shared grid core"]
  node_gridcore["Grid core<br/>[h5u.Grid.View.pas]"]
  node_gridcolumns["Columns"]
  node_layout["Layout and sizing"]
  node_selection["Selection and navigation"]
  node_editing["Common editors"]
end

subgraph group_data["Data sources"]
  node_dataset["Dataset adapter"]
  node_objects["Object-list adapter"]
  node_memory["Memory adapter"]
  node_virtual["Virtual adapter"]
  node_sampledata["Sample dataset"]
end

subgraph group_extensions["Extensions"]
  node_factory["Factory scope"]
  node_styles["Platform styles"]
  node_propertymodel["Property editor model"]
  node_propertyvcl["VCL property editor"]
  node_propertyfmx["FMX property editor"]
  node_designer["Form designer"]
end

node_user(("Application developer"))

node_user -->|"uses"| node_vclgrid
node_user -->|"uses"| node_fmxgrid
node_user -->|"uses"| node_lclgrid
node_vclgrid -->|"uses shared core"| node_gridcore
node_fmxgrid -->|"uses shared core"| node_gridcore
node_lclgrid -->|"uses common core"| node_gridcore
node_user -->|"selects data source"| node_dataset
node_user -->|"selects data source"| node_objects
node_user -->|"selects data source"| node_memory
node_user -->|"selects data source"| node_virtual
node_user -->|"configures extensions"| node_factory
node_user -->|"uses"| node_propertyvcl
node_user -->|"uses"| node_propertyfmx
node_user -->|"uses"| node_designer
node_user -->|"uses"| node_sampledata

click node_vclgrid "https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.Grid.pas"
click node_fmxgrid "https://github.com/geheimniswelten/hiigrid/blob/main/Source/FMX/Fmx.h5u.Grid.pas"
click node_lclgrid "https://github.com/geheimniswelten/hiigrid/blob/main/Source/LCL/Lcl.h5u.Grid.pas"
click node_gridcore "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.View.pas"
click node_gridcolumns "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Columns.pas"
click node_layout "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Layout.pas"
click node_selection "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Selection.pas"
click node_editing "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Editors.pas"
click node_dataset "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Dataset.pas"
click node_objects "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Objects.pas"
click node_memory "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Memory.pas"
click node_virtual "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Virtual.pas"
click node_factory "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Factory.pas"
click node_styles "https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.Grid.Styles.pas"
click node_propertymodel "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.PropertyEditor.pas"
click node_propertyvcl "https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.PropertyEditor.pas"
click node_propertyfmx "https://github.com/geheimniswelten/hiigrid/blob/main/Source/FMX/Fmx.h5u.PropertyEditor.pas"
click node_designer "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.FormDesigner.pas"
click node_sampledata "https://github.com/geheimniswelten/hiigrid/blob/main/Source/Design/h5u.Grid.SampleData.pas"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_vclgrid,node_fmxgrid,node_lclgrid toneBlue
class node_gridcore,node_gridcolumns,node_layout,node_selection,node_editing toneAmber
class node_dataset,node_objects,node_memory,node_virtual,node_sampledata toneMint
class node_factory,node_styles,node_propertymodel,node_propertyvcl,node_propertyfmx,node_designer toneRose
class node_user toneIndigo
```

## Components

### Grid presentations

- [VCL grid](https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.Grid.pas): `Source/VCL/Vcl.h5u.Grid.pas`
- [FMX grid](https://github.com/geheimniswelten/hiigrid/blob/main/Source/FMX/Fmx.h5u.Grid.pas): `Source/FMX/Fmx.h5u.Grid.pas`
- [LCL grid](https://github.com/geheimniswelten/hiigrid/blob/main/Source/LCL/Lcl.h5u.Grid.pas): `Source/LCL/Lcl.h5u.Grid.pas`

### Shared grid core

- [Grid core](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.View.pas): `Source/Common/h5u.Grid.View.pas`
- [Columns](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Columns.pas): `Source/Common/h5u.Grid.Columns.pas`
- [Layout and sizing](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Layout.pas): `Source/Common/h5u.Grid.Layout.pas`
- [Selection and navigation](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Selection.pas): `Source/Common/h5u.Grid.Selection.pas`
- [Common editors](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Editors.pas): `Source/Common/h5u.Grid.Editors.pas`

### Data sources

- [Dataset adapter](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Dataset.pas): `Source/Common/h5u.Grid.Data.Dataset.pas`
- [Object-list adapter](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Objects.pas): `Source/Common/h5u.Grid.Data.Objects.pas`
- [Memory adapter](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Memory.pas): `Source/Common/h5u.Grid.Data.Memory.pas`
- [Virtual adapter](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Data.Virtual.pas): `Source/Common/h5u.Grid.Data.Virtual.pas`
- [Sample dataset](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Design/h5u.Grid.SampleData.pas): `Source/Design/h5u.Grid.SampleData.pas`

### Extensions

- [Factory scope](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.Grid.Factory.pas): `Source/Common/h5u.Grid.Factory.pas`
- [Platform styles](https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.Grid.Styles.pas): `Source/VCL/Vcl.h5u.Grid.Styles.pas`
- [Property editor model](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.PropertyEditor.pas): `Source/Common/h5u.PropertyEditor.pas`
- [VCL property editor](https://github.com/geheimniswelten/hiigrid/blob/main/Source/VCL/Vcl.h5u.PropertyEditor.pas): `Source/VCL/Vcl.h5u.PropertyEditor.pas`
- [FMX property editor](https://github.com/geheimniswelten/hiigrid/blob/main/Source/FMX/Fmx.h5u.PropertyEditor.pas): `Source/FMX/Fmx.h5u.PropertyEditor.pas`
- [Form designer](https://github.com/geheimniswelten/hiigrid/blob/main/Source/Common/h5u.FormDesigner.pas): `Source/Common/h5u.FormDesigner.pas`

### Other components

- **Application developer**

## Connections

- Application developer → VCL grid: uses (evidence: `README.md`)
- Application developer → FMX grid: uses (evidence: `README.md`)
- Application developer → LCL grid: uses (evidence: `README.md`)
- VCL grid → Grid core: uses shared core (evidence: `README.md`)
- FMX grid → Grid core: uses shared core (evidence: `README.md`)
- LCL grid → Grid core: uses common core (evidence: `README.md`)
- Application developer → Dataset adapter: selects data source (evidence: `README.md`)
- Application developer → Object-list adapter: selects data source (evidence: `README.md`)
- Application developer → Memory adapter: selects data source (evidence: `README.md`)
- Application developer → Virtual adapter: selects data source (evidence: `README.md`)
- Application developer → Factory scope: configures extensions (evidence: `README.md`)
- Application developer → VCL property editor: uses (evidence: `README.md`)
- Application developer → FMX property editor: uses (evidence: `README.md`)
- Application developer → Form designer: uses (evidence: `README.md`)
- Application developer → Sample dataset: uses (evidence: `README.md`)
