Wednesday, May 09, 2018

Improvements in Project Explorer

Thanks to many suggestions from the Fox community, I’ve made lots of improvements to the Project Explorer VFPX project since I presented it at Southwest Fox in October 2017 and the German DevCon in November 2017.

Creating new classes and forms

When you click the New button in the toolbar for classes, the New Class dialog appears:


It has similar functionality to that dialog in the Project Manager, with these additional features:

  • Based on is set to the name of the selected class if there is one. This makes it easy to subclass an existing class by simply selecting it and clicking the New button.
  • From is set to the selected VCX but it’s a combobox containing the ten most recently used class libraries, so you can select one from the list. Based on adjusts to display the classes in the selected library. The libraries are listed in most recent to least recent order.
  • You can create a new class by subclassing the Based on class or by copying it (the equivalent of dragging a class from one VCX to another and then renaming it in the Project Manager).

To create a form from a form class, right-click the class and choose Create Form from Class, then specify the name and path of the new form in the file dialog that appears.

Performance improvements

  • At startup, the project was opened and closed multiple times in order to get the version control status of all files. That no longer happens.
  • If only the text equivalents of binary files are stored in the repository, Project Explorer no longer closes the project when committing changes to a file or getting the version control status of a file.
  • Rather than having a single TreeView control that’s constantly emptied and reloaded as you change the selected tag, there’s now one TreeView per tag. Selecting a tag the first time loads and displays that TreeView, including getting the version control status of every file in that tag, and hides the other ones; the next time that tag is selected, the TreeView isn’t reloaded but is simply redisplayed. This makes the performance of switching tags in a large project much faster.

Version control improvements

  • Project Explorer now works properly with Git even when TortoiseGit isn’t installed.
  • Support was added for other “binary to text” converters besides FoxBin2PRG; implementing them is left up to others.
  • You can now change the setting of the Binary Files in Repository setting in the Version Control Properties dialog.
  • The shortcut menu now has Convert Binary to Text and Convert Text to Binary functions. This is handy, for example, if you edit the records in a table for which the text equivalent is stored in the repository.
  • Project Explorer now supports FoxBin2PRG configuration settings better.
  • When version control is turned on for a solution, it now automatically detects if a repository folder exists and only prompts the user if one isn’t found.
  • When dragging a class to another VCX, Project Explorer assigns new UNIQUEID values to the members of the new class. This prevents an issue with duplicate values in FoxBin2PRG.

