0% found this document useful (0 votes)
117 views28 pages

Technical Papers PDF

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
117 views28 pages

Technical Papers PDF

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

17.08.

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 controls­ThemedButton,
ThemedContainer, ThemedExplorerBar, ThemedForm, ThemedOutlookNavBar,
ThemedTitlePageFrame, ThemedToolbox, and ThemedZoomNavBar­that 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 two­part 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 two­part 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 Add­on: 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 event­driven
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 read­only 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­
to­use, 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 full­featured, high­performance 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, multi­step 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 data­driven 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 add­ins 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, time­consuming 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 six­part 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 multi­column
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
two­part 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,
object­oriented Microsoft Office­like menus, a 100% VFP code date picker control, a control for
displaying "balloon tips", and a modern­looking 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 ever­moving 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

Explorer­style 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 two­part 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 two­part article, Doug looks at a solution to this problem. He also
examines the use of multi­purpose 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 non­VFP 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 non­VFP 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

Data­Drive 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 data­driving key
pieces of your applications can make them more flexible and more maintainable.

White Paper   Samples

Data­Driving 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 data­driving 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 table­level 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 read­only 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 up­to­date 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 modern­looking menus (complete with Most
Recently Used features), toolbars (including command buttons with drop­down 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 7­compatible 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 Vista­compatible 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: Design­Time
Among the new and improved features in the reporting system of VFP 9 is the ability to extend the
Report Designer to provide easier­to­use, more powerful, and more flexible report writing to your
development team and even your end­users. 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: Run­Time

In addition to the design­time 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, array­based collections with a lot of members can suffer from
poor performance at load and destroy time, and take up tons of memory. A file­based 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 easy­to­use 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
cross­tabulation 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 less­obvious 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 Installer­based 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, easy­to­use 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 COM­based 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 object­based 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 N­Tier Development

As applications get ever more complex, designing application in components becomes very important to
the successful completion of projects. This session discusses what n­tier 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 real­world 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 object­oriented 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

Multi­User 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 multi­user 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
Object­oriented 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 object­oriented 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 one­third 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 object­oriented 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, design­time 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 easy­to­use, 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

Role­Based Security
Role­based 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 role­based
security in his applications.

White Paper   Samples

Role­Based Security, Part II

In part 2 of Doug Hennig's series on role­based 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  

Role­Based Security, Part III
This month, Doug Hennig winds up his series on role­based 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, easy­to­use 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 fully­functional 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 two­part 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 add­ins 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 cross­platform
(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) 2011­2014. All Rights Reserved.

Home | About Me | Photo Gallery | Links | Technical Papers

http://doughennig.com/papers/default.html 28/28

You might also like