Bold for 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.
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
- 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.0 Athens (packages/Delphi13/)
- Delphi 12.3 Athens (packages/Delphi12.3/)
- Delphi 12.1 CE Athens (packages/Delphi12.1_CE/)
- 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 | dclBoldDevEx.dpk | Bold-aware DevExpress components. Requires DevExpress VCL license with full source code |
Unit Test Dependencies
The unit test project requires these external frameworks (not needed for production use):
| Dependency | Path | Purpose |
|---|---|---|
| DUnitX | C:\Attracs\DUnitX\Source |
Unit testing framework |
| Delphi-Mocks | C:\Attracs\Delphi-Mocks\Source |
Mocking framework for interface testing |
| DelphiCodeCoverage | C:\Attracs\DelphiCodeCoverage\ |
Code coverage reporting |
Environment variables DUnitX and DelphiMocks are set automatically by run_coverage.ps1.
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-03-29):
- Tests: 2067 total (2065 passing, 2 ignored, 0 failed)
- Code Coverage: 56.8% (32,412 / 57,151 lines covered)
Running Tests with Code Coverage
cd UnitTest
.\run_coverage.ps1
This 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.
Source 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 streaming
Key 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
Version format: YY.MM.patch (e.g., 25.12.0)
| Source | Purpose |
|---|---|
| dproj | Current version (shown in About dialog) |
| CHANGELOG.md | Version history |
| Git tags | Backup/release markers |
Release workflow:
- Move
[Unreleased]items in CHANGELOG.md to new version section - Update version in dproj (Project > Options > Version Info)
- Create git tag:
git tag v25.12.1
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)