Other changes

  • The Class Library and Class Name labels in the Servers tab of the project properties are now hyperlinked: clicking them takes you to the VCX or class, respectively.
  • If Solution.xml exists in the current folder, it’s opened automatically rather than prompting the user. Also, if there’s only one PJX file in the current folder and no Solution.xml, Project Explorer automatically opens that project and creates a solution file for it.
  • You can now define both the forecolor and backcolor for categories and specify which color is the Category combobox. Also, the solution is reloaded when you close the Category Editor dialog so changes are displayed immediately.
  • You can now edit the OLEPublic and icon properties of a class in Project Explorer without having to use the Class Designer.
  • The shortcut menu now has a Builder function which invokes the same builder or builder dialog you would see in the Project Manager.
  • The shortcut menu for the User and Description editboxes now has a Zoom function that displays a resizable dialog in which you can view or edit the content of the editbox.
  • Pressing Enter in the TreeView control now acts like double-clicking.
  • If you manually close a project, Project Explorer automatically closes when it’s activated.
  • The Refresh button in the toolbar was replaced with a Sort/Filter button. Refresh is now available in the shortcut menu.
  • Clicking the “…” button in the Sort and Filter and Assign Tags dialogs displays the VFP Expression Builder dialog.
  • Project items now have a CategoryName property so you can filter on that rather than the category’s ID number. Also, the Tags property is now a comma-delimited list of tags instead of a collection for easier filtering.
  • There are a couple of new addins. AddWLCHackCXtoShortcutMenu.prg adds a Run HackCX Professional function to the shortcut menu to launch Hack CX Professional ( EditViewWithViewEditorPro.prg tells Project Explorer to edit a view using White Light Computing’s ViewEditor Professional ( rather than the VFP View Designer.
  • The Run function now works for classes. For non-form classes, the class is instantiated and added to _SCREEN at position 0, 0. For form classes, the class is instantiated and a reference to it added to _SCREEN.
  • Turn on the new Add and New allow any file type setting in the Options dialog to allow the Add and New functions to display a dialog in which you can choose any file type. Turn it off to only allow a file of the selected type to be chosen; for example, if a form is currently selected, Add and New only allow you to add or create a form.
  • Turn on the Remove unused headers setting in the Options dialog to remove headers that don’t have any items under them in the TreeView, such as “Labels” if there aren’t any labels in the project.
  • Project Explorer can now be installed or updated using the Thor Check for Updates function.
  • Running Project Explorer with “do with '?'” displays a help message with the parameters you can pass to it.
  • Numerous bugs were fixed.

Tuesday, May 08, 2018

Presenting Session on Bootstrap

I’m presenting “Creating Beautiful Web Sites Using Bootstrap” this Saturday 2018-05-12 at 10:00 EDT for GRAFUG but anyone’s welcome to attend online: See for the description of the session. Note that this session has been updated to discuss Bootstrap version 4.

Update: a recording of the presentation is available at

Tuesday, May 01, 2018

Southwest Fox 2018 Speakers and Sessions Announced

Speakers and sessions for Southwest Fox 2018 have been announced. We’re excited about first-time speaker James Heuer and having well-known speaker Kevin McNeish back.

Some sessions I’m personally looking forward to seeing are:

Registration opens soon; send an email to if you want us to email you when it’s ready. See you in October!

Monday, March 19, 2018

New VFPX Projects

There are six new VFPX projects:

  • FastXTab is a replacement for VFPXTab.prg that creates cross-tab tables and cursors. This is an updated version of the class, originally created by Alexander Golovlev, by Vilhelm-Ion Praisach.

  • Win32API provides documentation for calling hundreds of Win32API functions from VFP. This project was generously donated to VFPX by Anatoliy Mogylevets from its original source,, which is no longer available. Tore Bleken converted the documentation into Markdown format.

  • Name Syntax Checker verifies the correctness and controls the translation of a string into a syntactically correct name of a particular domain (the name of VFP variables or fields, the name of XML elements, etc.). This and the rest of the projects are from António Lopes.

  • CalendarCalc provides a set of classes to perform specific calendrical processing tasks, help with internationalization, and build multicultural solutions.

  • CSVProcessor extends VFP capabilities of CSV file handling.

  • XML Library Set extends the VFP XML processing capabilities.

It’s great to see the VFP community continuing to provide features to our beloved development platform!

Friday, February 09, 2018

Fixing Chrome Freezing

I put my Windows 10 machine to sleep when I’m done for the day. For the past month or so, after awaking from sleep, Chrome would take forever (at least 2 minutes but usually a lot more) to refresh or open a web page. Restarting always resolved the problem but that eliminates the benefit of sleep mode. I’d Googled this issue before and hadn’t found any useful results but I tried again yesterday and found a suggestion that worked: turn off automatically detecting proxy settings. To get at that setting, click Start, type “settings” to bring up Windows Settings, choose Network & Internet, choose Proxy, and turn off Automatically Detect Settings.

Monday, February 05, 2018

Presenting Session on wwDotNetBridge

I’m presenting “Practical Uses of wwDotNetBridge to Extend Your VFP Applications” this Saturday 2018-02-10 at 10:00 EST for GRAFUG but anyone’s welcome to attend online: See for the description of the session.

Tuesday, January 23, 2018

Save the Dates for Southwest Fox 2018

Geek Gatherings LLC is officially asking you to save the dates for Southwest Fox 2018! The conference takes place October 18-21, 2018 at the San Tan Elegante Conference and Reception Center, the same great location as last year.

We choose speakers from the developer community based on their session proposals. We are always looking for new speakers. Watch the Call for Speakers page of the conference website; we'll post the Call for Speakers in late February.

As in prior years, we run a substantial risk in running the conference, primarily the tens of thousands of dollars we have to commit to the conference center. So, once again, we ask you to register for the conference before the July 1 deadline so we can make our go or no-go decision.

All the details about registration, speakers, sessions, and more will be available in May.

Special Request!!!

If there are any topics you hope will be covered this year, please send them to, right away.

Thursday, January 11, 2018

Stonefield Query for AccountMate webinars

Stonefield is presenting a webinar for AccountMate Business Partners on Stonefield Query for AccountMate and our new ClickBase competitive upgrade on Wednesday, January 17, 2018 at 1:00 Eastern. Register today on the AccountMate Business Partner web site.

We are also presenting a webinar for AccountMate users on Stonefield Query for AccountMate and our new ClickBase competitive upgrade on Wednesday, February 7, 2018 at 1:00 Eastern. Register today at

Tuesday, December 26, 2017

New White Papers for 2017

I added eight new white papers to my web site, all from sessions or articles I wrote in 2016: The new ones are:

  • Need Help? HTML Help Builder to the Rescue: 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!
  • Working with Microsoft Excel, Part 1: 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.
  • Working with Microsoft Excel, Part 2: Part 1 discussed several mechanisms for outputting VFP data to Excel. This document looks at ways to read Excel documents into VFP.
  • Advanced Uses for Dynamic Form: 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.
  • A Generic About Dialog: 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.
  • Processing Whole Words: 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.
  • Creating Beautiful Web Sites Easily Using Bootstrap: Laying out a web page using HTML and CSS can be challenging. Botstrap 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. his 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.
  • Lessons Learned in Version Control: 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.

Wednesday, November 22, 2017

Photos of German DevCon 2017

Jean Maurice from France took a lot of photos at the recent German DevCon 2017, November 16-18. They’re available in a Google Photos album at