Persistent Forms
Class library for GUI development
Visual Programming Armoury is shiped with a class library and visual design tool entitled Persistent Forms. This library lets you easily design GUI that interacts with the object model defined in Persistence Smith. You can build a form that lets you query, display, modify and delete data from a combination of persistent classes. Persistent Forms takes over a job from VPA and Persistence Smith and keeps up the tool integration concept.Persistent Forms is ideal for dynamic, event-driven user interfaces. Unlike other C++ frameworks and APIs, Persistent Forms applications build user interfaces on the fly. Controls are added to the user interface one at a time, thereby allowing more, less, or different controls to present depending on conditional code. The event model in Persistent Forms does a good job of hiding the Windows messaging pipe from users and creators of controls. However, one of the important features of Persistent Forms is that you are free to work at whatever level of abstraction you like. This means that you are allowed full access to the Windows API.
High-level GUI primitives
There are several user interface primitives in Persistent Forms. Namely package includes form, table, tree, query, utilities for aid data input. These visual components provide search, sort, navigation and editing services for persistent objects and their sets. Each component is parameterized by persistent class or by another component.The core primitive is the interactive form. By this medium one object may be unambiguously represented in GUI. Form creates and arranges window controls accordingly to order and data types of the persistent attributes. For example, edit represents string, number or date/time data types, check box produces boolean value, combo box acts out as value list. You may rearrange the form layout at run-time by means of special-purpose designer. Form is parameterized by a persistent class. Form is able to retrive object of a given identity, create new object, delete, modify it as well as to supply data field conforming to persistent attribute of complex type with aid input.
Set of instances of the persistent class may be graphically represented in a table or tree view. Kind of appearance is controlled by appropriate class property. The abstraction of the object set in Persistent Forms encapsulates services to populate, cache, navigate, search and sort data. Object set is parameterized by interactive form. Once navigation completed, object set supplies identity of targeted object to interactive form. Form reconstructs on its own, that is, implements object of adequate class. Although object set may present instances of base type, the form by itself instantiates object of the class terminated the hierarchy.
Query component is exteriorly similar to the interactive form with the difference that it has the panel of order expression builder. Query is parameterized by object set and provides the last with searh and sort predicates.
You may develop your own inteface solution to present binary data, graphics, execute calculations in unique manner, adjust common layout, relationships between objects, queries, validation criteria, etc. Also you may animate your design with handlers of predefined events and introduce your own events. When stabilized, such solution may be easily transformed into standard component for future reuse.
Object model
Persistent Forms take full advantage of object model defined in Persistence Smith. Minimal efforts is needed to implement user interface if the application schema work out properly. You may design explorer-like application that acts business notions and tasks out, define master-detail dialogues as reflection of class relationships, create popup menu with actions corresponding its class public methods. Also you parameterize application procedures with objects of the dedicated schema's types and run authorization tasks on the object model.Run-time designer
Run-time designer is a quasi-resource editor for Visual Programming Armoury applications. You can use run-time designer to customize an application for a particular user. You may use run-time designer to customize the size, arrangement and appearance of an application's objects, including relabeling fields and push buttons. Also you can synchronize the growing of an object with its parent area. With run-time designer you profile settings of a runtime application without changing source code.