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