Technical Papers PDF
Technical Papers PDF
2015 Technical Papers
Doug Hennig
My personal Web site
Home
About Me
Links
Technical Papers
Technical Papers
These documents are either sessions I presented at various conferences over the years (including
Southwest Fox, DevCon, Great Lakes Great Database Workshop, and the German DevCon) or articles I
wrote in various magazines (FoxRockX, FoxTalk, and Advisor).
A Deep Dive into the VFPX ThemedControls
One of the coolest projects in VFPX is ThemedControls by Emerson Santon Reed (the 2009 Southwest
Fox Ceil Silver Ambassador). The ThemedControls project consists of eight controlsThemedButton,
ThemedContainer, ThemedExplorerBar, ThemedForm, ThemedOutlookNavBar,
ThemedTitlePageFrame, ThemedToolbox, and ThemedZoomNavBarthat allow you to provide the
modern interface users expect in today's applications. This document looks at these controls in detail and
shows how to use them in your own applications.
White Paper Samples
A File Open Dialog
A File Open dialog is a better approach than having a long list of forms appear in the File menu. This
article presents a reusable File Open dialog that supports grouping forms into different pages in a
pageframe and uses ListView controls for a visually appealing display.
White Paper Samples
A Generic Import Utility, Part 1
Data entry forms aren't the only way your users want to put data into their applications. Often, important
data is stored in other applications, so you need a way to import that data into your application. This
article, part 1 of a twopart series, presents a generic import utility you can add to your applications to
provide import capabilities from a variety of data sources.
White Paper Samples
A Generic Import Utility, Part 2
Part 1 of this twopart series presented a set of classes making up a generic import utility you can add to
http://doughennig.com/papers/default.html 1/28
17.08.2015 Technical Papers
your applications to provide import capabilities from a variety of data sources. Part 2 focuses on the user
interface components.
White Paper Samples
A More Flexible Report Designer
This month, Doug presents a way to make the VFP Report Designer more flexible, such as customizing
the pages of the properties dialogs without having to change ReportDesigner.APP.
White Paper Samples
A New Beginning
The development world is moving to reusable components. As goes the world, so goes Doug's column.
We'll start off the new "Best Tools" column with SFThermometer, a handy progress meter class.
White Paper Samples
A New IDE Addon: FoxTabs
FoxTabs provides easy access to all open windows in your VFP IDE. However, not only is it a great tool,
it uses some very cool techniques to do its magic, including Windows message binding and eventdriven
object messaging.
White Paper Samples
Access and Assign Methods in VFP
In my opinion, one of the most useful and powerful additions in Visual FoxPro 6 is access and assign
methods. It may seem strange that something as simple as this can be considered powerful, but in this
document we'll see some very compelling reasons to use these methods, including the ability to strongly
type properties, automatically validate the values of properties, create readonly properties, and support
collection classes.
White Paper Samples
Adapt Your Cursors to CursorAdapters
The CursorAdapter class is one of the most important new features in VFP 8 because it provides an easy
touse, consistent interface to remote data. In this month's article, Doug examines CursorAdapters and
how they work. Next month, we'll take a look at some advanced uses of them.
White Paper Samples
Adding IntelliSense to Your Applications
IntelliSense is easily the best feature ever added to Visual FoxPro. It provides a greater productivity
boost to VFP developers than anything added before or since. However, until VFP 9, it was restricted to
http://doughennig.com/papers/default.html 2/28
17.08.2015 Technical Papers
the development environment. Now, IntelliSense is supported in a runtime environment as well. This
document discusses why this is a useful feature for many types of application and shows you how to
create a customized IntelliSense environment specific for your application.
White Paper Samples
Advantage Database Server for Visual FoxPro Developer
Advantage Database Server is a fullfeatured, highperformance client/server database engine.
Interestingly, it can use Visual FoxPro DBF files as its data store and provides a number of benefits over
accessing these files directly. This document introduces Advantage and discusses how to access it from
VFP applications.
White Paper Samples
Ahoy! Anchoring Made Easy
The new event binding feature in VFP 8 makes it easy to have objects resize or move themselves when
their container is resized. In this month's article, Doug shows how you can do it by simply setting a
couple of properties.
White Paper Samples
Application Security
Most applications need a way to limit which users can run an application and which functions users can
perform in the application. This article presents a set of tools for defining and maintaining application
security. It also pulls together the reusable tools described in previous issues to provide a simple
application framework.
White Paper Samples
Base Classes Revisited
Most VFP developers know you should never use the VFP base classes, but instead create your own set
of "base" classes. It's time to blow the dust off the set of base classes Doug has discussed for the past six
years and see how they can be revamped in VFP 8.
White Paper Samples
Best Practices for Vertical Application Development
While a vertical market application shares many of the same goals as a custom application, the bar is
higher because the audience is both larger in volume and broader in scope, plus you usually have much
less direct contact with the customer. This document examines some of the things to consider when
designing and implementing a vertical market application.
White Paper
http://doughennig.com/papers/default.html 3/28
17.08.2015 Technical Papers
Build Your Own Wizards
Wizards provide an ideal way of holding your users hands through complex, multistep tasks. This
month's Reusable Tools column presents a set of classes you can use to build your own wizards.
White Paper Samples
Building Builders with BuilderD
BuilderD is a new datadriven builder technology that comes with VFP 6. This month, Doug takes a look
at how BuilderD works and how you can create builders with it in record time.
White Paper Samples
Building Your Own Builders with BuilderB
Builders make it easy to set properties for objects at design time, which is especially handy for containers
which you normally have to drill down into. Ken Levy's BuilderB tool makes creating your own builders
almost a trivial job.
White Paper Samples
Building a Builder Builder
Creating builders is a snap using enhancements to Ken Levy's BuilderD technology described in this
month's article.
White Paper Samples
Building and Using VFP Developer Tools
In addition to being the best darn database management system available, VFP also gives us the ability to
highly customize the interactive development environment (IDE). You can modify the menu, install new
builders and wizards, implement developer toolbars, change the behavior of the Project Manager, and do
lots of other things to make your IDE more productive. Even better is that all of this customization is
done in the language we all know and love, so we don't have to have some C++ guru create addins for
us. Even relatively inexperienced VFP developers can customize their environment to work the way they
want. This document will show you how to create simple tools that increase productivity for you and
your development team. We'll look at modifying the VFP wizards and builders to provide additional or
customized features, and creating your own builders using the BuilderD technology included with VFP 6.
White Paper Samples
But It Works For Me!
Figuring out why a user is getting different results than you are can be a frustrating, timeconsuming task.
This month, Doug looks at a way of instrumenting your application so you can quickly determine what is
being executed and how long it's taking.
http://doughennig.com/papers/default.html 4/28
17.08.2015 Technical Papers
White Paper Samples
CATCH Me if You Can
VFP 8 has structured error handling, featuring the new TRY ... CATCH ... FINALLY ... ENDTRY
structure. This powerful new feature provides a third layer of error handling and allows you to eliminate
a lot of code related to passing and handling error information. This month, Doug discusses structured
error handling and shows how it fits in with a complete error handling strategy.
White Paper Samples
COM Enhancements in VFP 7
This is last of a sixpart series on language enhancements in VFP 7. This month's article focuses on those
enhancements related to COM.
White Paper Samples
Christmas Stocking Stuffers
Visual FoxPro has a lot more places to put code than FoxPro 2.x. This month's column examines the
advantages and disadvantages of creating classes for library routines. It also looks at a replacement for
FoxPro's GO command and shows how to make it more obvious that Visual FoxPro controls are read
only.
White Paper Samples
Collecting Objects
Collection classes can help you reduce the complexity of your applications by eliminating multicolumn
arrays or grouping related objects into one place. They can also help you create an interface to your
applications that can be used by the outside world.
White Paper Samples
ComboBoxes are Looking Up
Most applications need a way for a user to select a lookup value for certain fields. In this, the first of a
twopart article on reusable tools for managing lookups, Doug presents a combobox class for lookup
selection and a form for maintaining lookup values.
White Paper Samples
Compression the Fast (and Cheap!) Way
Need a way to compress and decompress files in your applications? VFP guru Craig Boyd has created a
free library to zip and unzip files quickly and easily.
White Paper Samples
http://doughennig.com/papers/default.html 5/28
17.08.2015 Technical Papers
Consuming XML Web Services in VFP 8
XML Web services are becoming very important for application development, and VFP 8 makes it easier
than ever to use them. This month, Doug explores consuming XML Web services in VFP applications,
including how to use the new XML Web Service Builder to bind controls to XML Web services results
with very little code.
White Paper Samples
Cool Controls for Your Applications
This document examines some controls you can add to your applications to provide a cleaner or fresher
user interface. Controls discussed include a splitter, a combobox that drops down to a TreeView control,
objectoriented Microsoft Officelike menus, a 100% VFP code date picker control, a control for
displaying "balloon tips", and a modernlooking progress bar control.
White Paper Samples
Cool Tools by Craig Boyd, Part II
Doug Hennig continues his examination of cool tools provided to the VFP community by Craig Boyd.
White Paper Samples
Cool Tools from Craig Boyd
Craig Boyd has produced some very cool tools for VFP developers. This month, Doug Hennig examines
Craig's encryption library and splitter and progress bar controls.
White Paper Samples
Cool Uses for ReportListeners
You've probably seen the demos showing the new ReportListener in VFP 9: dynamically formatted text,
rotated labels, and so forth. But did you know report listeners can be used for a lot more than that? This
practical session will show you all kinds of cool uses for report listeners, including hyperlinking text in
reports, providing a "live" preview surface that can handle click events, finding and highlighting text, and
more.
White Paper Samples
Create Modern Interfaces With VFP 7
It seems that every new version of Microsoft Office changes user interface standards. Whether you like it
or not, your users expect your applications to keep up with this evermoving target. Fortunately, VFP 7
adds new features that make it easier to create interfaces similar to Office 2000.
White Paper Samples
http://doughennig.com/papers/default.html 6/28
17.08.2015 Technical Papers
Create Your Own Property Editors
VFP 9 makes it possible to create your own editors for custom properties of classes and forms. This
month, Doug Hennig presents a framework for these editors, allowing you to focus on the editor itself
rather than the plumbing necessary to hook in the editor.
White Paper Samples
Creating ActiveX Controls for VFP Using .Net
ActiveX controls provide a way to add both functionality and a modern appearance to your VFP
applications. Unfortunately, there are few new ActiveX controls these days, especially ones that take
advantage of features in Windows Vista and Windows 7. On the other hand, the .Net framework comes
with many attractive looking controls, and there's an entire industry devoted to providing even more. This
document discusses techniques for creating ActiveX controls from .Net components so we can take
advantage of these controls without having to convert our applications to .Net.
White Paper Samples
Creating Explorer Interfaces in Visual FoxPro
Explorerstyle user interfaces are among the most popular for today's applications. However, working
with and integrating the controls necessary to implement an explorer interface can be challenging. This
session presents a set of classes and techniques that makes short work of developing explorer interfaces
for your applications.
White Paper Samples
Custom Classes
This month's column uses great ideas from other applications to create some custom classes you can
include in any application.
White Paper Samples
Custom UI Controls: SFComboTree
Sometimes you need to display a list of items but don't have much room to do so. While a combo box is
usually used in this case, it doesn't display a hierarchical list or support checkboxes for items.
SFComboTree fits this need nicely.
White Paper Samples
Custom UI Controls: Splitter
Adding a splitter control to your forms gives them a more professional behavior and allows your users to
decide the relative sizes of resizable controls.
White Paper Samples
http://doughennig.com/papers/default.html 7/28
17.08.2015 Technical Papers
DBCX 2: The Quickening
DBCX is a public domain data dictionary extension utility that allows you to define extended properties
for database objects. However, it suffers from a number of shortcomings, the biggest one being
performance. DBCX 2 is a complete rewrite of DBCX that adds speed and flexibility to this powerful
tool.
White Paper Samples
Data Handling Issues, Part I
The ability to handle multiple sets of data is a frequent requirement in business applications. So is the
management of primary key values for tables. In this first of a twopart article, Doug takes on these data
handling issues and looks at the best way to deal them.
White Paper Samples
Data Handling Issues, Part II
While field and table validation rules protect your tables from invalid data, they also make data entry
forms harder to use. In this second of a twopart article, Doug looks at a solution to this problem. He also
examines the use of multipurpose lookup tables, and discusses how to take advantage of new data
dictionary features in VFP 5.0.
White Paper Samples
Data Strategies in VFP: Advanced
In the "Data Strategies in VFP: Introduction" document, we examined the different mechanisms for
accessing nonVFP data (such as SQL Server) in VFP applications: remote views, SQL passthrough,
ADO, XML, and the CursorAdapter class added in VFP 8. In this document, we'll look at CursorAdapter
in a lot more detail and discuss the concept of reusable data classes. In addition, we'll take a brief look at
the new XMLAdapter base class and see how it can help exchange data with other sources, such as
ADO.NET.
White Paper Samples
Data Strategies in VFP: Introduction
There are a lot of ways you can access nonVFP data (such as SQL Server) in VFP applications: remote
views, SQL passthrough, ADO, XML ... This document will examine the pros and cons of different
mechanisms and discuss when it's appropriate to use a particular strategy. We'll also look at an exciting
new technology in VFP called CursorAdapter that will make accessing remote data much easier than it is
in earlier versions.
White Paper Samples
DataDrive Your Applications
http://doughennig.com/papers/default.html 8/28
17.08.2015 Technical Papers
As VFP developers, we're used to storing application data in tables. However, another use for tables is to
store information about application behavior. This month's article will look at how datadriving key
pieces of your applications can make them more flexible and more maintainable.
White Paper Samples
DataDriving and Scripting Applications
As VFP developers, we're used to storing application data in tables. However, another use for tables is to
store information about application behavior. This session looks at how datadriving key pieces of your
applications can make them more flexible and more maintainable. In addition, we'll examine how to
make your application scriptable so advanced users can customize its behavior.
White Paper Samples
Database Events in Visual FoxPro
Database (DBC) events are an exciting new addition in Visual FoxPro 7.0. Since these events are
automatically fired when anything in a database container is accessed (opened, closed, modified, deleted,
etc.), they give us the ability to control what happens before and after the access. This document
discusses DBC events in detail and explores some of the uses for this new technology, such as
implementing tablelevel security and powerful developer tools.
White Paper Samples
Database, Heal Thyself
Like regualr FoxPro tables, database containers are subject to corruption. While fortunately this is rare,
when it does happen, it can be the start of a very bad day. In this month's article, Doug presents a utility
you can use to repair corruption in the PROPERTY memo of DBC records. In addition, this utility can be
used to change readonly properties, such as the path for a table or the SQL SELECT statement of a
view.
White Paper Samples
Developing Modern Interfaces With VFP 7
VFP 7 introduces some new features that allow us to create applications with uptodate interfaces (such
as that in Office 2000). However, there's a lot more to creating an exciting interface than just turning on
"hot tracking". In this document, you'll learn how to create modernlooking menus (complete with Most
Recently Used features), toolbars (including command buttons with dropdown menus), dialogs (using
new Windows 2000 features), and forms. These techniques will help you freshen the user interface of
your applications to give them a longer shelf life.
White Paper Samples
Developing VFP Applications for Windows 7
Like Windows Vista before it, Windows 7 changes the rules for many aspects of application
http://doughennig.com/papers/default.html 9/28
17.08.2015 Technical Papers
development, including the user interface, dialogs, deployment, security, and file access. This document
looks at things you need to know to create Windows 7compatible applications with Visual FoxPro.
White Paper Samples
Developing Visual FoxPro Applications for Windows Vista
Windows Vista changes the rules for many aspects of application development, including the user
interface, dialogs, deployment, security, and file access. This document looks at things you need to know
to create Vistacompatible applications with Visual FoxPro.
White Paper Samples
Dismembering MemberData
A couple of common requests from VFP developers are capitalization support for custom properties and
methods in the Properties window and IntelliSense and the ability to customize the Properties window.
Microsoft listened: VFP 9 gives us both of these, plus the ability to create our own property editors, with
a new feature called MemberData.
White Paper Samples
Displaying and Editing Child Records
This month's article presents a grid class to display child records for a parent and a form class to edit the
selected child record.
White Paper Samples
Drilling Down Into Your Data
Do your users want to drill down into their data to see increasing levels of detail? You might think the
TreeView control discussed last month is perfect for this, but it doesn't provide the ability to show
columns of information. This month's article describes a technique for drilling down into data using a
grid, plus describes how to make your grids act more like a spreadsheet with frozen panes.
White Paper Samples
Email and File Transfer the Fast (and Cheap!) Way
In the previous two issues, Doug discussed free libraries generously provided by Craig Boyd to compress
and decompress files and encrypt and decrypt strings and files. In this issue, he discussed two more
libraries that add MAPI email and file upload and download capabilities to your applications.
White Paper Samples
Encryption the Fast (and Cheap!) Way
In the previous issue, Doug discussed a free library generously provided by Craig Boyd to compress and
http://doughennig.com/papers/default.html 10/28
17.08.2015 Technical Papers
decompress files using the ubiquitous ZIP format. This time, he examines another free library from
Craig, one that encrypts and decrypts strings and files.
White Paper Samples
Error Handling Revisited
While objects have Error methods to provide local error handling, how do you provide common, global
error handling services to your application? How do you recover when an error occurs? This month's
Reusable Tools looks at a proven strategy for implementing error handling in Visual FoxPro applications,
starting from individual controls and working up to a global error object.
White Paper Samples
Error Handling in VFP 8
VFP 8 now has structured error handling, featuring the new TRY ... CATCH ... FINALLY ... ENDTRY
structure. This powerful new feature provides a third layer of error handling and allows you to eliminate
a lot of code related to passing and handling error information. This document examines structured error
handling and show how it fits in with a complete error handling strategy.
White Paper Samples
Error Handling in Visual FoxPro
Like most things, error handling is more flexible but a lot more complex in Visual FoxPro than it was in
FoxPro 2.x. While objects have Error methods to provide local error handling, how do you provide
common, global error handling services to your application? How do you recover when an error occurs?
This session looks at a proven strategy for implementing error handling in Visual FoxPro applications,
starting from individual controls and working up to a global error object.
White Paper Samples
Extending Visual FoxPro with Visual FoxPro
One of the coolest things about the Visual FoxPro interactive development environment (IDE) is that it's
highly extensible. Even better, you can use VFP code to extend VFP itself. In this document, you'll learn
how to extend the VFP IDE to boost your productivity and create simple tools that make your life easier.
Topics I'll discuss include:
How to create your own property editors.
Creating powerful IntelliSense scripts to boost your productivity.
How the new New Property/Method dialog speeds form and class development.
Automatically updating a LOCAL statement.
An overview of how the My namespace in Sedna (the code name for the next version of VFP)
works.
White Paper Samples
Extending the VFP 9 IDE
http://doughennig.com/papers/default.html 11/28
17.08.2015 Technical Papers
One of the key themes in VFP 9 is extensibility. You can extend the VFP 9 Report Designer through
report events and the reporting engine through the new ReportListener base class. You can even extend
the IDE by trapping system and shortcut menu hits. This month, Doug Hennig shows you how to
customize the IDE in ways you never thought possible.
White Paper Samples
Extending the VFP 9 Reporting System, Part I: DesignTime
Among the new and improved features in the reporting system of VFP 9 is the ability to extend the
Report Designer to provide easiertouse, more powerful, and more flexible report writing to your
development team and even your endusers. In this document, you will learn about the new Report
Builder application, how it captures and handles events raised by the Report Designer, and how you can
create your own handlers to extend the VFP Report Designer in ways you never thought possible.
White Paper Samples
Extending the VFP 9 Reporting System, Part II: RunTime
In addition to the designtime extensibility of VFP 9's reporting system discussed in Part I of this white
paper, VFP 9 also provides the ability to extend the behavior of the reporting system when reports are
run. In this document, you'll learn about VFP 9's report listener concept, how it receives events as a
report is run, and how you can create your own listeners to provide different types of output besides the
traditional print and preview.
White Paper Samples
Favorites for IntelliSense
Favorites for IntelliSense is a new tool that extends IntelliSense, allowing you to specify which members
of a class you want displayed in IntelliSense, as well as easily scripting tooltips or lists of values for
properties or parameters of methods.
White Paper Samples
File Your Collections
While collections are extremely useful, arraybased collections with a lot of members can suffer from
poor performance at load and destroy time, and take up tons of memory. A filebased collection, on the
other hand, takes no load or destroy time at all, since member objects are created on an "as needed" basis.
White Paper Samples
Fix Problems Fast with Advanced Error Handling and Instrumentation Techniques
Your customer calls to report that their application crashes. Where do you start to figure out what's
causing the problem? This document looks at techniques for troubleshooting application problems,
including advanced error handling to provide complete state information and instrumenting your
applications to determine exactly what steps led up to the crash.
http://doughennig.com/papers/default.html 12/28
17.08.2015 Technical Papers
White Paper Samples
Get the Message?
This month's article presents a class that can be used to send email from your applications. It combines
the two MAPI ActiveX controls that come with VFP into one easytouse class.
White Paper Samples
Going Ape Over the Windows API
The Windows API (Win32API) contains thousands of useful functions. However, finding which function
to use when, and how to call it from a VFP application, can be challenging. This month's article presents
several useful API functions you can call in your VFP applications today.
White Paper Samples
Handling Specific Errors
Letting a general error handler deal with specific foreseeable errors isn't a good idea, since the handler
won't know the environment the errors occurred in nor possible resolutions to the problem. This month's
column shows techniques for handling specific foreseeable errors at the appropriate level.
White Paper Samples
Have Your Cake and Eat it Too
Visual FoxPro 7.0 has several new functions that can make certain tasks easier, such as executing script
code or performing text merges. However, since it's still a long way from release, this month's article
presents several routines that emulate these new functions in VFP 6 so you can start using these
capabilities today.
White Paper Samples
Horizontally Paginated Reports
Horizontally paginated reports allow you to print more columns for a given row that will fit on a page.
The report prints as many "horizontal" pages as needed. This technique has many applications, including
crosstabulation reports. In this article, Doug shows how to create horizontally paginated reports using
the FoxPro Report Designer.
White Paper Samples
Hyperlink Your Reports
Last month, Doug Hennig discussed the new ReportListener class in VFP 9 and how it can be used to
control report output in ways that previously wasn't possible. This month, he looks at how output
generated from reports can have live hyperlinks so some action is performed when they're clicked.
http://doughennig.com/papers/default.html 13/28
17.08.2015 Technical Papers
White Paper Samples
I Got Rendered Where?
Doug Hennig continues his discussion of report listeners by presenting a set of classes that output the
contents of a report run to a cursor and use that cursor to provide a "live" report preview surface.
White Paper Samples
I Got Rendered Where? Part II
Thanks to the new ReportListener in VFP 9, we have a lot more control over where reports are rendered.
Last month, Doug Hennig showed a listener that collaborates with a custom preview window to provide a
"live" preview surface. This month, he takes it a step further and adds support for finding and
highlighting text.
White Paper Samples
Implementing Offline Views
The introduction of updateable views in Visual FoxPro 3 provided new capabilities for FoxPro
applications. A new feature of VFP 5 extends the capabilities of updatable views even further: you can
now take any view offline. An offline view is "disconnected" from the source of its data so data entry can
continue while the tables the view is based on are unavailable. Sometime later, you can update the source
tables by "reconnecting" the view to them. While you could do this type of thing in VFP 3 yourself, it
required a lot of coordinating and some slick code. VFP 5 makes it very simple.
This document will look at the mechanics of offline views: how you take a view offline, considerations
about working with offline views, updating the source tables, and taking a view back online. We'll also
look at some uses of offline views: obvious ones like remote applications which allow querying and data
entry on the road or branch offices, but also a lessobvious but equally interesting one, that of permitting
data entry to carry on while table maintenance (reindexing, updating structures, packing, backing up,
etc.) is being done.
White Paper Samples
Installing Applications Using Inno Setup
Although a limited edition of InstallShield Express comes with VFP, many developers are unhappy with
Windows Installerbased installation tools: the tools are slow and cumbersome, the resulting
SETUP.EXE files are huge and slow, and Windows Installer sometimes has a mind of its own.
Introducing Inno Setup, a free, fast, easytouse installation tool that generates fast, lightweight setup
executables. This document shows you how to quickly implement Inno Setup to create great setups for
your applications.
White Paper Samples
Integrating RSS and Visual FoxPro
http://doughennig.com/papers/default.html 14/28
17.08.2015 Technical Papers
RSS (Really Simple Syndication) is becoming a popular way to publish content on Web sites and blogs.
However, it can be used for a lot more than that. This document provides an introduction to RSS and
explores how VFP can both generate and consume RSS.
White Paper Samples
IntelliSense at Runtime
VFP 9 provides support for IntelliSense at runtime. This month, Doug Hennig examines why this is
useful, discusses how to implement it, and extends Favorites for IntelliSense to support it.
White Paper Samples
Introduction to ADO
Microsoft's latest data access strategy is focused on ActiveX Data Objects (ADO), a COMbased data
engine that acts as a front end for OLE DB. OLE DB is bound to replace ODBC as the defacto data
connectivity standard and ADO is the interface that most applications will use to access data
functionality. ADO provides an objectbased approach to data access and through COM allows the
ability to pass data as objects between components. A subset of ADO—Remote Data Service (RDS)—
also allows access to ADO recordsets over an HTTP connection. This document discusses the technology
involved with ADO and provides examples of how you can implement and use ADO in a VFP
environment.
White Paper Samples
Introduction to C# for VFP Developers
Even if you're planning to continue development in VFP, learning another language like C# can be very
useful. There are some things that are a lot easier and faster to do in .Net than in VFP (the reverse is also
true). This document introduces the C# language, comparing it to constructs and syntax in VFP to
shorten the learning curve.
White Paper
Introduction to GDIPlusX
GDIPlusX is a VFPX project that exposes GDI+ to VFP applications as a set of VFP class libraries.
GDIPlusX makes it easy to add new graphical abilities to your applications, allowing you to provide a
fresher and more powerful user interface. This session provides an
introduction to GDIPlusX, going through the basics of GDI+, looking at the classes in GDIPlusX, and
going through various samples of how to use GDIPlusX in VFP applications.
White Paper Samples
Introduction to NTier Development
As applications get ever more complex, designing application in components becomes very important to
the successful completion of projects. This session discusses what ntier development is, why it's
http://doughennig.com/papers/default.html 15/28
17.08.2015 Technical Papers
important to modern application development, and shows strategies of how you can break out the tiers
using Visual FoxPro.
White Paper Samples
It Just Kicks In
The best kind of tool is one that automatically does its job without having to set any properties, write any
code, or even lift a finger. This column looks at a strategy for implementing these types of tools, and
provides a popup calendar for Date fields and a universal find function for your applications.
White Paper Samples
Keep Y'er Paws Off My Stuff
Need to prevent unauthorized access to your FoxPro data? Cryptor from Xitech provides an easy way to
encrypt files and leave them encrypted on disk, even while you access them as normal tables in your
application.
White Paper Samples
Kill Objects Dead!
Dangling object references are among the hardest bugs to track down, and can cause a wide range of
problems. This month's article looks at the cause of these problems, presents a couple of tools to help
track them down, and discusses techniques for preventing them.
White Paper Samples
Language Enhancements in VFP 7, Part I
Want an early peek at what's new in VFP 7? This is the first article in a series discussing the language
enhancements Microsoft is implementing and how to take advantage of some of them now.
White Paper Samples
Language Enhancements in VFP 7, Part II
This article continues the series on language enhancements in VFP 7, discussing enhancements to
existing commands and functions.
White Paper Samples
Language Enhancements in VFP 7, Part III
This is the third in a series of articles on language enhancements in VFP 7. This article covers the last of
the improvements to existing commands and functions, and starts discussing new commands and
functions.
http://doughennig.com/papers/default.html 16/28
17.08.2015 Technical Papers
White Paper Samples
Language Enhancements in VFP 7, Part IV
This fourth article in a series on language enhancements in VFP 7 article covers six new functions. One
of them, EDITSOURCE(), is used in a project text search utility, making it easy to find all occurrences of
a string in all files in a project and bring up the found locations in the appropriate editor.
White Paper Samples
Language Enhancements in VFP 7, Part V
This fifth in a series of articles on language enhancements in VFP 7 covers the remaining new general
purpose commands and functions.
White Paper Samples
Listening to a Report
Microsoft has opened the architecture of the reporting engine in VFP 9 by having it communicate with
the new ReportListener base class. Subclassing ReportListener allows VFP developers to create their
own customized output. This month, Doug Hennig looks at ReportListener and shows an example of how
it solves a realworld problem.
White Paper Samples
Live Nude Documentation!
Creating documentation, especially user manuals and help files, is usually the last thing a developer
wants to do. HTML Help Builder makes creating HTML Help files actually a fun thing to do!
White Paper Samples
Long Live PRGs!
Although classes get most of the attention today, there's still a place for PRGs. This month's article looks
at some library routines packaged as PRGs.
White Paper Samples
Make Your Menus Pop
Last issue, Doug discussed ctl32_ContextMenu, an objectoriented menu class that's part of the ctl32
library. This month, he looks at another OOP menu class, this time the VFPX PopMenu project.
White Paper Samples
Manage Your Applications
http://doughennig.com/papers/default.html 17/28
17.08.2015 Technical Papers
This month's article presents a simple yet useful tool, and discusses several reusable techniques used in
this tool.
White Paper Samples
Managing Projects and Class Libraries
VFP 6 includes several new or enhanced tools for managing projects and class libraries. Projects are now
exposed as objects so you can manipulate them in an OOP fashion rather than having to "hack" the PJX
file. The new ProjectHook class extends this concept even further by allowing you to create objects that
VFP automatically instantiates whenever a project is opened. ProjectHook events are called when files
are added to, dropped on, or removed from a project, as well as when files are modified or the project
built. The Class Browser has new capabilities that extend its usefulness even further. The Component
Gallery is a new tool for organizing and managing objects by project, client, application, or any other
grouping you see fit. This session will focus on these tools and provide practical examples of using them
to boost your productivity.
White Paper Samples
May I See Your License?
If you develop commercial applications, you may want to provide multiple levels of your application
depending on what your users paid for, and prevent unauthorized users from installing and running the
application. This month's article presents a license manager that can help with these tasks.
White Paper Samples
Microsoft Virtual PC for VFP Developers
Microsoft Virtual PC is a free utility that lets you create separate virtual machines on your Windows
desktop, each of which virtualizes the hardware of a physical computer. You can use virtual machines to
run different operating systems, such as different versions of Windows. Virtual PC is perfect for testing
application installs, presentations, legacy application support, training, and to avoid "polluting" your
main system. This session introduces Virtual PC and covers topics including setting it up, installing
different operating systems, managing your virtual machines, and using Virtual PC to solve typical
problems VFP developers encounter.
White Paper Samples
Mine Your Data With DynamiCube
Providing your users with the ability to analyze their data by breaking it down an unlimited number of
ways sounds like a "pie in the sky" goal. However, using the DynamiCube ActiveX control, you can
easily add this feature to any VFP application in less than an hour.
White Paper Samples
Mine for Code in XSource
http://doughennig.com/papers/default.html 18/28
17.08.2015 Technical Papers
Visual FoxPro comes with source code for most of the "Xbase" tools that ship with the product, including
the Class Browser, Code References, Toolbox, and Task Pane. Looking at source code written by top
VFP gurus often gives insight into new, powerful coding techniques. This document looks at various files
in XSource to show you cool ideas you can incorporate and even better, code you can directly use in your
applications today.
White Paper Samples
Mining for Gold in the FFC
One of the design goals for VFP 6 was to make it easier for programmers new to VFP to get up and
running with the tool. The FoxPro Foundation Classes, or FFC, is one of the results of this goal. The
FFC, located in the FFC subdirectory of the VFP home directory, is a collection of class libraries that
provide a wide range of functions. Don't think that just because previous versions of FoxPro have
included some, shall we say, less useful (to be polite) example files that these fall into that category.
While some of these do appear to be more demoware than really useful, there are still lots of great classes
in here. It's well worth the effort to spend some time looking at these classes, picking through the rocks to
find the nuggets. This document will look at some of the FFC classes and see how we might use them or
even subclass them to make them even more useful.
White Paper Samples
Modifying VFP's Wizards and Builders
The builders and wizards that come with VFP often don't do quite what you need them to. This month's
article shows how to remedy this.
White Paper Samples
More Flexible Reporting With XFRX
XFRX can make your reporting solutions more flexible since it allows you to output FRX reports to
PDF, Microsoft Word, Microsoft Excel, and HTML files. This month, Doug takes a look at how easy it is
to incorporate XFRX in your applications.
White Paper Samples
Much ADO About Something
The release of the OLE DB provider for VFP means better performance and scalability for applications
that need to access VFP data via ADO. However, there are some interesting issues and limitations of this
provider you need to be aware of.
White Paper Samples
MultiUser and Data Buffering Issues
In FoxPro 2.x, developers edited records using scatter memvar, editing the memory variables, and gather
memvar. The purpose of this indirect editing of fields was to protect the record by buffering it. With
http://doughennig.com/papers/default.html 19/28
17.08.2015 Technical Papers
Visual FoxPro, data buffering is built in, so fields can be edited directly. This session will discuss how
data buffering works and explores strategies for selecting which buffering mechanism to use and how to
handle multiuser conflicts.
White Paper
New Language Features in Visual FoxPro 7.0
Every new version of Visual FoxPro introduces changes to the programming language and Visual
FoxPro 7.0 is no exception. This document highlights new and changed commands, functions, properties,
events, and methods. Due to time constraints, we won't discuss database events, COM enhancements,
IntelliSense, or IDE enhancements, all of which introduce some changes to commands and functions.
White Paper Samples
New OOP and Language Features in Visual FoxPro 9.0
VFP 9 has an incredible list of new features: dockable forms, control anchoring, polygon shapes, word
wrapping for checkboxes and option buttons, IntelliSense support within WITH/ENDWITH and within
memo fields, removal of limits in such places as the number of elements in an array or size of PRG files,
new data types ... the list seems endless! This session will focus on new and improved OOP and language
features so you can quickly get up to speed on the newest version of VFP.
White Paper Samples
Objectify Your Menus
Objectoriented menus have been one of the most commonly requested enhancements to VFP. This
month, Doug presents a set of classes that allow you to implement objectoriented menus right now.
White Paper Samples
PEMs For Your Base Classes
This month's column examines some ideas to put in your subclasses of Visual FoxPro base classes. Some
of these ideas are straightforward, but others may be less obvious. We'll look at some custom properties
and methods you can add to provide more automatic functionality to your applications.
White Paper Samples
Persistence without Perspiration
This month's article presents a set of classes that persist values. A common application of this technique
is restoring a form's last size and position when it's opened.
White Paper Samples
Practical Uses for GDIPlusX
http://doughennig.com/papers/default.html 20/28
17.08.2015 Technical Papers
GDIPlusX is a VFPX project that exposes GDI+ to VFP applications as a set of VFP class libraries.
GDIPlusX makes it easy to add new graphical abilities to your applications, allowing you to provide a
fresher and more powerful user interface. This document looks at some practical uses for GDIPlusX,
including creating gradients, resizing images, fully justifying text in reports, creating screen snapshots,
adding text to images, reading image information, and many other uses.
White Paper Samples
Practical Uses for New Features in Visual FoxPro 8.0
Going over a list of the new features in VFP 8 doesn't really tell you how and where to use them. This
document takes a practical look at new features to create things like picklist grids, page frames with
delayed instantiation of contents, labeled option boxes, objects that know how to resize themselves in a
form, dynamic data objects, and many more.
White Paper Samples
Practical Uses for XML
XML can be a great way to store some types of data or transfer data from one application to another. This
session discusses what XML is and presents various methods of generating and parsing XML. It also
shows why XML is useful and demonstrates some practical examples of how I've used XML in my
applications.
White Paper Samples
Putting Parameters in Perspective
Concentrating on communication between routines can reduce up to onethird of the errors in your
applications. This month's column examines some "Best Practices" regarding the use of parameters.
White Paper Samples
Raise a Little Event of Your Own
Event binding, added in VFP 8, is getting more and more used as VFP developers discover its powerful
capabilities. This month, Doug Hennig examines a couple of uses he's been making of this technique
lately.
White Paper Samples
Report Objects
FoxPro developers have wanted an objectoriented report writer since VFP 3 was released. Although the
classes presented in this article don't have a pretty visual designer tool, they do expose the FRX as a set
of objects and provide a simple way to create reports programmatically.
White Paper Samples
http://doughennig.com/papers/default.html 21/28
17.08.2015 Technical Papers
Reporting Errors
This month's article presents an error reporting class that prompts the user to fax or email you
information about errors that occur. Doug also describes improvements he's made to the error handling
scheme he presented in articles two years ago.
White Paper Samples
Reporting System Enhancements in VFP 9
The major focus of VFP 9 is improving the reporting system. The list of new and improved features is
enormous: multiple detail bands, protection of objects in the Report Designer, designtime events, ability
to position objects absolutely, more zoom levels, better menus, etc. This document explores these
enhancements in detail, demonstrates some types of reports you couldn't do in earlier versions of VFP,
and provides an introduction to the "Extending the VFP 9 Reporting System" documents.
White Paper Samples
Retrieving and Updating Data With CursorAdapters
The new CursorAdapter base class added in VFP 8 provides an easytouse, consistent interface to data.
This month's article shows how to use CursorAdapter to access local data and remote data via ODBC,
ADO, and XML, discussing the particular requirements and "gotchas" for each.
White Paper Samples
Reusable Data Classes
VFP developers have wanted reusable data classes for a long time. Although there were various ways of
handling this in earlier versions, they were often kludges. Now in VFP 8, we have true reusable data
classes. This month, Doug looks at subclasses of CursorAdapter and DataEnvironment, creates some
reusable data classes from these subclasses, and shows how these data classes can be used in both forms
and reports.
White Paper Samples
RoleBased Security
Rolebased security allows you to specify which users have rights to particular secured entities, but at a
group, or role, level. This month, Doug Hennig starts a discussion of how he implements rolebased
security in his applications.
White Paper Samples
RoleBased Security, Part II
In part 2 of Doug Hennig's series on rolebased security, he looks at code used for manage the rights
users and roles have to secured elements, discusses password encryption, and shows how user login
works.
http://doughennig.com/papers/default.html 22/28
17.08.2015 Technical Papers
White Paper
RoleBased Security, Part III
This month, Doug Hennig winds up his series on rolebased security by examining a form class
responsible for maintaining users and roles.
White Paper Samples
Searching With Web Services
Web Services make it easy to access functions on other computers. Several Web sites now provide a
Web Service to search their archives for text. However, every Web Service has a different interface and
returns results in a different format. This month, Doug shows how to create a wrapper to provide a
consistent way to search for the same text from many Web Services.
White Paper Samples
See Reports in Your Mind's Eye
Interested in more flexibility in your reports? Want to output to PDF files? How about graphs? The
Mind's Eye Reporting Engine is an incredible new tool that'll make you forget the VFP Report Preview
window. In this month's article, Doug explains why.
White Paper Samples
Spam, Wonderful Spam
This month's article puts emailing on steroids. The tools presented here provide the ability to send bulk
emails to anyone listed in a table.
White Paper Samples
Splitting Up is Hard to Do
While they aren't used everywhere, splitter controls can add a professional look to your applications
when you have left/right or top/bottom panes in a window. This month's article implements a splitter
using the new OLE drag and drop features added in VFP 6.
White Paper Samples
Taking Control
This month, Doug Hennig discusses a simple way to make anchoring work the way you expect it to and
how to control the appearance and behavior of a report preview window.
White Paper Samples
Tame Your ActiveX Controls
http://doughennig.com/papers/default.html 23/28
17.08.2015 Technical Papers
ActiveX controls are forwardly but not backwardly compatible. This means if you install a newer version
of an OCX on your system, any applications you ship to people with an older version installed will break.
This article presents a reusable tool that solves this problem in a simple, easytouse manner.
White Paper Samples
Task Scheduler
This provides classes that can be used to create tasks in the Windows Task Scheduler. There are separate
classes for Windows Vista, which uses Task Scheduler 2.0 and earlier Windows versions, which use
Task Scheduler 1.0.
Samples
The Best of Both Worlds
You don't have to sacrifice performance for ease of installing new versions of applications. Using
STARTAPP, you can run applications from local drives for best performance, and yet have them
automatically updated from a common server directory when you install a new version. This solution
also gives a secondary benefit: you can easily change where your data files are located without rebuilding
your application.
White Paper Samples
The Happy Project Hooker
Project objects and ProjectHooks are new in VFP 6. Together, they provide the ability to add to or
change the behavior of the Project Manager. Doug's article presents tools that allow you to have project
specific field mappings, perform text search on all files in a project, log activities, and have a toolbar of
useful project functions.
White Paper Samples
The Last Pick List You'll Ever Need
Last month's column looked at classes dealing with lookup tables. Closely related to lookups are pick
lists. Pick lists were ubiquitous in FoxPro 2.x applications, but even with comboboxes and listboxes, are
still useful in today's applications. This month, Doug presents reusable classes that provide pick list
features, and expands our base class library to provide row highlighting in grids.
White Paper Samples
The Mother of All TreeViews
If you've ever had to work with a TreeView control, you'll appreciate Doug Hennig's article this month: it
provides a class that encapsulates all of the quirky behavior of a TreeView so you don't have to worry
about it. You need only implement a few methods to get a fullyfunctional control that provides the
features your users need.
White Paper Samples
http://doughennig.com/papers/default.html 24/28
17.08.2015 Technical Papers
The Mother of All TreeViews, Part 2
Last month, Doug presented a reusable class that encapsulates most of the desired behavior for a
TreeView control. He discussed controlling the appearance of the TreeView, loading the nodes in the
TreeView, and restoring the TreeView's state. This month, he finishes the discussion of this class and
shows a form class that provides the features needed in any form that displays a TreeView and the
properties of the selected node.
White Paper Samples
Tools for and by Geeks and Gurus
HackCX Professional and ViewEditor Professional are two tools from Geeks and Gurus that can make
your life easier. HackCX allows you to edit SCX and VCX files in ways the Form and Class Designers
can't, and ViewEditor is more convenient and safer to use than VFP's View Designer.
White Paper
Understanding DBCX 2
DBCX is a public domain data dictionary extension manager for Visual FoxPro. A colloboration between
leading industry vendors Stonefield Systems Group, F1 Technologies, Flash Creative Management, and
Micromega Systems, DBCX provides a core set of functions that allows third party products to
effectively share extended data dictionary information. DBCX was recently rewritten to add speed and
flexibility. This session concentrates on the design and implementation of DBCX so you can understand
what goes on "under the hood" in products such as Visual FoxExpress and Stonefield Database Toolkit.
White Paper Samples
Unit Testing VFP Applications
Unit testing is a very important part of application development and yet it seems that few VFP developers
use this important technique. Unit testing allows you to confirm that code has the functionality expected
of it, and is especially important when refactoring or making other changes to your code. This document
introduces you to unit testing and the VFX FoxUnit project so you can be confident in your application's
success before you deploy it.
White Paper Samples
Updating an Application over the Internet
Ever wanted to update your client's applications with minimal effort? This month's article, the first of two
on this topic, presents a set of classes that download an application's files from an FTP site, automating
the process of distributing application updates.
White Paper Samples
Updating an Application over the Internet, Part II
http://doughennig.com/papers/default.html 25/28
17.08.2015 Technical Papers
This second of a twopart series looks at several strategies for automating the process of distributing
application updates by downloading an application's files from an FTP site.
White Paper Samples
Using VFP to Create CHM Files From Word Documents
Tools like the Microsoft HTML Help Workshop or West Wind HTML Help Builder can make short
work of generating an HTML Help (CHM) file. However, what if you're not starting from scratch but
from a set of existing Word documents? This session discusses the basics of generating CHM files,
covers the tasks necessary to create CHM files from Word documents, and presents a set of tools that
automates the process.
White Paper Samples
Using Visual FoxPro's ActiveX Controls
Visual FoxPro includes a lot of ActiveX (formerly OLE) controls that can add great new features to your
applications. Many of these, including the TreeView, ListView, StatusBar, and CommonDialog controls,
allow you to create a Windows 9x interface for your applications. Others, such as the MAPI controls and
Comm control, allow you to add messaging and serial port control to your applications. Some of these
controls are less useful: the "Threed" controls, for example, provide very little beyond what the native
VFP controls already have, and seem to just be there for Visual Basic or Access usage.
White Paper Samples
Using ctl32 to Create a More Modern UI
Carlos Alloatti has created an incredible library called ctl32 that you can use to quickly add attractive
controls to your VFP applications. It allows you to both provide a fresher, more modern interface and to
add functionality that other VFP controls don't have. This document examines the library in detail and
shows you how to implement the controls in your own applications.
White Paper Samples
Using the Coverage Profiler
Visual FoxPro (VFP) includes an important tool called the Coverage Profiler that provides both code
coverage and profiling. This document examines how to use this tool for effective application testing,
and shows how simple addins can increase its usefulness. I'm not going to discuss when or why, but
how. In other words, we're not going to look at testing and profiling theories and concepts, but rather how
the Coverage Profiler works and how to use it.
White Paper Samples
Web Page Components
With its fast and powerful string functions, VFP is a great tool for generating HTML. This month, Doug
Hennig shows how you can treat Web pages as a collection of reusable HTML "components", to easily
http://doughennig.com/papers/default.html 26/28
17.08.2015 Technical Papers
generate both static and dynamic Web sites.
White Paper Samples
Win32API for VFP Developers
The Windows API (Win32API) contains thousands of useful functions. However, finding which function
to use when, and how to call it from a VFP application, can be challenging. This document discusses how
API functions are called in VFP, where to find information on the API, and presents lots of useful API
functions you can call in your VFP applications today.
White Paper Samples
Windows 95 Issues for FoxPro
This month's column examines issues FoxPro developers must take into account when developing
applications that will run under Windows 95. We'll also look at techniques for creating crossplatform
(Windows 3.1 and Windows 95) applications.
White Paper Samples
Windows Event Binding Made Easy
A feature available in other development environments but missing in VFP is the ability to capture
Windows events. VFP 9 extends the BINDEVENT() function to allow our own code to be called when
Windows passes certain messages to VFP windows. This has a wide range of uses, some of which Doug
examines in this month's article.
White Paper Samples
Working With Arrays
This month's column examines some best practices for working with arrays, including a library routine
that does a better job of searching an array than ASCAN and one that cleans up by closing all tables
opened by a routine.
White Paper Samples
XML Web Services for Visual FoxPro Developers
XML Web services are becoming very important for application development. Based on XML, SOAP
and open standards, XML Web services are the building blocks of distributed applications. Visual
FoxPro 8 makes it easier than ever to register, explore, consume, and publish XML Web services. This
document explores the use of XML Web services in VFP applications. You'll see how to use the new
XML Web Service Builder to bind controls to XML Web services results with very little code. You'll
also discover how to publish XML Web services written in VFP.
White Paper Samples
http://doughennig.com/papers/default.html 27/28
17.08.2015 Technical Papers
Zip it, Zip it Good
This month's article presents a class to zip and pack the files in a project, and a class to interface VFP
with a zipping utility like WinZip. Combining these classes with a ProjectHook and a project toolbar
helps improve your productivity.
White Paper Samples
Copyright (c) 20112014. All Rights Reserved.
Home | About Me | Photo Gallery | Links | Technical Papers
http://doughennig.com/papers/default.html 28/28