Session E-PROM
ProMatrix Application Wizard
Joseph E. Lawson
Lawson-Smith Corp.
Introduction
ProMatrix revolutionizes the development of professional FoxPro applications. With ProMatrix you can create a powerful FoxPro application in a fraction of the time it would take to create the same application on your own. Some developers find that ProMatrix cuts their application development time by more than 90%.
This presentation provides an overview of how ProMatrix reduces development time and makes applications more powerful. It describes how ProMatrix organizes and automates the creation of professional FoxPro applications. We will be demonstrating the capabilities of both ProMatrix for FoxPro 2.6 and our new Visual ProMatrix for Visual FoxPro 3.0.
Our presentation will end with a description of how ProMatrix for FoxPro 2.6 was converted to Visual ProMatrix. We will point out what we have learned about converting FoxPro 2.6 applications to Visual FoxPro 3.0 in the hope that you will benefit from our experience.
Contents
What is ProMatrix?
ProMatrix is a FoxPro for Windows application development system that allows you to easily and quickly develop professional FoxPro applications with little or no programming.
ProMatrix:
Why You Need ProMatrix
FoxPro is an extremely powerful database management system that can be used by:
Because FoxPro must serve all users, it is not designed and organized solely for application development. Application developers must seek out and master the parts of FoxPro they need, and then bring those parts together to form an application.
Developers have long needed a product that organizes FoxPro for application development. ProMatrix is that product.
ProMatrix turns FoxPro into an application-specific database management system. ProMatrix adds to and organizes FoxPro's rich set of application development tools to create a powerful, specialized application development platform.
ProMatrix provides the building blocks and tools that every professional FoxPro application should have. ProMatrix lets you, as a FoxPro developer, concentrate your time and financial resources on your applications unique functionality knowing that ProMatrix will take care of everything else.
How ProMatrix Organizes Application Development
ProMatrix is designed and organized to focus on application development. ProMatrix leads you through the creation of an application and organizes access to all application objects.
Tools Menu
The ProMatrix Tools menu puts all of the tools needed to create an application in one place. The Tools menu contains the ProMatrix Menu Builder, Data Builder, Object Builder, Report Builder, Help Builder and Product Builder. These are all the tools you need to create menus, tables, forms, reports, queries and labels and to package your application for distribution to your customers.
Object Builder
The ProMatrix Object Builder organizes the development of all the objects in an application. The Object Builder is the heart of ProMatrix application development and the hub from which you build a FoxPro application.
You design an applications menu to organize the application for end-users. The Object Builder displays a "picture" of the menu to organize application development for you.
You create or modify the objects that will run from a menu option by simply selecting the option on the menu displayed by the Object Builder. Upon selecting the menu option, you enter the ProMatrix Object Editor for the object. The Object Editor contains everything you need to create the object.
The Object Builder organizes access to every form, program, query, report, label, pad and procedure called from a menu option.
Whenever you add menu options through the ProMatrix Menu Builder, the options are automatically added to the picture of the menu displayed by the Object Builder. You can then create the objects for the new menu options through the Object Editors.
Object Editors
While the Object Builder organizes the overall development of an application, ProMatrixs unique Object Editors organize the development of each application object. A ProMatrix Object Editor provides access to everything needed to create an object.
When you select a menu option on the Object Builder for the first time, you choose the type of object to create. The objects you can create are form sets, browses, programs, reports, queries, labels, pads and procedures. After you choose the object type, you enter an Object Editor. Each object type has its own Object Editor designed specifically for that type.
The ProMatrix Object Editors make application development faster and more convenient, and also serve as a checklist, or reminder, of everything needed to create each type of application object.
When you create a form set, ProMatrixs form set Object Editor gives you access to dialogs that let you:
The form set Object Editor automatically adds the form set to the FoxPro Project Manager.
Without ProMatrix, you have to go to many places in FoxPro to create a form set. And, of course, ProMatrix's Object Editor creates forms with functionality that would take many months to duplicate from scratch in FoxPro.
Called Objects
The ProMatrix Object Editors also organize the development of called objects. A "called object" is an application object called by another object. For example, if a form set calls a program from a push button valid snippet, that program is a called object.
An objects Object Editor contains a list box in which you can enter the names of the objects it calls. When you select a called object on the list, you can access the Object Editor for that object.
Normally, a developer needs to work on an object and the objects it calls at the same time. Until ProMatrix, no application development system provided a way to link called and calling objects so they could be easily accessed together. ProMatrix makes this link through the Object Editors.
Every objects Object Editor shows you the objects that it calls directly. In turn, a called objects Object Editor can list objects that it calls directly. There is no limit to the depth to which called objects can be stacked through the Object Editors.
Data Builder
The ProMatrix Data Builder is a fully-active data dictionary that organizes the creation and maintenance of the data in an application. The Data Builder also organizes the entry and maintenance of the rules that govern an applications data.
The ProMatrix Data Builder provides one place to define all the properties of an applications tables and fields. You dont have to write a single line of code to create very sophisticated validation and integrity properties for table fields.
As you develop an application, you can access the applications data through the Data Builder option on the ProMatrix Tools menu. When end-users run your application, they can have the same access to the applications data through the Data Manager option on the applications Admin menu. ProMatrix is the only FoxPro application generator that puts a data dictionary dialog in end-applications.
The ProMatrix Data Builder is a key component of ProMatrix applications. The Data Builder provides functionality that permeates applications as you will see later in this Users Guide.
How ProMatrix Automates Application Development
The following examples illustrate some of the major ways ProMatrix makes application development automatic. In reviewing these examples, youll appreciate ProMatrix even more if you consider the time it would take you to create the features that ProMatrix provides automatically.
Creating New Applications
When you begin the development of a new application, it only takes ProMatrix a few minutes to automatically create:
Creating Forms
When you create a form, ProMatrix automatically:
How ProMatrix Manages Application Development
ProMatrix has many tools that help you manage application development. You can include many of these tools in the applications you create with ProMatrix. ProMatrix manages and controls application development in the following ways:
How ProMatrix Augments and Enhances Applications
ProMatrix organizes, automates and manages FoxPro application development. If that was all ProMatrix did, it would be of tremendous value to FoxPro developers. However, ProMatrix does much more.
ProMatrix automatically puts powerful tools and features in applications that would require many months, if not years, to create yourself. Here is a list of some of the more important application tools and features that ProMatrix includes in applications:
ProMatrix Interface
When you run ProMatrix, the ProMatrix menu system replaces the FoxPro menu system. You can find the tools you need to develop professional FoxPro applications on the ProMatrix menu. Only in rare circumstances will you need to access the FoxPro system menu.
Note If you need to access the FoxPro menu at any time, you can do so by selecting the Exit to FoxPro option on the ProMatrix File menu. You can return to ProMatrix and continue developing your application by selecting Return to ProMatrix on the FoxPro File menu.
Like the applications it creates, ProMatrix is an event-driven, or modeless, FoxPro application. You can display multiple modeless windows on your computer screen at the same time and move freely among them.
ProMatrix uses all of the Administrative Tools that it puts into applications. Therefore, as you work with ProMatrix, you can experience the look, feel and features of the applications you are creating.
Creating An Application in ProMatrix
ProMatrix is organized so that creating an application is a step-by-step process. The basic steps are shown below. If you complete each step in the order shown, youll have a FoxPro for Windows application in record time.
To create an application in ProMatrix
1. New Project Creation
Select the New Project option on the ProMatrix File menu to create a starter application.
2. Menu Builder
Select the Menu Builder option on the ProMatrix Tools menu and enter your applications menu prompts. ProMatrix will insert menu commands.
3. Data Builder
Select the Data Builder option on the ProMatrix Tools menu to create your applications tables and to define field properties.
4. Object Builder
Use the Object Builder window and the Object Editors to create the application objects.
5. Report Builder
Select the Report Builder option on the ProMatrix Tools menu to create application reports.
6. Help Builder
Select the Help Builder option on the ProMatrix Tools menu to create Windows-style Help for your applications menus and forms.
7. Security Builder
Select the Security Builder option on the ProMatrix Tools menu to set up your applications Menu and Controls security.
8. Product Builder
Select the Product Builder option on the ProMatrix Tools menu to package your application for distribution to users.
Thats it! Nothing could be simpler. Behind the scenes while you are building your application, ProMatrix will be automatically adding features and FoxPro code that will make your application truly professional.
Creating Visual ProMatrix
Creating Visual ProMatrix has given us a unique insight into the problems and opportunities of converting a FoxPro 2.6 application to Visual FoxPro 3.0. We would like to briefly share what we have learned with you.
Basic Design
Important Point Whatever tool a developer uses to create an application, the end objective is the same. The end objective is to create an application that:
Is thoughtfully organized with a natural interface,
Provides the functionality needed, and
Is easy as possible to use.
In the case of Visual ProMatrix, we recognized that the product's objective is to help developers create powerful applications. This is the same as the ProMatrix for FoxPro 2.6 objective. Nothing had changed in this regard.
After conducting a focus group study and sampling current ProMatrix users, we concluded that the overall organization, design and interface of ProMatrix should stay the same with Visual ProMatrix. We concluded that the design of ProMatrix was appropriate regardless of the tool ProMatrix used to create applications. The basic ProMatrix design could be used with any development tool: Visual dBase, Visual Basic, Delphi, etc.
Basic Features
We also concluded that the basic application development tools of ProMatrix such as the Menu Builder, Data Builder, Object Builder, Report Builder, Help Builder and Product Builder were as needed in Visual FoxPro 3.0 as they were in FoxPro 2.6.
Visual FoxPro 3.0 Issues
After concluding that the basic design and basic features of Visual ProMatrix should mirror ProMatrix 2.6, we identified the Visual FoxPro 3.0 issues that we had to contend with. Here are the major issues we found that we needed to address:
OOP is, of course, the cornerstone of Visual FoxPro 3.0. ProMatrix users will expect their Visual ProMatrix applications to be fully OOP'd. We decided to fully OOP ProMatrix itself because of the advantages the OOP paradigm gives us.
The main characteristic of OOP that we felt was advantageous was inheritance. Any piece of a Visual FoxPro 3.0 application that is not OOP'd, doesn't have inheritance.
We set an objective to make ProMatrix applications fully OOP'd, but we also set an objective to not require a Visual ProMatrix user to have to become an OOP guru. Through the design and documentation of Visual ProMatrix, we felt we could help developers get Visual FoxPro 3.0 applications up and running quickly and at the same time expose them to the essential OOP concepts required to build "application objects".
When we first saw what passed for a data dictionary in Visual FoxPro 3.0, we were less than impressed. We attended conferences where speakers sang the praises of the Visual FoxPro 3.0 data dictionary, but we were still not impressed. We realized that because we had been working with a significantly more powerful data dictionary for some time, we didn't share the enthusiasm of others who apparently had not been working with a data dictionary in the past.
We could have implemented our data dictionary in Visual FoxPro 3.0 with no link to the Visual FoxPro 3.0 DBC. However, we realized that would be viewed negatively by the market. Therefore, after considerable study of alternatives, we decided to adopt the DBCX standard for integrating our data dictionary with the DBC. There are other approaches to extending the data dictionary that we felt were quite good, but marketing reasons really gave us no choice but to use the DBCX approach.
Whenever we demoed Visual FoxPro 3.0 to FoxPro developers, we heard the biggest "oohs" and "aahs" when we demonstrated the "visual" tools, or capabilities, of Visual FoxPro 3.0. Visual "tools" include the database designer, form designer, data environment, etc. Accordingly, we concluded that an application methodology that prevented users from using all the new visual tools would not be appropriate for the typical ProMatrix user.
We quickly learned that with the OOP paradigm the first thing the developer must do when creating an application is construct the developer's own base classes since the Visual FoxPro 3.0 base classes can't be modified. Then, before jumping into application development, the developer should take a stab at creating libraries of form and control classes that reflect the kinds of forms and controls the developer plans to use in applications. Spending some time planning and constructing good class libraries is key to OOP implementation. However, the beginning Visual FoxPro 3.0 developer should expect to modify his beginning classes considerably as the developer learns the ins and outs of Visual FoxPro 3.0.
Of course, the FoxPro developer can save considerable time and anguish by using the class libraries provided by Visual ProMatrix.
Our development staff used the "functional" conversion approach to move existing ProMatrix screens into the Visual FoxPro 3.0 OOP form environment. Then, they "cleaned up" the converted forms as follows:
Our development staff found that one of the most difficult parts of mastering Visual FoxPro 3.0 was learning how to reference objects in the object hierarchy. Visual FoxPro 3.0 contains a help topic on referencing objects, but the help topic doesn't go far enough in providing examples and thoroughly explaining object referencing.
The Visual ProMatrix User's Guide will cover this subject in more depth.
Visual ProMatrix as a Learning Tool
In conclusion...
When we developed the ProMatrix for FoxPro 2.6 User's Guide, we felt we did not have an obligation to teach our users how to use FoxPro. However, we have discovered that we have quite a few users who were introduced to FoxPro by ProMatrix.
With Visual ProMatrix we can safely assume that most users will be relatively new to Visual FoxPro 3.0. Therefore, we feel that we have an obligation to extend the ProMatrix User's Guide to teach some of the basic OOP concepts and even to describe the mechanics of using the Visual FoxPro 3.0 tools.
While some might view this obligation to teach as a burden, we view it as an opportunity to distinguish and differentiate Visual ProMatrix from the competition. There have been quite a few good books written about Visual FoxPro 3.0 already, and most of the books include disks or a CDRom full of "goodies". However, a book isn't the same as a fully functioning RAD product with good documentation. It simply isn't economic for a book author to provide the kind of support and product updates that a RAD software vendor can provide. Further, the "goodies" provided with the books simply aren't the kind of robust RAD environment that a developer really needs and the "goodies" are frequently rather buggy.
Consequently, we feel that with Visual ProMatrix Lawson-Smith Corporation is poised to take a leading role in the future direction of Visual FoxPro 3.0 application methodology. We want Visual ProMatrix to be the tool that developers use to learn and fully exploit the power of Visual FoxPro 3.0.