Chapter 1: Introduction
Chapter 2: In the Beginning
Chapter 3: The Application
System-level services
The Kickoff
SET DEFAULT TO
SET PATH TO
SET CLASSLIB TO/SET PROCEDURE TO/SET LIBRARY TO
SET TALK/SET EXCLUSIVE
oApp = CREATEOBJECT()
READ EVENTS
Before MAIN.PRG
A function launching mechanism
Flexibility during development


Chapter 4: Data - Keys and Indexes
What are keys?
Primary and candidate indexes
Compound primary keys
Surrogate primary keys
Visual FoxPro indexes
The roles that indexes play

Chapter 5: Data - Views
Views vs. queries
How views work in an application
That little something extra
Buffering and views
Indexing views
Parameterized views
So what's the point?
Views in actionv cDMForm methods
The views used by the Time Card form
The grid
The old swaperoo
Cut to the chase
The View/Query Designer
The case for updateable views
Why would you exclusively use views?
Performance considerations

Chapter 6: Rules, Triggers and Referential Integrity
Rule and trigger functions
What are rules and triggers?
Rule behavior
Field and row rule behavior
Data validation
Data modification using rules
Trigger behavior
Referential integrity
Implementing referential integrity rules
The VFP Referential Integrity Builder
Referential integrity logic
Algorithms for cascading and restricting changes
The whole enchilada - a universal referential integrity function
All emptors be caveat!!
Other stuff to do with triggers
Summmary

Chapter 7: Data Manipulation Classes
Common data manipulation requirements
Opening and closing tables and views
Detecting changes to data
Committing or canceling changes to data
Navigating through data
Providing data source independence
Buffering data
Data manipulation classes
The native Visual FoxPro classes
Crating your own data-manipulation classes
Detecting changes to data
Data management and views
Summary of data management

Chapter 8: Managing Business Logic -N-Tier System
What is n-tier system design?
What is business logic?
How is business logic different from data validation?
Building business logic enforcement classes
Abstraction of business logic into class design
Implementing business-logic classes into an application
What's the point?
Using ActiveX servers for business-logic objects
Summary

Chapter 9: Forms
Loose coupling and forms
Private data sessions
Sharing data sessions
Making the modal/modeless decision at runtime
Passing data between forms
Other issues with private data sessions
To form or not to form--running forms as object instances
Forms and delegation
Forms as business objects
Passing parameters in form methods

Chapter 10: Form Controls
The general use of form controls
Label
TextBox
EditBox
Spinner
CheckBox
ComboBox
ListBox
OptionGroup
CommandButton and CommandGroup
Timer
PageFrames and Pages
What about speed?
Grid
Container
Misusing and abusing the controls
Summary

Chapter 11: Advanced Form Control Topics
Delegating to form controls
Enabling/disabling controls
List objects
So tell me, which technique should I standardize on?
List objects--example of a reusable class
List objects--Alias and Fields RowSourceTypes
Setting visual properties example--ColumnWidths
Disappearing objects, multiple objects and composite objects
Timer-mediated program delays
Grids
The trouble with grids
Life without grids (well, almost)
Are grids still useful?
Is that all there is?

Chapter 12: User Interface Design - or - Selecting the "Best" Way to Present Information to the User
The three interface styles
Process centric
Data centric
Goal centric
Two major application categories
Sovereign applications
Transient applications
Why bother to classify applications?
Modeless vs. Modes and Modal vs. Non-Modal
Controlling edit/add/view functionality
User-initiated edit/view modes
Automatic edit/view modes
So what's the answer here?
Heads-down data entry
Keyboard vs. mouse, and buttons vs. toolbars vs. menus
Limiting the number of dialog boxes
Using the tabless PageFrame to provide multiple "views" of the data
Selecting items
Multi-select
Direct manipulation
Connecting things
Drag and drop
Native drag and drop
OLE drag and drop vs. native drag and drop
When is drag and drop a good idea?
Summary

Chapter 13: Manager Objects, the Non-Visible Application Objects
What are these non-visible objects?
Managing the activities of an application
The Visual FoxPro Application Wizard
General tab
Credits tab
Data tab
Forms, Reports, and Advanced tabs
Visual FoxPro foundation classes
The Applications Wizard and the Application Builder
Startup program
Classes tab of the Application Builder
Extending the foundation classes
Modifying the foundation classes
Subclassing the classes in the foundation class libraries
Using the hook methods provided in the foundation classes
Creating decorator classes
Creating mediator classes
Summary

Chapter 14: Developer Tools
Tips for effective use of the native VPF developer tools
The project manager -- use for file and class management
Form Designer tricks
The Class Browser
The Report Designer -- gaining printer independence
The Visual FoxPro editor
VFP debugging tools
Watch window
Trace window
Locals window
Call Stack window
Breakpoints dialog
Output window and Event Tracking
Coverage Logging
Coverage Profiler
Roll-your-own tools
SearchAll.PRG
HackVCX.PRG
Cleanup.SCX
Third-party developer tools
XCase
Stonefield Database Toolkit
Invest in your toolbox