Who Should Use VPM Enterprise?

Why Use VPM Enterprise?

ProMatrix Technical Support

How the User's Guide is Organized

A Word from One Developer to Another

Where to Go from Here

Installation & Setup

VPM Enterprise Installation

Before You Begin Installation

Running VPME Setup

Running VPM Enterprise the First Time

The VPME Sample Application

What Setup Installs

Running VPM Enterprise from Visual FoxPro

Running ProMatrix If You Change Visual FoxPro

VPM Enterprise Setup

New Project Developer Info

New Project and ProMatrix Options

Admin Tools

VPM Enterprise Security

ProMatrix Environment

Developer Menu

Controlling Editing and Running of Application Objects

User-Created Project Programs


Overview - Basic Concepts and Terminology

What is VPM Enterprise?

How VPM Enterprise Organizes Application Development

Tools Menu

Options Menu

Object Builder

Object Editors

Called Objects

Data Builder

Message Builder

Other VPME Builders that Automate Application Development

How ProMatrix Manages Application Development

How ProMatrix Augments and Enhances Applications


Basic Mechanics

Basic Mechanics You Need To Know

VPM Enterprise Toolbar

Command Window

VPM Enterprise Form Toolbar Controls

VPM Enterprise and Visual FoxPro Online Help

VPME Error Handling - Very Important

ProMatrix Projects

Creating and Managing Projects

Application <Prefix> File Names

Naming Conventions

Right-Click Shortcut Menus

Special Keys

Use PM-Admin Menu With Caution


The Sample Application

The VPM Enterprise Sample Application

As You Enter the Sample Application

Sample Application Menu

Sample Application Data Menu

Related Forms

Initial Find Form for Parameterized Views

Where to Go from Here

Creating Applications: Basic Steps

Organized, Systematic, Planned Approach

Basic Steps

Designing Your Application


Where To Go From Here

Starting a New Application

Starting a New Application

New Project

What VPM Enterprise Creates

How to Modify What VPM Enterprise Creates

Copy Project

Where To Go From Here

Application Options

Options Menu

Admin Tools Selection

Build Options

Customize Toolbar Controls

Developer Information




Logo and Icons

Project Options

Where To Go From Here

Building Menus


Menu Builder

Main Menu

Shortcut Menus

Report Designer Menu

Create or Add Menus

Editing a Menu

Creating New Menus

Adding Existing Menus

Removing Menus

Entering/Changing Menu Titles

When You Create or Add Menu Files

Selecting the Object Builder Menu for Different Menu Files

Disabling Menu Options


Building Data: The Data Builder

Building Data

What is the Data Builder?

Data Builder Interface

Why the Data Builder?

Where Does the Data Builder Store Its Data?

Data Builder / Manager Form

How to Use the Visual FoxPro Database Designer with VPM

Visual FoxPro Functionality that VPME Replaces

Where To Go From Here

Building Data: Databases


Creating a New Database

Adding a Database

Removing a Database

Accessing the Database Designer

Database Properties

Building Data: Tables

Tables Overview

Creating and Setting Up Tables - Overview

Creating Tables

Modifying Tables

Adding Tables

Removing Tables

Creating Indexes for Tables

Index Tags and Toolbar Order Control

Generating Surrogate Primary Keys

Setting Table Properties

Table Utilities

Record-Level Data-Driven Developer Code

Candidate Keys - Preventing Duplicate Values

Building Data: Views


Creating and Setting Up Local Views - Overview

Creating Local Views - Details

View Filters

Creating and Setting Up Remote Views

Creating, Setting Up and Using Matching Remote Views

Modifying Views

Modifying a View's Source Table

Adding Views

Removing Views

Defining Indexes for Views

Setting View Properties

Remote Views - Preventing Duplicate Primary Keys

View Utilities

Record-Level Data-Driven Developer Code - Views

Candidate Keys - Preventing Duplicate Values - Views

Building Data: CursorAdapters

Introduction - CursorAdapters

Create or Add a CursorAdapter Class Library

Creating and Setting Up CursorAdapters

CursorAdapter Filters

Modifying CursorAdapters

Adding CursorAdapters

Removing CursorAdapters

Defining Indexes for CursorAdapters

CursorAdapter Utilities

