Thursday, May 11, 2023

Virtual Fox Fest 2023 (May) Follow-up

Here are some follow-up notes about Virtual Fox Fest 2023 (May):

  • Videos for all presentations are now available on YouTube for free to everyone, as our contribution to the VFP community. Be sure to subscribe to our channel.
  • If you didn't attend Virtual Fox Fest and want materials (white papers and sample code) for the presentations, go to and "register" for the conference. You're not really registering since it's over, but in the Registration Fees section of the registration page, you'll see "Virtual Fox Fest Session Materials" for previous events. There's also an opportunity to sponsor Virtual Fox Fest, which means your name will be listed on our Sponsors page.
  • If you didn't attend Virtual Fox Fest, check out our Facebook page and see what you missed, then plan to attend a future one so you can join in the fun.
  • We announced Southwest Fox 2023. More about that in another blog post.

Southwest Fox 2023

While Virtual Fox Fest (VFF) has been a great way to learn about our favorite development environment and get together virtually, four years is a long time to not see each other in-person. Geek Gatherings is pleased to announce Southwest Fox 2023 (SWFox), October 19-22, our first in-person conference since 2019.

For a variety of reasons, it'll be different this year.

  • We have a new venue: Hampton Inn & Suites Phoenix-Scottsdale in Scottsdale, AZ. It's closer to the airport than the SanTan Elegante Conference & Reception Center in Gilbert so it's a little more convenient, but still close to lots of restaurants for after-hours socializing.

  • SWFox will be a hybrid conference: in-person and virtual. When you register, you choose how you'll attend. The virtual event will use the Hopin platform (the same platform we use for Virtual Fox Fest). Sessions are presented live and both streamed to the virtual event and recorded.

  • Videos will be available to attendees (in-person and virtual) after the conference. We will not be making videos available to the community for free as we've done with VFF because we really need people to attend to cover our costs.

  • In order to provide a 15-minute Q & A session for virtual attendees after each presentation, and to provide 15 minutes for the incoming speaker to set up, there will be 30 minutes between sessions rather than 15 minutes as we've done at past conferences. Because of that, we can only fit five sessions per day rather than six, so we've added a half-day to the conference so we can provide the same number of conference sessions (15) as we've had with past conferences. It now starts with registration Thursday morning, an opening session early Thursday afternoon, followed by three conference sessions. The conference goes all day Friday and Saturday, Sunday morning, and finishes with a closing session Sunday afternoon. See the schedule overview for more details. We actually like this schedule and think it's a little more relaxed than at previous conferences.

  • Because we're not sure how many people will attend in-person this year, we didn't want to pick a large, expensive venue. As a result, we have a limit of 50 in-person attendees (there's no limited on virtual attendees). That's not one of those "we're giving an artificially low number to drive up demand" kind of limits; it's a hard limit based on the size of the conference room. So, if you want to attend in-person, be sure to sign up as soon as possible after registration opens in early July. If you miss the cut-off of 50 people, you can always attend virtually.

  • All sessions are presented in a single room. An advantage of this format is that there's no chance of missing any sessions because they're scheduled opposite other sessions you also want to see.  Another is that it eliminates the searching for the next room and trying to find a seat. Also, each speaker only presents one session once rather than two sessions twice, so it's a lot easier on them!

  • Hampton includes hot breakfast with your hotel room charge (Rick Schummer tried it when checking out possible venues a couple of months ago and said it was great). Lunch will be provided on Friday and Saturday (likely deli-style but we're still working out the details). Because we aren't providing as many meals, and have limited other costs as much as we can, registration is less expensive than for previous SWFox conferences. Details will be announced in early July.
One thing that won't be different is a great line up of speakers, inspiring session topics, and the chance to hang out with new and old friends!

We're looking for speakers. If you think you have a topic other developers would be interested in, see our Call for Speakers page and submit a session proposal.

See you in October!

Anatomy of a VFPX Project

At the just-concluded Virtual Fox Fest 2023 (May), I presented a session titled "Anatomy of a VFPX Project". Normally I don't make white papers and sample files from conference sessions available until one year after it was originally presented to discourage people from not attending a conference because the material is available for free. However, the other organizers of Virtual Fox Fest, Rick Schummer and Tamar Granor, agreed with me that this is an important topic for our community because it both encourages and instructs VFP developers on how to contribute to VFPX. So, the white paper and sample files are available now from the Technical Papers page of my web site. You can also watch a video of the presentation.

Sunday, April 02, 2023

Move VFP to Another Monitor

Like many developers, I have two monitors (some have even more). I like to open Outlook, VFP, and Visual Studio on my primary monitor and my browser, Word, Excel, and other apps on the other one. Sometimes, though, I want two VFP windows open, one on the primary monitor and one on the other, because I'm working on two different versions of an application at the same time. Or sometimes I have VS open on the primary monitor and want VFP open on the other one so I can work on both at the same time.

After opening VFP and dragging it to the other monitor for the 100th time, a lightbulb came on: use a hotkey to toggle VFP between the two monitors. I created this as a Thor tool and assigned Alt-2 to it. Here's the code:
Lparameters lxParam1

* Standard prefix for all tools for Thor, allowing this tool to
*   tell Thor about itself.

If Pcount() = 1						  ;
		And 'O' = Vartype (lxParam1)  ;
		And 'thorinfo' == Lower (lxParam1.Class)

	With lxParam1
		* Required
		.Prompt		   = 'Move VFP to Other Monitor'
		* Optional
		Text to .Description NoShow
Move VFP to Other Monitor
		.CanRunAtStartUp = .F.

		* These are used to group and sort tools when they are displayed in menus or the Thor form
		.Source		   = "Doug's Tools"

	Return lxParam1

If Pcount() = 0
	Do ToolCode
	Do ToolCode With lxParam1


* Normal processing for this tool begins here.                  
Procedure ToolCode
	Lparameters lxParam1
		if _screen.Left > 1900
			_screen.Left = 2
			_screen.Left = 1922
		endif _screen.Left > 1900
		_screen.Visible     = .T.
		_screen.Top         =   54
		_screen.Width       = 1916
		_screen.Height      =  950
		_screen.WindowState = 2
			&& this is needed to force thw window to draw properly
		_screen.WindowState = 0
Your dimensions might be different so adjust this code as necessary. Also, you might not want the tool to be in the Thor menu under "Doug's Tools", so set Source to something appropriate.

UPDATE: it turns out a Windows hotkey will do this: Win+Shift+Arrow Key. Thanks to Jochen Kirst├Ątter (JoKi) for pointing this out.

New VFPX Project: List Manager

Many tables have columns containing a small range of values. For example, for a customer type column in a customer table, the acceptable values might be "Business", "Consumer", and "Government". Your choices for data entry into such columns are:
  • Allow the user to type a value. This is bad idea because the user may not know what the acceptable values are or may type them incorrectly.

  • Hard-code the values in a combobox. Adding values to the list means changing the program and deploying an update.

  • Create lookup tables for the values. If there are a lot of such columns, that's a lot of tables and maintenance forms for those tables to create.
List Manager is a new VFPX project that manages lists of lookup values and provides controls so users can select values from these lists.  A single table contains all of the lookup values for an application and a single maintenance form allows users to add, edit, or remove values.

Users can select a single value from a specific type of lookup:

or select multiple values into a comma-separated string:

Saturday, March 11, 2023

Virtual Fox Fest 2023 (May)

Virtual Fox Fest 2023 (May) is a one-day event on Wednesday, May 10, 2023. We have some great speakers delivering great sessions, live chatting during presentations, and getting to hang out virtually with new and old friends. This event will feature classic sessions (from previous conferences), updated for 2023, along with at least one brand new session. More details here:

Registration is open! Details, deadlines and cost are available on our Web site. You register for the conference here: Don't procrastinate, get this done today!

We’re planning Southwest Fox in Arizona this October. We expect to announce our plans for a hybrid (in-person and virtual) fall conference some time in April.

Wednesday, December 28, 2022

Upsize VFP Free Tables to SQL Server

The VFPX Upsizing Wizard allows you to upsize the tables in a database container to a SQL Server database. It can be used visually by running or programmatically; see TestEngine.prg that comes with the Upsizing Wizard for an example.

One thing the Upsizing Wizard doesn't do is support free tables. The new Upsizer utility gives the Upsizing Wizard the ability to do that. I've used it on decent sized data sets (more than 100 tables with 10 GB of data total) and it works very well. One thing I like is that I can run it over and over to upsize to the same database; that allows me to refresh the SQL Server database with changes in the VFP data while we work on upsizing a VFP application.

Tuesday, December 27, 2022

Updated Upsizing Wizard

I released an update for the Upsizing Wizard that fixes a few bugs and adds some new features. Some of these were suggested by Rick Borup in his Switching to SQL Server session at Virtual Fox Fest 2022 (October), including:

  • Optionally creating default values for all columns so fields that don't allow nulls and aren't listed in an INSERT statement don't prevent the statement from executing.
  • Optionally exporting table and field comments to the MS_Description extended property.
  • Using Varchar(max) rather than Text as the default mapping for Memo.

See the 2022.12.27 section of the Releases section of the Upsizing Wizard VFPX repository for details on all changes.

You can install the new version by cloning the repository, downloading the files from the repository, or using Thor Check for Updates.

And stay tuned: later this week, I'm going to release a new tool that extends the Upsizing Wizard to support free tables and uses SQL Bulk Copy for even better upsizing performance.

Monday, November 14, 2022

Bulk Copying VFP Data to SQL Server

The VFP Upsizing Wizard does a great job of upsizing a VFP database to SQL Server. However, after doing the initial upsizing, you may wish to re-upload the content of one or more tables with doing a complete re-upsize. A new tool, SQLBulkCopy, available from, is great for that.

Thursday, October 27, 2022

Virtual Fox Fest 2022 (October) Follow-up

Here are some follow-up notes about Virtual Fox Fest 2022 (October):

  • Videos for all presentations are now available on YouTube for free to everyone, as our contribution to the VFP community. Be sure to subscribe to our channel.
  • If you didn't attend Virtual Fox Fest and want materials (white papers and sample code) for the presentations, go to and "register" for the conference. You're not really registering since it's over, but in the Registration Fees section of the registration page, you'll see "Virtual Fox Fest Session Materials" for previous events. There's also an opportunity to sponsor Virtual Fox Fest, which means your name will be listed on our Sponsors page.
  • If you didn't attend Virtual Fox Fest, check out our Facebook page and see what you missed, then plan to attend a future one so you can join in the fun.