hcOPF is Released!

I have been working towards this for a long time now.  Initially I was undecided what license to use, then it was a matter of wanting to complete some code improvements.  Finally I just decided it was never going to be perfect, especially since I don’t have that much time to work on it at present, so I finally kicked it out of the door.

The framework certainly works.   I have numerous applications and success stories that testify to that.  It does however have some holes.  The biggest of which is Unit Test coverage.  I started writing the framework long before Agile methodology became the rage, and although I see the value of writing tests first, it’s a little harder to write them afterwards.  It’s also very challenging to write tests for GUI elements.

I am also in the process of changing the way the framework deals with Object IDs aka primary keys.  Initially I used an Attribute property to specify if a column was involved in the primary key (apPrimaryKey).  I later introduced the concept of a ThcOID class to encapsulate primary key handling in order to better facilitate keys consisting of multiple attributes, natural keys, and keys made up of non-integer data types.  Currently you have to use both methods for the framework to function correctly since the conversion to ThcOID is not complete.

The design-time aspects of the framework have also undergone an evolution and are no longer complete.  I used to only support Attribute/UI Control Name/UI Control Property Name elements in the UIObjectBinder and used RTTI to set and get the values from the UI Control.  Then I introduced the MGM pattern, providing a much more flexible framework capable of supporting almost any non data-aware control.  If you use a ThcMediator descendant with the ObjectBinder, you must establish the bindings in code.  The same applies to design-time functionality for the DevXGrid.  All column bindings for a view must be created in code.  I typically use a previously written method as a template for a new one.  At some point I would like to have design-time support implemented, or at the very least have some sort of wizard to generate the code.

The project is hosted on SourceForge at http://sourceforge.net/projects/larryhengensopf/.  If you have any issues with the framework, pop me an email.

Leave a Reply