Bold for Delphi
. Delphi Model-Driven Architecture MDA framework and ORM. Design your domain model in UML and generate Delphi classes and database schemas. Features OCL Object Constraint Language for queries and derived attributes, automatic UI synchronization, built-in undo/redo, optimistic locking, and object subscriptions. Persistence via FireDAC, UniDAC or XML, supporting most modern databases. This fork adds Unicode and modern Delphi support. Official Embarcadero repo is for Delphi 7.
README
BoldForDelphi
Bold is a Model Driven Architecture (MDA) framework and Object-Relational Mapping (ORM) tool for Delphi. It allows you to start with a UML model of your application and execute it with a sophisticated object-relational mapping layer, OCL query language, change synchronization, and IDE-integrated tools.
Use Cases
Bold for Delphi is best suited for:
- Complex Domain Models - Applications with many interrelated business entities, inheritance hierarchies, and associations
- Data-Intensive Business Applications - ERP, logistics, CRM, inventory management, financial software
- Rich Query Requirements - OCL enables expressive queries like
orders->select(status = 'Pending' and total > 1000) - Long-Lived Desktop Applications - Automatic UI updates when data changes via the subscription system
- Rapid Prototyping - Define your model in UML, generate code, and have a working database-backed application quickly
Getting Started
Install with a package manager: tms install bero.boldfordelphi (TMS Smart Setup) or
dpm install bero.BoldForDelphi <project>.dproj (DPM, from the public feed at
delphi.dev). Details and the manual route: Installation.
- Documentation - Full documentation including concepts, class reference, and FAQ.
- Quick Start Guide - Step-by-step instructions to install Bold, build your first model, and run the MasterDetail example application.
- Roadmap - Development plans, supported features, and future directions for Bold for Delphi.
- Changelog - Version history and release notes.
Supported Delphi Versions
- Delphi 13.1 Florence (packages/Delphi13/) - also serves 13.0 Community Edition (same compiler major)
- Delphi 12.3 Athens (packages/Delphi12.3/)
- Delphi 11.3 Alexandria (packages/Delphi11.3/)
Dependencies
Platform
Bold for Delphi is Windows only (Win32/Win64). It is not compatible with cross-platform targets (Linux, macOS, iOS, Android).
Runtime Dependencies
Bold for Delphi has no external runtime dependencies. All required functionality is included in the source.
Database Adapters
| Adapter | Package | Notes |
|---|---|---|
| FireDAC | Built-in | Recommended. Included with Delphi |
| UniDAC | Optional | Requires UniDAC license. Set UniDAC environment variable |
GUI Component Integrations
| Integration | Package | Notes |
|---|---|---|
| DevExpress | NotworkingProjects/dclBoldDevEx.dpk |
Bold-aware DevExpress components (Source/BoldAwareGUI/BoldDevex). Not part of the release packages; the project needs a DevExpress VCL license with full source code and is currently unmaintained |
Unit Test Dependencies
The unit test projects (UnitTest/) require these external frameworks (not needed for production use):
| Dependency | Environment variable | Purpose |
|---|---|---|
| DUnitX | DUnitX |
Unit testing framework |
| Delphi-Mocks | DelphiMocks |
Mocking framework for interface testing |
| DelphiCodeCoverage | (expected at C:\Attracs\DelphiCodeCoverage\) |
Code coverage reporting (optional) |
Run UnitTest\setup-tests.ps1 to clone DUnitX and Delphi-Mocks and set the environment variables automatically — see UnitTest/README.md for details.
Unit Tests and Code Coverage
Unit tests are located in UnitTest/ and use the DUnitX framework. Code coverage is tracked on Codecov.io.
Current Statistics (as of 2026-10-12):
- Tests: 2243 total (2243 passing, 0 ignored, 0 failed)
- Code Coverage: 59.9% (36,558 / 61,059 lines covered, measured 2026-10-23)
Running Tests with Code Coverage
cd UnitTest
.\run_coverage.ps1This builds the test project, runs all tests, generates a coverage report, and opens it in your browser.
Options:
-SkipBuild- Skip compilation, run coverage on existing executable-OpenReport:$false- Don't open the report automatically-Upload- Upload results to Codecov.io (requiresCODECOV_TOKENenvironment variable)
Prerequisites:
- DelphiCodeCoverage installed at
C:\Attracs\DelphiCodeCoverage\
Results are generated in UnitTest/coverage_report/. Open CodeCoverage_summary.html to view the local report.
Running Tests Against Several Database Engines
UnitTest/UnitTest.ini selects the engine (SQLite in-memory by default; SQLServer, Interbase, Firebird
and PostgreSQL sections are provided). The environment variable BOLD_TEST_ENGINE overrides the ini, and
UnitTest/run_matrix.ps1 uses it to run the suite on each engine in turn, plus the UniDAC build when
UniDAC is installed. PostgreSQL runs on the UniDAC build only: FireDAC needs libpq, which current PostgreSQL
releases ship for 64-bit only, and the test executable is Win32.
cd UnitTest
.\run_matrix.ps1 # FireDAC on SQLite and SQL Server; UniDAC (if installed) on the same and PostgreSQL
.\run_matrix.ps1 -Engines SQLite # one engine
.\run_matrix.ps1 -SkipBuild -Filter Test.BoldBatchQueriesSource Organization
Source/
????????? BoldAwareGUI/ # GUI components and control packs
??? ????????? BoldControls/ # Visual controls (Grid, Edit, ComboBox, etc.)
??? ????????? BoldDevex/ # DevExpress integration (requires DevExpress license)
??? ????????? ControlPacks/ # Renderer/follower pattern for UI binding
??? ????????? Core/ # GUI base functionality
????????? Common/ # Shared infrastructure
??? ????????? Core/ # Base classes (BoldBase, BoldContainers, BoldDefs)
??? ????????? Subscription/ # Observer pattern (BoldSubscription, BoldDeriver)
??? ????????? Support/ # Utilities (BoldUtils, BoldGuard, BoldIndex)
??? ????????? COM/ # COM infrastructure
??? ????????? Logging/ # Log handling
??? ????????? IDE/ # Common IDE support
????????? ObjectSpace/ # Object model runtime
??? ????????? BORepresentation/ # Business object representation
??? ????????? Core/ # BoldElements, BoldSystem
??? ????????? Ocl/ # OCL parser and evaluator
??? ????????? RTModel/ # Runtime type information
??? ????????? Undo/ # Undo/redo mechanism
????????? Persistence/ # Database persistence
??? ????????? Core/ # Persistence controllers and handles
??? ????????? DB/ # Database persistence base
??? ????????? FireDAC/ # FireDAC adapter (recommended)
??? ????????? SOAP/ # SOAP persistence
??? ????????? Propagation/ # Change propagation
????????? PMapper/ # Object-relational mapping
??? ????????? SQL/ # SQL generation
??? ????????? Default/ # Default mappers
??? ????????? DBEvolutor/ # Database schema evolution
????????? Handles/ # Handle system for UI binding
????????? MoldModel/ # Model representation and code generation
????????? UMLModel/ # UML metamodel and editor
????????? ValueSpace/ # Value interfaces and streamingKey Packages
| Package | Type | Description |
|---|---|---|
| dclBold.dpk | Design-time | Main Bold components package |
Contributing
- Report issues - Use GitHub Issues for bugs and feature requests
- Submit PRs - Fork the repo and submit pull requests
- Documentation - Help improve docs and examples
- Testing - Report compatibility issues with different databases/Delphi versions
- Spread the word - Blog posts, conference talks, social media
Have suggestions for the roadmap? Open an issue on GitHub or discuss on Discord.
Versioning
Releases are tagged Year.Month.build, unpadded and without a prefix (e.g. 26.9.0; the next
one is 26.9.1 or 26.10.0). The tag is the release identity: TMS Smart Setup and DPM resolve
installable versions from it, so tags must parse as semantic versions.
| Source | Purpose |
|---|---|
| Git tag | The release; what package managers install |
version.txt, packaging/*.yaml, the three dclBold.dproj |
Carry the same number (shown in the About dialog and by the package managers) |
| CHANGELOG.md | Version history (also rendered on the documentation site) |
The full procedure, from changelog to GitHub release, package-manager publication and
announcement, is packaging/release-checklist.md.
Resources
- Documentation: https://bero.github.io/BoldForDelphi/
- GitHub: https://github.com/bero/BoldForDelphi
- Issues: https://github.com/bero/BoldForDelphi/issues
- Discord: https://discord.gg/C6frzsn
- Wiki: https://delphi.fandom.com/wiki/Bold_for_Delphi
- GitHub Wiki: https://github.com/bero/BoldForDelphi/wiki
- Blog: http://boldfordelphi.blogspot.com/
License
MIT License - Source code made available by Embarcadero.
Original Version: 4.0.1.0 Bold for Delphi, Release 4.0 (2004-04-23)