Record-Level Data-Driven Developer Code - CursorAdapters

Candidate Keys - CursorAdapters

Creating Forms That Use CursorAdapters

Building Data: Fields

Fields List and Edit Pages

Field Properties

Data Integrity

How and When Is a Field Validated?

Setting Up Field Validation

Range Validation

Set Validation

Same As Validation

Code Validation

Not Empty/Null Validation

Referential Integrity

Referential Validation

Field-Level Data-Driven Developer Code

Field Help

Data Dictionary Properties for Non-Data Controls

Data Manager

Data Dictionary Reports

Building Data: Picklist Help

Picklist Help Overview

Picklist Help Textbox_ Example

Picklist Help Combobox_ Example

How to Set Up Picklist Help for a Field

How to Use the Picklist Builder - Overview

How to Use the Picklist Builder - Details

Auto List the Picklist Help

Editing the Picklist Table

Setting Up a Field for Picklist Help Using a Textbox_ Control

Setting Up a Field for Picklist Help Using a Combobox_ Control

Limiting the Picklist for Views and CursorAdapters

Controlling the F2 Picklist Icon

How to Update Additional Fields from a Picklist Record

How to Display a Description from a Lookup Table

Creating Application Objects


Creating Application Objects: Basic Steps

Object Builder

How to Begin Creating a New Application Object

Modifying an Application Object

Object Editors

Form Editor

Program Editor

Reports and Labels Editor

Query Object Editor

Bar Editor

Procedure Editor

Common Features

Called Objects

How to Test Application Objects


Deleting/Adding/Cloning Application Objects

Using the Visual FoxPro Project Manager

Building Messages


Message Builder

Building Form Messages

Building Status Bar Messages

Building Wait Window Messages

Displaying a Message

Message Builder / Manager

New Project Message Builder

VPM Enterprise Classes

VPME Classes Overview

Object-Oriented Programming

Three-Level VPME Class Structure

VPM-Level Classes

DEV-Level Classes

PRO-Level Classes

How You Use the VPM Enterprise Classes

Where to Modify Classes

Where's the Code?

Scope Resolution - Very Important!

Setting Up VFP Options for Form and Control Classes

Creating Forms: The Basics

The Basics - Overview

Form Types

Form Classes

Creating Forms Without a Form Builder

Basic Steps to Create a Form

How to Create a Form: The Details

Where to Go from Here

Creating Forms: The Builders

The Builders - Overview

Form Builders vs. Control Builders

ProMatrix Basic Form Builder

ProMatrix PageFrame Builder

ProMatrix One-To-Many Form Builder

ProMatrix Related Pages Form Builder

ProMatrix Grid Builder - an Editable Grid

ProMatrix List Grid Builder

Creating a Mover Form

Thermometer Form and Class

ProMatrix Control Builder

Single-Record Forms

No-Record Forms

How to Modify the Form and Control Builders

Where to Go from Here

Creating Forms: Form Toolbar

Form Toolbar - Overview

The Toolbar Classes

Toolbar Controls

ProMatrix Condition Builder

Find Forms

Find - Standard

Find - SQL




Group Delete


ProMatrix Toolbar List Builder

How to Put the Toolbar Controls Directly on a Form

How to Change the Toolbar Used with a Form

How to Disable Toolbar Controls for a Form

How to "Remove" a Control from the Toolbar

Toolbar Menu Options and Hotkeys

How to Implement an Edit Mode

Activating the Form Toolbar with No Application Toolbar

Creating Forms: Tips & Techniques

Form Tips & Techniques - Overview

Multiple-Table Editing

Welcome Form

Tip of the Day

Access Form

Access Panel

Private Data Sessions

Multiple Instances of Forms

Required Fields

Leaving and Returning to a Form While Editing

Defining Data Dictionary Properties for Non-Data Controls

Useful Form_ Class Properties

Useful Form_Toolbar Properties

Useful Control Class Properties

How to Filter Validation and Picklist Cursors

Century Handling

Recycling Deleted Records

Creating Forms: Related Forms

What are Related Forms?

What are Related Tables, Views and CursorAdapters?

Features of Related Forms

How to Set Up Related Forms

Related Forms - Things You Should Know

Data Handler & Business Rules

Data Handler Class and Object

Business Rules Class and Object

