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).
There's no excuse for creating a boring looking VFP application. Using some of the controls available today, you can create a new, modern user interface for your forms that'll add years to the life of your applications. With a few days of effort, your apps can be as pretty as anything out there. This document looks at several new controls that allow you to freshen your user interface and wash out the grey.
Published/Presented: October 2015, SWFox 2015
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.
Published/Presented: October 2010, SWFox 2010
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.
Published/Presented: November 1997, FoxTalk
In "Advanced Uses for Dynamic Form", Doug discussed a couple of dynamic dialogs built with the assistance of Dynamic Form. In this document, he presents another dynamic, generic dialog, this time to display application information.
Published/Presented: November 2016, FoxRockX
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.
Published/Presented: March 2008, FoxRockX
Part 1 of this two-part series presented a set of classes making up a generic import utility you can add to your applications to provide import capabilities from a variety of data sources. Part 2 focuses on the user interface components.
Published/Presented: May 2008, FoxRockX
Dougs 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.
Published/Presented: November 2010, FoxRockX
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.
Published/Presented: August 1997, FoxTalk
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.
Published/Presented: March 2006, FoxTalk
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.
Published/Presented: February 2000, DevCon 2000
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 document, Doug examines CursorAdapters and how they work. In the next document, we'll take a look at some advanced uses of them.
Published/Presented: October 2002, FoxTalk
FoxCharts is a free component from VFPX that uses 100% VFP code to create beautiful modern-looking charts. It can create many different types of charts: bar, column, pie, doughnut, line, area, and so on, and supports 3-D effects. It makes full use of colors, including transparency, using solid, gradient and hatch brushes. This document looks at the basics of FoxCharts and then moves on to creating more complex charts. It also shows a help utility that allows your users to modify the chart as they desire at runtime.
Published/Presented: November 2014, German DevCon 2014
They say a picture is worth a thousand words. That's especially true with a gauge control, which allows a user to see at a glance how some value compares to a goal amount. In this document, Doug presents an easy-to-use gauge control you can use in your VFP applications.
Published/Presented: May 2015, FoxRockX
You may have seen sessions at Southwest Fox conferences on using wwDotNetBridge to call .NET code from VFP. If you haven't, this document will introduce you to the benefits .NET can add to your VFP applications. However, this document is more from the .NET side. When do you need to write a wrapper program in .NET rather than accessing the .NET code directly? How do you write such a wrapper? This document will also look at a new interop library by James Suárez called Kodnet. This library has some features that aren't available in wwDotNetBridge.
Published/Presented: October 2019, SWFox 2019
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 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.
Published/Presented: September 2006, DevCon 2006
Dynamic Form is an under-used project in VFPX. Its ability to create forms quickly and dynamically isn't something every developer needs but if you need it, Dynamic Form is indispensable. In this document, Doug discusses some advanced uses for Dynamic Form, including data driving the markup code.
Published/Presented: September 2016, FoxRockX
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.
Published/Presented: April 2008, FoxRockX
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 document, Doug shows how you can do it by simply setting a couple of properties.
Published/Presented: March 2006, FoxTalk
Even if you haven't considered contributing to a VFPX project (and you should), you may be curious about what goes into such a project behind the scenes. This document delves into all aspects of a VFPX project, including organization and deployment.
Published/Presented: May 2023, Virtual Fox Fest 2023
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.
Published/Presented: April 1998, FoxTalk
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.
Published/Presented: August 2003, FoxTalk
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.
Published/Presented: March 2006, GLGDW 2006
Wizards provide an ideal way of holding your users hands through complex, multi-step tasks. This document presents a set of classes you can use to build your own wizards.
Published/Presented: May 1998, FoxTalk
BuilderD is a new data-driven builder technology that comes with VFP 6. In this document, Doug takes a look at how BuilderD works and how you can create builders with it in record time.
Published/Presented: March 1999, FoxTalk
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.
Published/Presented: December 1997, FoxTalk
Creating builders is a snap using enhancements to Ken Levy's BuilderD technology described in this document.
Published/Presented: April 1999, FoxTalk
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 shows 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.
Published/Presented: October 1999, DevCon 1999
Figuring out why a user is getting different results than you are can be a frustrating, time-consuming task. In this document, Doug looks at a way of instrumenting your application so you can quickly determine what is being executed and how long it's taking.
Published/Presented: October 2003, FoxTalk
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. In this document, Doug discusses structured error handling and shows how it fits in with a complete error handling strategy.
Published/Presented: January 2003, FoxTalk
This is last of a six-part series on language enhancements in VFP 7. This document focuses on those enhancements related to COM.
Published/Presented: June 2001, FoxTalk
Doug's "Creating ActiveX Controls for VFP Using .NET" white paper shows how to create .NET components that can be used in Visual FoxPro applications. However, these types of controls suffer from a couple of issues: they have to be registered for COM on the customer's system and there are limitations in working with .NET Interop in VFP that prevent many things from working correctly. This document shows how Rick Strahl's wwDotNetBridge eliminates these issues and provides some practical examples of how this tool can be used in your applications.
Published/Presented: November 2013, German DevCon 2013
Visual FoxPro has a lot more places to put code than FoxPro 2.x. This document 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.
Published/Presented: December 1996, FoxTalk
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.
Published/Presented: July 1998, FoxTalk
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.
Published/Presented: October 1998, FoxTalk
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.
Published/Presented: January 2011, FoxRockX
XML Web services are becoming very important for application development, and VFP 8 makes it easier than ever to use them. In this document, 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.
Published/Presented: July 2003, FoxTalk
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.
Published/Presented: October 2010, SWFox 2010
Craig Boyd has produced some very cool tools for VFP developers. In this document, Doug examines Craig's encryption library and splitter and progress bar controls.
Published/Presented: April 2006, FoxTalk
Doug Hennig continues his examination of cool tools provided to the VFP community by Craig Boyd.
Published/Presented: May 2006, FoxTalk
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 white paper shows 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.
Published/Presented: July 2006, DevCon 2006
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.
Published/Presented: October 2001, FoxTalk
VFP 9 makes it possible to create your own editors for custom properties of classes and forms. This document presents a framework for these editors, allowing you to focus on the editor itself rather than the plumbing necessary to hook in the editor.
Published/Presented: July 2005, FoxTalk
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.
Published/Presented: October 2011, SWFox 2011
Laying out a web page using HTML and CSS can be challenging. Do you use the older table mechanism or CSS floats to place objects side-by-side? How do you deal with differences in browsers? And what about handling different devices: phones, tablets, laptops, and desktops?
Bootstrap is a free, open source framework for developing responsive, mobile-first web sites. It solves many problems web developers typically face and makes it easy to create beautiful web sites in record time, even for inexperienced developers.
This document shows how to get started with Bootstrap, examines using its grid system to easily layout your page elements, and discusses how Bootstrap components add attractive and functional elements to your web site. We'll do a "makeover" of a real web site to show how easy is it to make it more attractive, functional, and mobile-friendly.
Published/Presented: November 2016, SWFox 2016
Reports and menus are two components in VFP for which there is no object-oriented access. And yet an OOP approach to both would make them much easier to work with, especially if you want to dynamically create or make changes to them at runtime. I created object-oriented wrappers for both reports and menus and have used them successfully for many years. In this document, I'll show you how to use these wrappers to provide cool features to your applications, such as dynamic menus that provide control for security purposes and dynamic reports that output the contents of a grid or form.
Published/Presented: October 2019, SWFox 2019
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 document presents a set of classes and techniques that makes short work of developing explorer interfaces for your applications.
Published/Presented: October 2008, SWFox 2008
Adding support for plug-ins to your applications has a lot of benefits: users can extend or alter the functionality of the application, you can deploy new features without installing a new build, and you can create customer-specific versions of an application without endless sets of CASE statements. This document looks at how adding plug-in support can help your applications and looks at several techniques that can be used independently or together.
Published/Presented: October 2015, SWFox 2015
This article discusses how to create iCalendar files so scheduled items can automatically be added to a calendar.
Published/Presented: September 2017, FoxRockX
This document uses great ideas from other applications to create some custom classes you can include in any application.
Published/Presented: March 1997, FoxTalk
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.
Published/Presented: September 2009, FoxRockX
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.
Published/Presented: July 2009, FoxRockX
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.
Published/Presented: August 1998, FoxTalk
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.
Published/Presented: October 1996, FoxTalk
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.
Published/Presented: November 1996, FoxTalk
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 examines the pros and cons of different mechanisms and discuss when it's appropriate to use a particular strategy. We 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.
Published/Presented: March 2002, GLGDW 2002
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.
Published/Presented: March 2002, GLGDW 2002
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 document looks at how data-driving key pieces of your applications can make them more flexible and more maintainable.
Published/Presented: August 2002, FoxTalk
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 document 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.
Published/Presented: March 2002, DevEssentials 2002
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.
Published/Presented: July 2001, DevCon 2001
Like regular 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. This document 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.
Published/Presented: November 2003, FoxTalk
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.
Published/Presented: October 2001, GLGDW 2001
Like Windows Vista before it, Windows 7 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 Windows 7-compatible applications with Visual FoxPro.
Published/Presented: October 2011, SWFox 2011
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.
Published/Presented: October 2007, SWFox 2007
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.
Published/Presented: June 2004, FoxTalk
This document presents a grid class to display child records for a parent and a form class to edit the selected child record.
Published/Presented: September 1999, FoxTalk
Do your users want to drill down into their data to see increasing levels of detail? You might think the TreeView control discussed in a previous article is perfect for this, but it doesn't provide the ability to show columns of information. This document 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.
Published/Presented: July 1997, FoxTalk
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.
Published/Presented: May 2011, FoxRockX
In the previous issue, Doug discussed a free library generously provided by Craig Boyd to compress and decompress files using the ubiquitous ZIP format. This time, he examines another free library from Craig, one that encrypts and decrypts strings and files.
Published/Presented: March 2011, FoxRockX
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 document 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.
Published/Presented: January 1998, FoxTalk
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.
Published/Presented: October 2002, GLGDW 2002
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 document 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.
Published/Presented: March 1999, FoxTeach 1999
ODBC (Open DataBase Connectivity) has been around since the early 1990s, but there's more to it than just connecting to and querying a database. This white paper looks at all things ODBC, such as whether to use a DSN or a connection string, how differences between drivers affect your code, how different settings in VFP can impact a query, and many more topics.
Published/Presented: October 2021, Virtual Fox Fest 2021
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:
Published/Presented: May 2005, DevCon 2005
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 document shows you how to customize the IDE in ways you never thought possible.
Published/Presented: September 2004, FoxTalk
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.
Published/Presented: November 2004, OzFox 2004
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.
Published/Presented: November 2004, OzFox 2004
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.
Published/Presented: August 2005, FoxTalk
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.
Published/Presented: November 2000, FoxTalk
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.
Note: this was first presented at the German DevCon in 2013 but was updated for presentation at Southwest Fox in 2018.
Published/Presented: November 2013, German DevCon 2013
This builder allows you to format grids dynamically.
Published/Presented: May 2022, Blog
This document 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.
Published/Presented: February 2000, FoxTalk
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 presents several useful API functions you can call in your VFP applications today.
Published/Presented: July 2001, FoxTalk
This article focuses on handling multiple monitors when persisting the size and location of forms.
Published/Presented: July 2017, FoxRockX
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 document shows techniques for handling specific foreseeable errors at the appropriate level.
Published/Presented: February 1998, FoxTalk
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 document presents several routines that emulate these new functions in VFP 6 so you can start using these capabilities today.
Published/Presented: December 2000, FoxTalk
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.
Published/Presented: April 1997, FoxTalk
In a previous article, Doug 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 document looks at how output generated from reports can have live hyperlinks so some action is performed when they're clicked.
Published/Presented: March 2005, FoxTalk
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.
Published/Presented: April 2005, FoxTalk
Thanks to the new ReportListener in VFP 9, we have a lot more control over where reports are rendered. In a previous article, Doug showed a listener that collaborates with a custom preview window to provide a "live" preview surface. This document takes it a step further and adds support for finding and highlighting text.
Published/Presented: May 2005, FoxTalk
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 looks 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.
Published/Presented: September 1997, DevCon 1997
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.
Published/Presented: July 2006, DevCon 2006
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.
Published/Presented: July 2006, DevCon 2006
VFP 9 provides support for IntelliSense at runtime. This document examines why this is useful, discusses how to implement it, and extends Favorites for IntelliSense to support it.
Published/Presented: November 2005, FoxTalk
The Project Manager is one of the oldest tools built into VFP, and it's been showing its age for a long time. For example, it doesn't provide integration with modern distributed version control systems (DVCS) such as Mercurial and Git, it doesn't have a way to filter or organize the list of items, and it can only work with one project at a time.
Project Explorer is a VFPX project that replaces the Project Manager with a modern interface and modern capabilities. It has all of the features of the Project Manager but adds integration with DVCS (including built-in support for FoxBin2PRG and optional auto-commit after changes), supports multiple projects within a "solution", allows you to organize your items by keyword or other criteria, and has support for easy "auto-registering" addins that can customize the appearance and behavior of the tool.
This document introduces Project Explorer and shows how it can make you more productive than working with the Project Manager. This document starts by going through the interface and functionality of Project Explorer, then looks at its internals to see how it's designed, and finally shows how to write addins that extend the functionality or customize the user interface.
Published/Presented: November 2017, SWFox 2017
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.
Published/Presented: March 2000, Double Impact 2000
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.
Published/Presented: October 2012, SWFox 2012
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 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.
Published/Presented: November 2009, German DevCon 2009
As applications get ever more complex, designing application in components becomes very important to the successful completion of projects. This document discusses what n-tier development is, why it's important to modern application development, and shows strategies of how you can break out the tiers using Visual FoxPro.
Published/Presented: April 2001, DevConnection 2001
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.
Published/Presented: September 1997, FoxTalk
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.
Published/Presented: April 2004, FoxTalk
Dangling object references are among the hardest bugs to track down, and can cause a wide range of problems. This document looks at the cause of these problems, presents a couple of tools to help track them down, and discusses techniques for preventing them.
Published/Presented: October 1999, FoxTalk
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.
Published/Presented: January 2001, FoxTalk
This article continues the series on language enhancements in VFP 7, discussing enhancements to existing commands and functions.
Published/Presented: February 2001, FoxTalk
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.
Published/Presented: March 2001, FoxTalk
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.
Published/Presented: April 2001, FoxTalk
This fifth in a series of articles on language enhancements in VFP 7 covers the remaining new general-purpose commands and functions.
Published/Presented: May 2001, FoxTalk
Rick Borup's sessions at previous Southwest Fox conferences really helped me get started using version control for my application development. Since then, I've made a ton of mistakes and learned a lot of lessons the hard way. This document discusses what has evolved into my team's best practices for version control. It's intended for those who are familiar with version control but are looking for ideas about how to improve their processes.
Published/Presented: November 2016, SWFox 2016
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 document looks at ReportListener and shows an example of how it solves a real-world problem.
Published/Presented: February 2005, FoxTalk
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!
Published/Presented: December 1999, FoxTalk
Although classes get most of the attention today, there's still a place for PRGs. This document looks at some library routines packaged as PRGs.
Published/Presented: November 1999, FoxTalk
Last issue, Doug discussed ctl32_ContextMenu, an object-oriented menu class that's part of the ctl32 library. This document looks at another OOP menu class, this time the VFPX PopMenu project.
Published/Presented: January 2012, FoxRockX
This document presents a simple yet useful tool, and discusses several reusable techniques used in this tool.
Published/Presented: April 2000, FoxTalk
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 document focuses on these tools and provide practical examples of using them to boost your productivity.
Published/Presented: May 1998, DevCon 1998
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 document presents a license manager that can help with these tasks.
Published/Presented: June 2000, FoxTalk
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 document 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.
Published/Presented: October 2010, SWFox 2010
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.
Published/Presented: March 1998, FoxTalk
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.
Published/Presented: June 2005, DevCon 2005
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 looks at some of the FFC classes and see how we might use them or even subclass them to make them even more useful.
Published/Presented: August 2000, DevCon 2000
DBI Technologies is the only ActiveX control vendor that actively supports VFP developers. Their Studio Controls for COM suite provides 88 controls that allow you to modernize the user interface of your applications so they look more like Microsoft Office. This document looks at several of the controls in this suite, showing you how to implement them to freshen and extend the life of your applications.
Published/Presented: October 2020, Virtual Fox Fest 2020
The builders and wizards that come with VFP often don't do quite what you need them to. This document shows how to remedy this.
Published/Presented: August 1999, FoxTalk
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 document takes a look at how easy it is to incorporate XFRX in your applications.
Published/Presented: February 2004, FoxTalk
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.
Published/Presented: September 2001, FoxTalk
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 Visual FoxPro, data buffering is built in, so fields can be edited directly. This document discusses how data buffering works and explores strategies for selecting which buffering mechanism to use and how to handle multi-user conflicts.
Published/Presented: June 1996, Minneapolis 1996
This article focuses on why the normal sorting done by computers doesn't always work and how natural sorting solves the problem.
Published/Presented: September 2017, FoxRockX
Creating documentation for an application is something most developers dread. However, using West Wind Technologies' HTML Help Builder makes working on a help file almost fun!
Published/Presented: May 2016, FoxRockX
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.
Published/Presented: September 2001, DevCon 2001
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 document focuses on new and improved OOP and language features so you can quickly get up to speed on the newest version of VFP.
Published/Presented: September 2004, DevCon 2004
Carlos Alloatti is a prolific developer of classes that can make your application's user interface sparkle. In this document, Doug looks at a couple of new libraries Carlos created that can replace the VFP Toolbar and provide a tabbed document interface to your applications.
Published/Presented: March 2015, FoxRockX
Object-oriented menus have been one of the most commonly requested enhancements to VFP. This document presents a set of classes that allow you to implement object-oriented menus right now.
Published/Presented: August 2001, FoxTalk
This document 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.
Published/Presented: February 1997, FoxTalk
This document 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.
Published/Presented: January 2000, FoxTalk
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.
Published/Presented: October 2009, SWFox 2009
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.
Published/Presented: March 2003, DevCon 2003
XML can be a great way to store some types of data or transfer data from one application to another. This document 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.
Published/Presented: November 2008, German DevCon 2008
wwDotNetBridge lets you call just about any .NET code directly from VFP and helps overcome most of the limitations of regular .NET COM interop. This library by Rick Strahl allows you to provide .NET functionality to your VFP applications that wouldn't otherwise be available. In this session, you'll see many practical examples that show how you can add new capabilities to your applications that would be difficult or impossible to achieve natively from VFP.
Published/Presented: November 2017, German DevCon 2017
Visual FoxPro has many text processing functions, including ATC() and STRTRAN(). However, these functions suffer from one flaw: they are character-based rather than word-based, so they can find substrings you may not have wanted. In this document, Doug presents replacement functions that word on whole words.
Published/Presented: November 2016, FoxRockX
Concentrating on communication between routines can reduce up to one-third of the errors in your applications. This document examines some "Best Practices" regarding the use of parameters.
Published/Presented: May 1996, FoxTalk
Event binding, added in VFP 8, is getting more and more used as VFP developers discover its powerful capabilities. This document examines a couple of uses Doug's been making of this technique lately.
Published/Presented: October 2005, FoxTalk
These sample files are for my blog post Render a Report Image in the Foreground.
Published/Presented: August 2016, Blog
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.
Published/Presented: June 1999, FoxTalk
This document 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.
Published/Presented: August 2000, FoxTalk
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.
Published/Presented: September 2004, DevCon 2004
The new CursorAdapter base class added in VFP 8 provides an easy-to-use, consistent interface to data. This document 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.
Published/Presented: November 2002, FoxTalk
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 document 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.
Published/Presented: December 2002, FoxTalk
Role-based security allows you to specify which users have rights to particular secured entities, but at a group, or role, level. This document starts a discussion of how he implements role-based security in his applications.
Published/Presented: December 2005, FoxTalk
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.
Published/Presented: January 2006, FoxTalk
This document winds up Doug's series on role-based security by examining a form class responsible for maintaining users and roles.
Published/Presented: February 2006, FoxTalk
Automatically executing a task on a regular schedule isn't something every application needs to do, but if you do need it, this document provides the code you need to do this from VFP.
Published/Presented: July 2015, FoxRockX
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 document shows how to create a wrapper to provide a consistent way to search for the same text from many Web Services.
Published/Presented: June 2002, FoxTalk
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 document, Doug explains why.
Published/Presented: April 2003, FoxTalk
This class provides the ability to send emails from VFP applications using either SMTP or MAPI. It supports the latest SMTP protocols.
Published/Presented: October 2020, Blog
This document puts emailing on steroids. The tools presented here provide the ability to send bulk emails to anyone listed in a table.
Published/Presented: March 2000, FoxTalk
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 document implements a splitter using the new OLE drag and drop features added in VFP 6.
Published/Presented: July 1999, FoxTalk
This document 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.
Published/Presented: June 2005, FoxTalk
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.
Published/Presented: June 1998, FoxTalk
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.
Published/Presented: October 1997, FoxTalk
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.
Published/Presented: September 1998, FoxTalk
A previous document 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 document presents reusable classes that provide pick list features, and expands our base class library to provide row highlighting in grids.
Published/Presented: November 1998, FoxTalk
Deployment of your application is easily as important as the rest of the development cycle since it's the first encounter your users have with the application. This document looks at some new ideas for application deployment, including creating a workstation-only installer, installing your application on a server without requiring a workstation installation (zero footprint deployment), and how to update your applications over the Internet.
Published/Presented: October 2014, SWFox 2014
If you've ever had to work with a TreeView control, you'll appreciate this document: 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.
Published/Presented: July 2004, FoxTalk
In a previous document, 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 document 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.
Published/Presented: August 2004, FoxTalk
Recently, VFPX was moved and revamped. In this article, Doug explores the new home of VFPX.
Published/Presented: November 2017, FoxRockX
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.
Published/Presented: December 2003, FoxTalk
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 document 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.
Published/Presented: August 1998, FoxTalk
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.
Published/Presented: November 2013, German DevCon 2013
Ever wanted to update your client's applications with minimal effort? This document, 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. Note: this document is out-of-date because it doesn't handle changes to security starting with Windows Vista; see "The Latest Techniques in Deploying VFP Applications" for a newer solution.
Published/Presented: September 2000, FoxTalk
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. Note: this document is out-of-date because it doesn't handle changes to security starting with Windows Vista; see "The Latest Techniques in Deploying VFP Applications" for a newer solution.
Published/Presented: October 2000, FoxTalk
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 document 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.
Published/Presented: April 2002, FoxTalk
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.
Published/Presented: November 1997, GLGDW 1997
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.
Published/Presented: November 2012, German DevCon 2012
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.
Published/Presented: September 1999, DevCon 1999
It's been three years since Rick Schummer last presented one of his excellent "deep dive" sessions into VFPX, so it's time for an update. We'll start by looking at the new GitHub-based VFPX site, then dive into several exciting projects.
Published/Presented: November 2018, SWFox 2018
With its fast and powerful string functions, VFP is a great tool for generating HTML. This document shows how you can treat Web pages as a collection of reusable HTML "components", to easily generate both static and dynamic Web sites.
Published/Presented: May 2004, FoxTalk
The last session looking at new VFPX projects was at Southwest Fox in 2018, so it's time for an update. There are at least 20 new projects since then, so this session will cover as many of them as time permits.
Published/Presented: October 2022, Virtual Fox Fest 2022
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.
Published/Presented: November 2015, German DevCon 2015
This document 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.
Published/Presented: August 1996, FoxTalk
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 document.
Published/Presented: January 2005, FoxTalk
Windows PowerShell has been included with the operating system since Windows 7 and is available for download for Windows XP and Vista. What is PowerShell? It's Microsoft's task automation scripting framework. PowerShell isn't just a replacement for batch files; it can do a lot more than batch files ever could. This document looks at PowerShell, including why you should start using it and how to create PowerShell scripts.
Published/Presented: October 2014, SWFox 2014
This document 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.
Published/Presented: January 1997, FoxTalk
Microsoft Excel is one of the most widely-used applications ever. Because of its popularity, other applications often need to read from or write to Excel documents. This document, the first of two, discusses several mechanisms for outputting VFP data to Excel.
Published/Presented: July 2016, FoxRockX
Microsoft Excel is one of the most widely-used applications ever. Because of its popularity, other applications often need to read from or write to Excel documents. Part 1 discussed several mechanisms for outputting VFP data to Excel. This document looks at ways to read Excel documents into VFP.
Published/Presented: September 2016, FoxRockX
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.
Published/Presented: September 2003, GLGDW 2003
This document 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.
Published/Presented: May 2000, FoxTalk