BoldForDelphi

March 29, 2026 · View on GitHub

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

AdapterPackageNotes
FireDACBuilt-inRecommended. Included with Delphi
UniDACOptionalRequires UniDAC license. Set UniDAC environment variable

GUI Component Integrations

IntegrationPackageNotes
DevExpressdclBoldDevEx.dpkBold-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):

DependencyPathPurpose
DUnitXC:\Attracs\DUnitX\SourceUnit testing framework
Delphi-MocksC:\Attracs\Delphi-Mocks\SourceMocking framework for interface testing
DelphiCodeCoverageC:\Attracs\DelphiCodeCoverage\Code coverage reporting

Environment variables DUnitX and DelphiMocks are set automatically by run_coverage.ps1.

Unit Tests and Code Coverage

codecov

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 (requires CODECOV_TOKEN environment variable)

Prerequisites:

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

PackageTypeDescription
dclBold.dpkDesign-timeMain Bold components package

Contributing

  1. Report issues - Use GitHub Issues for bugs and feature requests
  2. Submit PRs - Fork the repo and submit pull requests
  3. Documentation - Help improve docs and examples
  4. Testing - Report compatibility issues with different databases/Delphi versions
  5. 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)

SourcePurpose
dprojCurrent version (shown in About dialog)
CHANGELOG.mdVersion history
Git tagsBackup/release markers

Release workflow:

  1. Move [Unreleased] items in CHANGELOG.md to new version section
  2. Update version in dproj (Project > Options > Version Info)
  3. Create git tag: git tag v25.12.1

Resources

License

MIT License - Source code made available by Embarcadero.

Original Version: 4.0.1.0 Bold for Delphi, Release 4.0 (2004-04-23)