From the day VFP 7.0 landed on my desk many months ago, two things were apparent. First, it was incredibly stable for a pre-beta version. Second, there was no going back. Once I'd worked with VFP 7.0, I'd never be satisfied with VFP 6.0 again.
I've been involved in beta testing a lot of versions of FoxPro. Sometimes working with a beta version has been a true labor of love, with lots of crashes or serious usability problems. As we'd expect from a mature product, that hasn't been the case in more recent versions. My experience is that each new version of VFP is more stable than the one before it -- even the various pre-release versions. Sure, there were bugs, but not too many to keep me from getting things done. I'm comfortable stating that the shipping version of VFP 7.0 will be the most stable, bug-free version to date.
Increased productivity
What about the product itself? By now, you probably know that the highest-profile change in VFP 7.0 is the addition of IntelliSense. This feature helps you write more accurate, readable programs. IntelliSense in VFP 7.0 has several components: command completion, quick info, list members, list values, and MRU lists.
Command completion means that when you type enough of a keyword to identify it, then press an appropriate key (space, tab, enter, or left parenthesis, in some cases), VFP spells out the whole command for you. Not only that, it fixes the case. So, you can type "repl" and when you press the spacebar, it becomes "REPLACE".
Quick info is like tool tips for commands. After you identify a command, function, or method, a window pops up to show you the complete syntax for that item. For functions and methods, the parameter you're up to is highlighted in the tip.
List members does two things. As you drill into an object hierarchy, each time you hit the period, a list of appropriate members (properties, methods, and contained objects) pops up. You can choose the one you want from the list. List members works for COM objects and ActiveX controls, as well as native objects. List members also provides a list of clauses to choose from for some commands (such as SET and USE).
List values pops up a list of appropriate values for a property and lets you choose the one you want. It's triggered by typing the equals sign after a property name.
In addition to these great features, VFP 7.0 keeps most recently used (MRU) lists of all kinds of things: tables, forms, programs, projects, directories, and so forth. When you type a command in the Command Window that calls for one of these, the MRU list pops up, so you can choose the one you want, if you've used it recently. In addition, when a table is open, if you type a command that calls for a field name, a list of fields pops up.
Most importantly, VFP's IntelliSense uses an open architecture. The rules for most of these features are stored in a VFP table, and a tool is provided for customizing it. The size of MRU lists is configurable, too.
These features explain why I find it hard to work in VFP 6.0 after using VFP 7.0. I've gotten used to having my code look good without having to type it that way or go back and beautify it.
What's amazing, though, is that IntelliSense is only part of what's changed in VFP 7.0. VFP 7.0 contains lots of new features, many in response to requests from the developer community. For example, grid headers can now have word wrap, the SQL-SELECT command can now create a read-write cursor, and much more. There are also several new developer tools, including an Object Browser.
The bottom line
In my opinion, VFP 7.0 is a no-brainer upgrade. You'll be more productive and your code will be easier to maintain.