From database compatibility to a graphical interface
Visual FoxPro originated at Fox Software in Perrysburg, Ohio. Written by David Fulton and William Ferguson, FoxBASE appeared in December 1984. It was intended to run applications written in the dBASE II language while improving execution speed and reducing application-distribution costs. It retained a language organized around tables, records and fields.
Graphical development subsequently became an important direction for the team. In a 1988 interview, Fulton explained that the Macintosh version was initially developed because the Mac’s documentation and tools were relatively mature, offering experience for future window-based products. The core team interviewed also included Amy Fulton and Eric Christensen. They introduced operations such as dragging fields, arranging reports and editing multiple programs at once into the development environment.
Version 3.0 under Microsoft
FoxPro 1.0 was released in 1989. Version 2.0 added SQL commands and a fuller set of development tools in 1991. After Microsoft acquired Fox Software in 1992, Fulton and the original development team moved to Redmond, Washington, and the product continued to develop.
Visual FoxPro 3.0, released in June 1995, was the first version bearing the “Visual” name. It added objects, classes, inheritance and event handling to the existing Xbase language and database engine, while incorporating access to data on client–server systems. Microsoft’s earlier reviewers guide identified reusable components, client–server development, interoperability with Office and preservation of investments in older applications as major design goals.
Organizing programs into reusable objects
In the new model, forms, buttons and other controls had properties, methods and events. Developers could create a general form class, have several business windows inherit its appearance and behavior, and override individual elements where needed. Classes could be defined in code or saved through a visual designer for reuse in later projects.
At the 1995 developers conference in Frankfurt, Microsoft’s Calvin Hsia illustrated the change with the Init and Destroy methods. Initialization and cleanup could be placed in an application object and called automatically when the object was created or destroyed. Common settings placed in a base class were inherited by derived classes. Changing the base class could reduce the work of updating programs individually.
Making a form run
A Microsoft technical article for version 3.0 used a short program to distinguish a class definition from a running object. DEFINE CLASS myform AS form described a form template. Adding a commandbutton inside it did not display a window automatically. The program also needed CREATEOBJECT to instantiate the class, Show to display the form and READ EVENTS to keep the event loop active.
These steps respectively defined, instantiated and displayed the object, then waited for user actions. When a button was clicked or a window closed, the system passed the event to the relevant code, allowing interaction beyond a fixed sequence of inputs. Hsia’s examples also put messages into Init and Destroy so that developers could see when an object was created or released. This organization suited business interfaces handling queries, data entry and feedback at the same time.
Bringing data relationships into the development environment
Visual FoxPro 3.0 also introduced the database container, which stored persistent relationships between tables, stored procedures, field defaults and validation rules. Data rules could operate with the tables, reducing the need to repeat them in every entry form. Open Database Connectivity, or ODBC, enabled access to remote databases. Developers could prototype with local data and then adjust connections and views to use server data.
The reviewers guide demonstrated this through Tastrade. Relating the customer and orders tables by their customer identifier created a one-to-many relationship. Dragging customer fields into a form and adding a grid for the orders table allowed the relevant orders to appear for the current customer. Tables, relationships, the data environment and controls worked together to produce the customer record and order list.
References: [4]
Migration and early limitations
Version 3.0 retained older Xbase programs and supplied conversion tools, allowing developers to migrate existing applications before gradually adopting object extensions. Running an older program and restructuring it around objects remained distinct tasks. Reorganizing initialization, interface events and data access required an understanding of object lifecycles and the event model.
Visual FoxPro was a 32-bit application released before the official launch of Windows 95. On systems such as Windows 3.1, it depended on Win32s, a combination whose stability problems were recorded by the authors of Hacker’s Guide. The 3.0b update in December 1995 fixed bugs and added support for double-byte character sets. The Macintosh edition followed in May 1996. The product’s development thus involved successive changes to its predecessor language, graphical interface, object model and platform versions.