Databinding Options for Delphi

If you have never heard of DSharp, I would recommend taking a look. It provides a data binding mechanism, which unlike hcOPF’s does not require developers to create objects that descend from a specific base class.  Unlike LiveBindings introduced in XE2, there seem to be no significant unresolved issues (unless related to Delphi QC reports) and you can use it in versions as early as Delphi 2010 according to the repo.  In contrast, hcOPF’s bindings are available to users of Delphi 7 forward.

The TBindingGroup component is similar to hcOPF’s TUIObjectBinder, but is capable of binding multiple collections of disparate objects to controls. In hcOPF you need one instance of a ThcUIOIbjectBinder component per object class being bound. DSharp’s approach certainly provides additional functionality, but at the cost of less design-time validation. For instance, in order to bind a property you need to specify the SourcePropertyName. In the VirtualTreeviewSample if you drop down the list for the SourcePropertyName you will see a plethora of items, only one of which is remotely applicable (View) when you want to specify View.CurrentItem.LastName. If you select View, there is no assistance from the Object Inspector in guiding you to add the additional “.CurrentItem.LastName”.

DSharp also has presenters for the popular VirtualTreeView control, Developer Express controls as well as most of the stock VCL controls.  There is no documentation, but all the source is of course available.

TiOPF also has some binding capabilities (using the MGM pattern) in the current implementation.  I am not familiar with their implementation.

Why is data binding important?  It is the primary mechanism that allows the removal of code from your UI, enabling implementation of the MVVM and similar patterns.

Anyone know of any other binding frameworks or advanced MVVM implementations?

8 Responses to “Databinding Options for Delphi”

  1. Dave White Says:

    Aurelius from TMS has an object dataset which allows binding objects to the UI. From the Aurelius manual:

    “TMS Aurelius allows you to bind your entity objects to data-aware controls by using a
    TAureliusDataset component. By using this component you can for example display a list
    of objects in a TDBGrid, or edit an object property directly through a TDBEdit or a
    TDBComboBox.

    TAureliusDaset is a TDataset descendant, thus it’s compatible with all data-aware
    controls provided by VCL, the Firemonkey live bindings framework and any 3rd-party
    control/tool that works with TDataset descendants. It also provides most of TDataset
    functionality, like calculated fields, locate, lookup, filtering, master-detail using nested
    datasets, among others.”

  2. Larry Hengen Says:

    @Dave,

    There is also TVirtualDataSet

  3. William Meyer Says:

    Larry, TVirtualDataSet appears to be for .NET?

  4. Amir Says:

    Synopse mORMot framework, a great project which is not only an ORM (Object Relation Model) engine, but also provides very fast RESTful client/server mechanism and SOA (Service Oriented Architecture).
    its REALLY fast and stable and it is carefully documented. it can support huge ranges of database engines at the background and a very fast SQLite engine as default. It provides another data-persistent method over Object-Lists which can be made permanent in files as binary or JSON data. It also provides tools for automatic GUI generations, for presentation, data inputs or editing with ability of localization, and even a powerful reporting engine and more…

    It is also get used in DWS (Delphi Web Script engine) as data persistent layer.

    It is much much faster and much more flexible and powerful and stable than TMS Aurelius in practice.

    you can find more at http://www.synopse.info and mORMot’s SAD documentation.

  5. Yogi Yang Says:

    I don’t know if this link is useful to you or not but do check it….. http://www.mitov.com/products/openwirestudio#overview

  6. Stefan Glienke Says:

    A DSharp MVVM implementation is in the works which is based on Caliburn.Micro.
    This one will be more advanced than the current one in the repo which is prototype state at best. :)

  7. Larry Hengen Says:

    @William,

    If you look at TVirtualDataSet you will see that it’s classes modeled after .NET ones for use in Delphi 2010 and above.

  8. Bunny Says:

    Out of competition. Let’s remember the Spider Object Database.

    Thank you for the DSharp tip.

Leave a Reply