The PPJ Framework is not simply a supporting library for ported applications. It is also a complete and mature framework that makes it possible for complex business applications to function correctly using the .NET Framework. It takes the best of both worlds and puts it together. All the controls and classes in the PPJ Framework are directly based on existing .NET classes and controls. Therefore, all the great features that are available to all .NET classes and controls are also available to the ported code.
But the PPJ Framework also adds a lot of functionality (most of it is behind the scenes) and fixes a lot of bugs or incomplete features coming from the .NET Framework. By itself the .NET Framework is not really ready for enterprise level business applications, it needs a lot of additional work to achieve even the most basic functionality that is simply available to SQLWindows/Team Developer developers.
To name a few:
Masked editing, Typed controls, Consistent MDI support, Transparent SQL support, Expression Interpreter, Advanced Tab Control, Advanced Grid Control, Consistent Validation system, DDE Support, Inherited Properties support in the designer, etc. etc.
Ported applications benefit from the improvements in the PPJ Framework without having to modify any line of code. The most important improvements on existing controls are listed in the table below:
The new SalNavigationBar control replaces in full the new Navigation Bar added in Unify Team Developer 6.
Table Window Control
The new SalTableWindow control is based of the FlexGrid.NET control and adds a lot of new features to the existing code.
The new SalQuickTabs control is based on the TabControl (Common Controls) in the .NET Framework.
Ported applications are immediately Unicode compliant. The PPJ Framework adds new options to also support Unicode databases and files.
The PPJ Framework fixes a large number of bugs in the .NET Framework, mostly in the System.Windows.Forms namespace.
Object Oriented Types
All Sal and Sql functions are also implemented as object oriented functions allowing for ported and new code to use the new syntax seamlessly.
The powerful built-in interpreter allows custom parsers to be plugged in in order to support any syntax.