Business Rules Class Methods

Calling the Business Rules Methods

Business Rules Method Parameters

Tips for Writing Business Rules and Data Builder Code

Useful Data Handler Methods

Useful Data Handler Properties

Application Toolbar


Application Toolbar Class - Toolbar_App

Building Reports, Labels & Queries

Reports, Labels & Queries Overview

Building Reports, Labels & Queries

Report Builder / Manager

Managing Reports

Ways to Create Reports for the Report Manager

How to Create a Report with the Report Builder/Manager

Report Setup Options

Configuring the Report Manager

Creating Reports for Menu Options

Running Reports

Using the Report Setup Dialog

Creating Queries

Securing Reports in Visual FoxPro Project Manager

Building Help


Building HTML or Windows-Style Help

Help File Name

Setting the Menu and Form Help Topic

Building Field Help

About Dialog


Security Overview

Setting Up Controls Security

Load Menu Option Table

Turning on Security

User Access Security

Access Levels Security

Menu Security

Controls Security

Field Security

Making a Form Read-Only by User

User Data Encryption

User Data Record Layout and oSec Properties

User Security Mistakes and How to Recover

Administrative Tools


Admin Tools



Audit Trail

Reindex / Pack Tables Utility

Creating a Client-Server Application


What Is a Client-Server Application?

What Is Remote Data?

Creating Client-Server Applications with Remote Views and CursorAdapters

If Remote Data Does Not Exist

How to Protype an Application with VPME

Distributing the Workload

Performance Considerations

Using Remote Views in Your Own Code

Multilingual: Creating a Multilingual Application

VPME Multilingual Overview

Important VPME Multilingual Terminology

Basic Steps to a VPME Multilingual Application

New Project

Select Application Language

Building Your VPME Multilingual Application

What VPME Multilingual Adds to a VPME Project

Multilingual object

Property Initialization

Customizing VPME Multilingual Functionality

Where to Go from Here

Multilingual: Managing Languages


Language Builder vs Language Manager

Language Builder

Adding a Language

Deleting a Language

Setting Language Date Properties

Setting Language Currency Properties

Selecting Application Elements to Translate

Creating and Adding Strings

Language Manager

Importing Your Language Templates

Where to Go from Here

Multilingual: Creating Message Translations

Creating Message Translations Overview

Messages and Message Translations

Creating Missing Message Translations Records

Entering Message Translations

Message Translations

Where to Go from Here

Multilingual: Creating String Translations

Creating String Translations Overview

Strings and String Translations

How to Create String Records

Language Builder - Create String Records

Add Missing String Records

String Builder or String Manager - Manual Entry

Creating Missing String Translations Records

Entering String Translations

How to Create Alternative Translations for the Same String

How to Localize Fonts

How to Localize Report Fonts

How to Translate Report Labels

How to Localize Data Sources

How to Localize Pictures

How to Localize Lookup Table Descriptions

How to Localize Help Files

How to Localize Visual FoxPro Functions and Commands

How to Localize Compile-Time Constants

How Form and Toolbar Strings Are Translated

How Menu Prompts and Messages Are Translated

How Data Manager Strings Are Translated

Where to Go from Here

Multilingual: Running a VPME Multilingual Application

Running a VPME Multilingual Application Overview

Select Application Language

User Language Selection

Select User Language

Language Interface

Packaging Your Product


ProMatrix Product Builder

Project Cleanup

Building an EXE

Creating Distribution Files and Directories

Admin - Directories

Create Distribution Files

Packaging Your Update


ProMatrix Update Builder

New Update

Project Cleanup

Identify Update Files

Building an EXE

Modifying the Update Utility

Copy Files

Enter the Data Update Rules

Create Distribution Files

Anatomy of the Update Utility

Team Development & Source Control

Team Development and Source Control

Source Control Setup

Source Control for VPME Files

Source Control for VPME Projects

Team Development

Using VPME with Source Control

Frequently Asked Questions

Visual ProMatrix Frequently Asked Questions (FAQ's)

Data Builder FAQ's

Forms and Controls FAQ's

Installing, Running & Managing VPM and Applications FAQ's

Miscellaneous Errors FAQ's

Miscellaneous How To FAQ's

Object Referencing FAQ's

Security FAQ's