Number 59
The New Home of VFPX
Doug Hennig
Recently, VFPX was moved and revamped. In this article, Doug explores the new home of VFPX.
Introducing Project Explorer, Part 1
Doug Hennig
This is the first of a four–part series on Project Explorer, a new VFPX project that replaces the VFP Project Manager.
Splitting a Procedure File
Tamar E. Granor, PhD
It’s easier to maintain separate program files rather than one monolithic procedure file. This utility makes it easy.
General Data Protection Regulation
John Kullmann, Rainer Becker-Hinrichs
If you have a Visual FoxPro Application how are you impacted? How can you best respond?
Press Release: Partnership Announcement
John Kullmann
Macrosoft and Wizards & Builders have individually been supporting the Visual FoxPro (VFP) client market space for many years.
Number 58
Natural Sorting
Doug Hennig
This is the second of several articles on components of Doug’s in-house library. This issue focuses on why the normal sorting done by computers doesn’t always work and how natural sorting solves the problem.
Creating iCalendar Files
Doug Hennig
This is the third of several articles on components of Doug’s in-house library. This issue discusses how to create iCalendar files so scheduled items can automatically be added to a calendar.
Graphing crosstabs
Tamar E. Granor, PhD
In my last article, I showed how to send crosstab data to Excel, including how to build Excel’s Pivot Tables programmatically. This article shows how to create graphs of the crosstab data.
Quibbles, Quirks, and Quickies, Part II
Rick Borup
This article is based on my own experience and research while developing Visual FoxPro applications over the last 15 or 20 years. The examples and explanations presented here are observational: in other words, they come from observing the behavior of Visual FoxPro and not from any inside knowledge of how VFP works internally. If you are an experienced Visual FoxPro developer, you may have run into some of these things yourself. While not everything in this article will necessarily be new to everyone, my hope is that at least some of it will be new to each of you and useful to all of you.
Number 57
Handling Multiple Monitors
Doug Hennig
This is the first of several articles on components of Doug’s in-house library. This issue focuses on handling multiple monitors when persisting the size and location of forms.
Modal form, All menus Active – How so?
Pradip Acharya
VFP disables menus when a modal form is active. This restriction can be defeated when required. Often a menu command is intended to perform an external function, leaving the form itself unaffected. For example, a Browse window is displaying some table data of interest and you select the menu option 'Print a wysiwig snapshot of window'. Availability of menus with modal forms can be of great advantage for a modal form in an application. The key tool for enabling menus for modal windows is an extended timer class which can fire once, and optionally self destruct. This spawning mechanism is invaluable in many other contexts. Especially when you wish to spawn a routing action after a form has closed. Placing an intended post-form command inside the method Unload of the form will still execute before the form object is released, not after. Spawning the command with a time delay is the answer.
Sending crosstabs to Excel
Tamar E. Granor, PhD
In my last article, I looked at how to create reports with crosstab and pivot data. This time, I look at how to send the results to Excel.
Quibbles, Quirks, and Quickies, Part I
Rick Borup
This article is based on my own experience and research while developing Visual FoxPro applications over the last 15 or 20 years. The examples and explanations presented here are observational: in other words, they come from observing the behavior of Visual FoxPro and not from any inside knowledge of how VFP works internally. If you are an experienced Visual FoxPro developer, you may have run into some of these things yourself. While not everything in this article will necessarily be new to everyone, my hope is that at least some of it will be new to each of you and useful to all of you.
Number 56
Lessons Learned in Version Control, Part 3
Doug Hennig
The previous two articles in this series showed how to set up local and remote repositories, how to deal with files commonly used in multiple applications, how to handle VFP binary files, what should go in the repository, and the workflow we use at Stonefield Software. In this article, the final one in the series, we’ll look at when to commit changes, when to push, strategies for branching, how to fix common problems, and how to us a cloud-based repository.
The Database Documentor
Whil Hentzen
Nobody likes documentation. Not even documentation experts. Nonetheless, it's useful stuff. While there's definitely some truth to the idea that documentation is always outdated, some doc gets outdated faster than other. Documentation about the data structures typically stays more current than, say, documentation about software modules in development. The Database Documentor is a quick and dirty tool that allows you to attach information about tables and fields.
Handling crosstabs and other wide data in VFP reports
Tamar E. Granor, PhD
In the May, July, and September, 2016 issues, I looked at VFP’s crosstabs and SQL Server’s PIVOT functionality. Both allow you to turn rows into columns, usually to aggregate data. The result may have many columns (and in some cases, you may not know their names), which makes traditional reporting difficult. In this article, we’ll start to look at options for reporting on crosstab and pivot data, and in fact, any kind of wide data, from VFP.
RIP: Marcia Akins
Rick Schummer
Passing along news to the Fox Community is something FoxRockX has been doing for years. Unfortunately we have some sad news to share.
Number 55
Lessons Learned in Version Control, Part 2
Doug Hennig
The previous article, the first in this three-part series, looked at setting up local and remote repositories and how to deal with files commonly used in multiple applications. This time, we’ll look at how to handle VFP binary files and what should go in the repository, then discuss the workflow we use at Stonefield Software.
Seamlessly Read/Edit/Save numeric data of variable precision
Pradip Acharya
Numeric data of Integer and Floating Point types, are commonly edited and saved using some derived class based on the Textbox baseclass, then setting a Format mask and so on. Integer fields will have no decimal point and floating point fields will have a precision of 2 decimals digits. Now consider the constant Pi which is 3.14 to 2 decimal digits and 3.1415926536 to 11 decimal digit precision. How would you like to read in 3.14 from the table field, type in 3.1415926536, save, and read it back just as saved. Chemical, Physical and analytical work or chemical, mathematical or other entities are all of variable precision. Example are Hg concentration in drinking water or engineering tolerances. The required xNumericbox class and demo program are outlined in the article. The limiting constraint is the maximum precision of 14 decimal places in VFP 64-bit double field type on good days. On bad days, it can degrade to 13 decimal places.
Continuous Integration with Jenkins and Visual FoxPro
Eric Selje
This article discusses improving the Software Development Lifecycle for Visual FoxPro developers. We'll begin by reviewing the typical development cycle, and show ways to improve and automate our current process using a Continuous Integration server and open source tools from VFPX such as Automated Build, FoxUnit, and source control tools.
With abbreviations to success
Christof Wollenhaupt
In this article we cover many of the acronyms used in object oriented programming, especially in clean code development. The purpose of this section is to act as a reference which you can consult from time to time to refresh some of the principles and approaches. You should be able to read each section just by itself.
Number 54
Lessons Learned in Version Control, Part 1
Doug Hennig
This series of articles discusses what has evolved into my team’s best practices for version control. It’s intended for those who are at least a little familiar with version control but are looking for ideas about how to improve their processes.
Solve date problems
Tamar E. Granor, PhD
In my last article, I explored the various date and time types in SQL Server and the collection of functions and operations you can use with them. In this article, I’ll look at some common date problems and show how to solve them.
FoxUnit in Depth, Part 2
Eric Selje
In this article we'll review what Unit Testing is, why you should be doing it, and how to use the VFPX tool FoxUnit to perform unit tests on your code. If it's been a while since you've looked at FoxUnit, you may be pleasantly surprised at how many new features have been added in the last few years, thanks to multiple contributors in the Fox family.
Parsing Obnoxious Text Files, Part 2
Whil Hentzen
As we are increasingly asked to integrate our VFP apps with others systems, we can run into some obnoxious situations. One of those is a text file that while technically follows the specified format, still contains garbage that makes parsing harder.
Number 53
A Generic About Dialog
Doug Hennig
In the last issue, Doug discussed a couple of dynamic dialogs built with the assistance of Dynamic Form. In this article, he presents another dynamic, generic dialog, this time to display application information.
Processing Whole Words
Doug Hennig
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 want. In this article, Doug presents replacement functions that work on whole words.
German Devcon 2016
Shonnon Morris
I was fortunate to attend the 23rd Visual FoxPro Conference held by the German FoxPro User Group in Frankfurt, Germany. This conference brings together Visual FoxPro and Xbase experts to discuss the latest trends, features and insights into how these programming languages work and how to make best use of them in our businesses.
Share what you know
Tamar E. Granor, PhD
The FoxPro community has always been a special place where people are willing to share what they know with others. Whether in person at user groups and conferences, online in forums, or in printed publications, FoxPro developers have been making each other better since the 1980s.
Working with dates and times in SQL Server
Tamar E. Granor, PhD
In this article, I’ll look at the date and time types SQL Server supports and the language elements for working with them.
FoxUnit in Depth
Eric Selje
In this article we'll review what Unit Testing is, why you should be doing it, and how to use the VFPX tool FoxUnit to perform unit tests on your code. If it's been a while since you've looked at FoxUnit, you may be pleasantly surprised at how many new features have been added in the last few years, thanks to multiple contributors in the Fox family.
Number 52
Working with Microsoft Excel, Part 2
Doug Hennig
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. The previous issue’s article discussed several mechanisms for outputting VFP data to Excel. This article looks at ways to read Excel documents into VFP.
More on PIVOT
Tamar E. Granor, PhD
This article looks at how to use PIVOT even when you don’t know the list of values in the pivot column, and covers the UNPIVOT keyword that lets you undo a pivot (in some cases) and, more broadly, normalize data.
Windows 2012R2 and slow VFP database applications
Gerion Kunst
We recently had a customer where we implemented a Windows 2012R2, Citrix XenApp 7.5 environment to replace a Windows Vista/2008 client server environment. After implementing the new Citrix XenApp environment the customer found a strange phenomenon where several applications where performing slower on the new XenApp servers then on the Vista workstations.
Advanced Uses for Dynamic Form
Doug Hennig
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 article, Doug discusses some advanced uses for Dynamic Form, including data driving the markup code.
VFPX: VFPRegExTool
Rick Schummer
Regular Expressions are one of those software development concepts that are challenging for many software creators. It simply is the reason each developer should have a go to tool and set of Web site resources to assist with the creation and testing of regular expressions. Marco Plaza wanted a tool that runs inside the Visual FoxPro IDE to test regular expressions and submitted the project to VFPX, where it now is hosted.
Number 51
Working with Microsoft Excel, Part 1
Doug Hennig
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 article, the first of two, discussed several mechanisms for outputting VFP data to Excel.
PIVOT = Crosstabs, SQL Style
Tamar E. Granor, PhD
A crosstab is a result table or cursor where the set of columns is based on data values in the source. My last article looked at creating crosstabs in VFP, where you can’t create a crosstab with just a query. Since SQL Server 2005, however, you can create crosstabs without any additional code or tools.
VFPX: GoFish 5
Rick Schummer
GoFish is a tool originally released in March 2001 by Peter Diotte and resurrected and overhaul by Matt Slay in 2010 and through 2012 on VFPX. GoFish revolutionizes search performance and gives Visual FoxPro developers a solid source code search and replace process. Over the last year or so Matt Slay and his partner in crime, Jim Nelson has enhanced GoFish to be even better. This month Rick shows you how this tool has improved and even included the one feature Rick has missed from Code References.
Number 50
Need Help? HTML Help Builder to the Rescue
Doug Hennig
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!
Generating crosstabs in VFP
Tamar E. Granor, PhD
One of the questions people often ask is how to convert their normalized VFP data into a crosstab, with each data item from a specified column turning into the header for a separate column. There are several tools for creating crosstabs from Visual FoxPro data.
Parsing Obnoxious Text Files
Whil Hentzen
As we are increasingly asked to integrate our VFP apps with others systems, we can run into some obnoxious situations. One of those is a text file that while technically follows the specified format, still contains garbage that makes parsing harder.
VFPX: TwilioX
Rick Schummer
TwilioX is a new project on VFPX as of October 2015. The goal of this project is to create a wrapper class that simplifies the processing of Short Message Service (SMS), aka text message through a service called Twilio. Twilio has a powerful and simplified API so developers can quickly begin processing SMS for their customers. This month Rick takes a look at the TwilioX project and demonstrates how quickly you can get up to speed and implement this in your applications.
Number 49
Speed in Object Creation and Destruction
Tamar E. Granor, Ph.D.
A client asked me to speed up part of an application. In doing so, I was forced to re-evaluate one of my personal best practices: using NewObject() rather than CreateObject() to instantiate objects.
Taking Advantage of the Windows API
Doug Hennig
The Windows API (Win32API) contains thousands of useful functions. However, finding which function to use when, and how to call it from a VFP application, can be challenging. This month’s article presents several useful API functions you can call in your VFP applications today.
"We Want To Go To SQL"
Whil Hentzen
I get a call probably once a month with these specific words: "We want to go to SQL." This isn't as clear cut a request as it seems, though, and is full of potential pitfalls. The purpose of this article is to help you address, strategically and technically, their request to 'go to SQL', and to help you help them open their pocketbooks.
VFPX: Thor – Creating and Sharing Tools
Rick Schummer
In the previous issue Rick showed us how to add Option dialogs to a Thor tool. This sparked some interest in creating Thor tools, so this month Rick is going to demonstrate how to easily create a new developer tool using Thor and then provide three deep dive examples using some data diagnostic tools he uses to support more than 900 customers running their vertical market applications.
Number 48
Use MDots for speed, not just for correctness
Tamar E. Granor, Ph.D.
There may be no topic on which VFP developers as a group feel more strongly than whether or not to prefix all references to variables with "m." in order to prevent ambiguity. It may be time for that argument to end, though, because it turns out that using mdots makes your code run faster, too.
Creating a Plug-in Architecture for Your Applications, Part 2
Doug Hennig
In the September 2015 issue, Doug discussed several techniques for adding support for plug-ins to your applications. In this issue, he examines how to add scripting to an application to provide plug-in capabilities.
Automating the Filling In Of A PDF - Reprise, Part 2
Whil Hentzen
This article discusses two different ways to accomplish this task. The first is using Windows Automation with Adobe Acrobat, replete with the licensing costs and associated issues and overhead. The second is using the free PDF Toolkit that merges PDF form data with the empty PDF and produces a filled-in PDF via a call to a simple one line batch file.
VFPX: Thor Option Dialogs
Rick Schummer
Thor manages different tools developers have integrated into their Visual FoxPro IDE. Some of these tools are shared with other developers via the Thor Repository. If you are considering this and your tool has options exposed through variables in the program or message box choices that have to be made each time, you might want to read this article from Rick and see how simple it is to incorporate an Options page via the Thor Configuration form.
Number 47
Including missing data
Tamar E. Granor, Ph.D.
In my recent series on the OVER clause, I failed to mention a trap in certain cases that can result in inaccurate data. This article explains the problem and demonstrates a solution that’s applicable not just with OVER, but more broadly.
Anonymizing Your Data
Whil Hentzen
Even if you've been living under a rock for the last five years, you're aware that data privacy is one of The Big Big Things these days. You can't go buy a soda at Walgreens without having to sign a half dozen forms acknowledging what they'll do with your data and how they'll keep it safe and only distribute it to a third party in return for a suitcase full of small bills and the express written consent of the National Football League. You're going to need to keep your customer's data safe, but it's difficult to test an application without data that fairly represents the real world. One solution is to mask a live data set. Doing so has more complexities than may be initially evident, so this article first discusses the business logic behind such an anonymizing program, and second, describes a simple program to perform the actual work.
VFPX: Thor Option Dialogs
Rick Schummer
StripeX is a new project on VFPX as of December 2014. The goal of this project is to create a wrapper class that simplifies the processing of credit cards to a service called Stripe. Stripe has a powerful and simplified API so developers can quickly begin processing credit cards for their customers. This month Rick takes a look at the StripeX project and demonstrates how quickly you can get up to speed and implement this for your applications.
Automating the Filling In Of A PDF - Reprise, Part 1
Whil Hentzen
This article discusses two different ways to accomplish this task. The first is using Windows Automation with Adobe Acrobat, replete with the licensing costs and associated issues and overhead. The second is using the free PDF Toolkit that merges PDF form data with the empty PDF and produces a filled-in PDF via a call to a simple one line batch file.
Number 46
Creating a Plug-in Architecture for Your Applications, Part 1
Doug Hennig
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 two-part article looks at how adding plug-in support can help your applications and looks at several techniques that can be used independently or together.
Extend your queries with APPLY
Tamar E. Granor, Ph.D.
As I’ve been digging into SQL syntax that’s not supported in VFP, I’ve been able to understand what most of the language elements do, even when I’ve struggled to find meaningful examples. But getting my head around the APPLY operator took a look of effort, trials and research.
Lessons From A VFP Conversion Gone Bad - II
Whil Hentzen
Last issue's article evidently struck a chord with many of you. We've all shared a war story or two in the bar after a full day of conference sessions, but that's different than admitting one's goof-ups in print, to say nothing of developing a rough classification of areas prone to failure. And last article simply related data-related stories. So, we'll continue this issue with the other half of the chicken and egg quandary - code.
Number 45
Scheduling Tasks from VFP
Doug Hennig
Automatically executing a task on a regular schedule isn’t something every application needs to do, but if you do need it, this month’s article provides the code you need to do this from VFP.
Using OVER with analytic functions, Part 2
Tamar E. Granor, Ph.D.
In my last article, I showed how you can use OVER with the LAG, LEAD, FIRST_VALUE and LAST_VALUE functions to put data from different records in a partition into a single result record. This article explores the last set of functions that work with SQL Server’s OVER clause; these involve percentiles and distributions.
VFPX: ThemedTitleBar
Rick Schummer
Visual FoxPro developers are generally looking for ways to make the user interface of their applications more modern. It is important to keep your applications looking current to remain competitive in the marketplace. This month Rick introduces you to the newest project that helps modernize a Visual FoxPro application user interface: ThemedTitleBar.
Lessons From A VFP Conversion Gone Bad
Whil Hentzen
Today, I'll take a different approach from most articles, which are often technical how-to descriptions. Everyone loves a good story, and everyone loves watching a train wreck (as long as they are out of danger themselves.) Thus, I'll tell a number of stories, each a miniature disaster, either from my own experience or from a peer. Finally, much like Aesop's fables, each story will conclude with a lesson.
Number 44
Add Gauges to Your Applications
Doug Hennig
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 month’s article, Doug presents an easy-to-use gauge control you can use in your VFP applications.
Using OVER with analytic functions, Part 1
Tamar E. Granor, Ph.D.
In my last article, I looked at the OVER keyword with aggregate functions and showed how to do things like compute running totals and moving averages. In this article and the next, we’ll look at the analytical functions that work with OVER; they provide ways to do side-by-side comparisons, compute percentiles and more.
What's in That Data Set?
Whil Hentzen
Most Fox developers these days are running into the situation of being asked to take over another system. One of the first things you'll need to do is evaluate that system. A previous article described a tool that gathered a variety of statistics about the code in a system and then discussed what to do with that information. But a system isn't just about the code. This article describes a tool that helps you quickly get your arms around a data set.
VFPX: Update Core VFP
Rick Schummer
It has been six years since Microsoft released the latest hotfix for Visual FoxPro 9 Service Pack 2, yet there are developers who are using a previous build of Visual FoxPro 9 and some of the older tools that shipped with the product. Rick recently ran into another developer who was behind on the times and decided to document all the things you can update in the core Visual FoxPro 9 thanks to downloads available on VFPX.
Number 43
New UI Classes From Carlos Alloatti
Doug Hennig
Carlos Alloatti is a prolific developer of classes that can make your application’s user interface sparkle. This month, 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.
More on OVER
Tamar E. Granor, Ph.D.
In the May, 2014 issue, I showed how the OVER keyword lets you find the top N in a group. This month, we’ll look at some other ways to use OVER to simplify calculations.
Do custom replacements with GoFish
Tamar E. Granor, PhD
I’ve been using GoFish (available on VFPX) for searching within VFP code for a couple of years, but I’ve rarely used it to replace code. When a tricky replacement task came along, GoFish had the chops to let me do it quickly and easily.
How Big Is That System?
Whil Hentzen
Most Fox developers these days are running into situation of being asked to take over another system. One of the first things you'll need to do is evaluate that system. This article describes a tool that gathers a variety of statistics about a system and then discusses what to do with that information.
Integrating Visual FoxPro and MailChimp, Part 5/2
Whil Hentzen
We've all written our own email applications. I finally decided to use an outside service to handle my emailing needs. Here's how I used VFP to integrate with the mailing service.
Number 42
The Latest Techniques in Deploying VFP Applications, Part 3
Doug Hennig
The last two issues discussed several concepts related to application deployment, including creating a workstation-only installer and installing your application on a server without requiring a workstation installation (zero footprint deployment). This article, the last in the series, shows how to automate part of the deployment process, install the .NET framework, and update your applications over the Internet.
Combining Query Results
Tamar E. Granor, Ph.D.
We continue our look at T-SQL elements that aren’t available in VFP’s SQL with a look at the EXCEPT and INTERSECT operators that let you combine query results in a way other than putting them all together. These operators give you more elegant ways to solve some common problems.
Hacking IntelliSense
Rick Schummer
Rick Schummer delivered a session “Inspiring Everyday Practical IntelliSense” at Southwest Fox and Geman DevCon in 2014. This session was designed to get Rick to upgrade his use of Visual FoxPro’s IntelliSense and in turn possibly inspire the attendees to do the same. Out of this session came a new Thor tool called WLC Hack IntelliSense, which has inspired people in the community to create new IntelliSense scripts and others to enhance this new tool available in the Thor Repository.
Integrating Visual FoxPro and MailChimp, Part 5/1
Whil Hentzen
We've all written our own email applications. I finally decided to use an outside service to handle my emailing needs. Here's how I used VFP to integrate with the mailing service.
The FoxRockX Portal
Whil Hentzen
The FoxRockX portal, as it‘s been hosted in Germany, and thus is in German, has long needed a guide for readers who don't “sprache Deutsch”. Who better to lead this tour than our own beer and sauerkraut loving FoxPro from Milwaukee.
Number 41
VFPX: FoxBin2Prg
Rick Schummer
FoxBin2Prg takes binary source code and data and flattens it out to program code (PRG). It is 2014 and Fox developers from around the world who use source code control have been using tools to do this for a very long time. So why now do we need yet another process to do something we have been happily doing for a very, very long time? Read further to see how FoxBin2Prg brings its own innovations and twists to the process and understand if it is something you might want to check into for your own development.
One-Step Insert and Update
Tamar E. Granor, Ph.D.
This series of articles looks at features of SQL Server's T-SQL that make tasks easier than they are with VFP's SQL sub-language. This time, we look at the MERGE command that lets you process complex updates with a single statement.
The Latest Techniques in Deploying VFP Applications, Part 2
Doug Hennig
In this issue, we look at how to create a workstation-only installer, *** installing your application on a server without requiring a workstation installation (zero footprint deployment), installing the .NET framework, and how to update your applications over the Internet.
Integrating Visual FoxPro and MailChimp, Part 4
Whil Hentzen
In this issue, I'm going to show you how to update a list member's profile by using more complicated data structures than what we've used so far. I'm also going to cover other more complex methods, using multiple structs and parms of various formats. Finally, I'll discuss how to handle errors that may be thrown.
Number 40
VFPX: FoxUnit
Rick Schummer
Unit testing is a concept that has been around as long as there has been code written. Over the years different development platforms and tools evolved and unit testing has been automated using testing tools. Visual FoxPro never got an automated testing tool from Microsoft so Visionpace developed one and released it to the Fox Community. Years went by without any releases. Eric Selje convinced them to release it on VFPX so he could improve it.
Summarizing aggregated data, Part 2
Tamar E. Granor, Ph.D.
SQL Server’s CUBE clause lets you summarize data on all dimensions at once, while GROUPING SETS lets you get whichever summaries you want.
The Latest Techniques in Deploying VFP Applications, Part 1
Doug Hennig
This series of articles 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), installing the .NET framework, and how to update your applications over the Internet.
Integrating Visual FoxPro and MailChimp – Part 3
Whil Hentzen
This article describes both the journey I went through, choosing features and making choices between alternatives, as well as the details of the code I ended up with.
Number 39
Integrating Word's Spellcheck to Your VFP Application
Whil Hentzen
This article describes both the journey I went through, choosing features and making choices between alternatives, as well as the details of the code I ended up with.
Summarizing aggregated data, Part 1
Tamar E. Granor, Ph.D.
This series of articles looks at features of SQL Server that make some tasks easier than they are with VFP’s SQL sublanguage. Over the next two issues, we explore ways to provide summary results for all data and larger subgroups of your data as part of query results. In this issue, we look at ROLLUP.
Integrating Visual FoxPro and MailChimp – Part 2
Whil Hentzen
We've all written our own email applications. I finally decided to use an outside service to handle my emailing needs. Here's how I used VFP to integrate with the mailing service.
Number 38
Unit Testing VFP Applications, Part 3
Doug Hennig
In the previous two articles in this series, I discussed what unit testing is and why it’s important. I created some simple unit tests to show how they work and then introduced the FoxUnit unit testing framework and discussed how it makes creating and running unit tests a lot easier. In this, the last article in this series, we’ll look at how to simplify unit testing using mock objects and wind up with some final thoughts on unit testing.
VFPX: ExcelXML
Rick Schummer
In the last issue of FoxRockX we discussed how Microsoft Excel is the centerpiece of Microsoft Office with respect to analyzing data in the corporate world, large and small businesses alike and how FoxyXLS is a terrific way to create Excel files without having Excel installed. ExcelXML is another such tool from VFPX to help Visual FoxPro developers create Excel files, but takes a different approach using the XML format Excel can open as a spreadsheet. ExcelXML also creates the output to mimic the look and feel of your Visual FoxPro grid found on a form in your application.
Getting the Top N for each Group
Tamar E. Granor, Ph.D.
In my previous articles in this series, I’ve explored several features in SQL Server that don’t have analogues in VFP. These features make it much easier to solve certain problems. This article introduces another such feature that simplifies another common problem.
Integrating Visual FoxPro and MailChimp
Whil Hentzen
We've all written our own email applications. I finally decided to use an outside service to handle my emailing needs. Here's how I used VFP to integrate with the mailing service.
Number 37
Unit Testing VFP Applications, Part 2
Doug Hennig
Unit testing is a very important part of application development and yet it seems that few VFP developers use this important technique.
VFPX: FoxyXLS
Rick Schummer
Microsoft Excel is the centerpiece of Microsoft Office with respect to analyzing data in the corporate world, large and small businesses alike. So naturally applications written for these organizations are going to export data to Excel files so users can graph and analyze the data to their needs. There are many ways Visual FoxPro applications can work with Excel including exporting to XLS files directly or through automation code. But there are situations where the customer does not want to license Excel for the application use or more likely, Microsoft might not allow licensing of Excel in certain situations. FoxyXLS is one project from VFPX to help Visual FoxPro developers with the creation of Excel files.
Handling hierarchical data
Tamar E. Granor, Ph.D.
SQL Server offers two different tools that make working with hierarchies like organization charts and bills of materials much easier than in VFP.
Data Munging with Python, Part 2/2 – Handling Files
Whil Hentzen
I know this will come as a shock to you, but once in a while, you'll run into a data-oriented situation where Visual FoxPro isn't going to cut it. In a previous article, I discussed the situation where an incoming data file exceeded VFP's 2 GB/.DBF capacity. We used SQLite to import that multi-gigabyte table.
Data Munging with Python, Part 3 – Handling Files
Whil Hentzen
I know this will come as a shock to you, but once in a while, you'll run into a data-oriented situation where Visual FoxPro isn't going to cut it. In a previous article, I discussed the situation where an incoming data file exceeded VFP's 2 GB/.DBF capacity. We used SQLite to import that multi-gigabyte table.
Number 36
Unit Testing VFP Applications, Part 1
Doug Hennig
Unit testing is a very important part of application development and yet it seems that few VFP developers use this important technique.
VFPX: Thor’s Finder
Rick Schummer
Finding files is something developers find themselves doing from time-to-time. You can search using Windows Explorer and hope the Windows file index helps you search for the elusive source code file name. What happens when you find the file in Windows Explorer and double-click to open it? It opens the file in a new instance of Visual FoxPro, not the current one you are using with the project open. Wouldn’t it be nice if the file opened in the editor in the same instance? What happens when you are looking for a class name inside a VCX-based class library? This month Rick explains how Thor’s new Finder tool from Jim Nelson helps you, and has developed into a potential replacement for the Visual FoxPro Project Manager.
Consolidate data from a field into a list
Tamar E. Granor, Ph.D.
This task is hard in VFP, but SQL Server provides two ways to do it.
Data Munging with Python, Part 2/1 – Handling Files
Whil Hentzen
I know this will come as a shock to you, but once in a while, you'll run into a data-oriented situation where Visual FoxPro isn't going to cut it. In a previous article, I discussed the situation where an incoming data file exceeded VFP's 2 GB/.DBF capacity. We used SQLite to import that multi-gigabyte table.
Number 35
Introduction to C# for VFP Developers, Part 5
Doug Hennig
This article is the last in a five-part series on the C# language.
VFP: Ideal for Tools, Part 3
Tamar E. Granor, Ph.D.
The first two parts of this series looked at Visual FoxPro language elements for exploring data, and for working with classes and forms. This article looks at parts of VFP that let you work with programs and projects.
A Bevy of Timers
Whil Hentzen
Visual FoxPro applications left open while a user is away can cause a couple of problems. One is the display and access of confidential data. In these days of HIPAA and other strict regulation about who can see what data, it's more important than ever to be able to restrict access granularly. Another reason is needing the ability to run system utilities that require exclusive access of files; if an application leaves files open, those utilities can't be run.
Data Munging with Python
Whil Hentzen
I know this will come as a shock to you, but once in a while, you'll run into a data-oriented situation where Visual FoxPro isn't going to cut it. In a previous article, I discussed the situation where an incoming data file exceeded VFP's 2 GB/.DBF capacity. We used SQLite to import a multi-gigabyte table.
Number 34
Introduction to C# for VFP Developers, Part 4
Doug Hennig
This article is the fourth in a five-part series on the C# language.
VFP: Ideal for Tools, Part 2
Tamar E. Granor, Ph.D.
In my last article, I wrote about VFP language elements related to data that are useful for building developer tools. This time, I’ll focus on language related to classes and forms.
FoxyPreviewer
Rick Schummer
The VFP 9 Report Writer preview screen was vastly improved in VFP 9, yet today there is an open source project called the FoxyPreviewer that improves upon it in many ways. In this article Rick addresses the advantages of the open source replacement and the functionality included that you do not get with the core VFP technology when previewing reports on the screen.
Number 33
Introduction to C# for VFP Developers, Part 3
Doug Hennig
This article is the third in a five-part series on the C# language.
Case Study: Using SQLite to break the 2GB Barrier
Whil Hentzen
“We need to get away from DBFs” is a refrain I hear regularly from fellow developers. Be it due to perceived instability of the file format, the need for tables larger than 2 GB, or the result of political machinations, the result is the same – a desire to move to a SQL database back-end. SQLite can be an excellent intermediate step – and possibly the final word - in the process of restructuring your application to talk to a SQL back-end.
In previous articles, I've helped you dip your toe into the SQLite pool, in preparation for using it as an application backend. In this article, I'm going to take a different direction and show you how I used SQLite to help a customer deal with an external data source that, in its latest release, had become too big to import into a VFP table.
VFP: Ideal for Tools, Part 1
Tamar E. Granor, Ph.D.
In my last few articles, I focused on Thor, a VFPX tool for managing developer tools. Thor and VFPX generally are part of a long history of developer tools for FoxPro written in FoxPro. In this series of articles, I’ll look at the language elements that enable writing developer tools.
Application Updater
Rick Schummer
Most modern applications come with a way to check if there is a newer version available and for it to optionally download and install the update. Writing code to do this is not all that complex, but if you are looking for something that is both powerful and flexible, and already written and tested, you can check out Craig Boyd’s App Updater tool. This month Rick explains how this tool works and what it takes to incorporate it into your application and the user’s environment so you look like a hero.
Number 32
Introduction to C# for VFP Developers, Part 2
Doug Hennig
This article is the second in a five-part series on the C# language.
Give Thor Tools Options
Tamar E. Granor, Ph.D.
In my last article, I showed how to add your own tools to Thor. This time, I look at how you can provide options for Thor Tools, so that users can customize them.
Dynamic Forms
Rick Schummer
How many times in your career have you created a form as a one-time display of some details, collect some criteria, or message your users? How many times have you "cheated" and used the INPUTBOX() function to prompt the user to enter in some information to conditionally control the remaining code in the program because a full-fledged form seemed like overkill? This is a perfect situation for the new Dynamic Forms project available on VFPX.
Setting up VFP 9
Whil Hentzen
Inertia is a powerful thing. I regularly hear from developers who haven't gotten around to upgrading to VFP 9, or haven't kept their VFP 9 installation up to date. Given that all the activity from Microsoft in the last 5 ot 6 years has come in the form streamed updates, it can be time-consuming as well as confusing to figure out how to get VFP 9 set up in tip-top shape. This article will provide a quick cookbook to get your copy of VFP up to date.
Number 31
Introduction to C# for VFP Developers, Part 1
Doug Hennig
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 article, the first in a five-part series, introduces the C# language, comparing it to constructs and syntax in VFP to shorten the learning curve.
Make Thor Your Own
Tamar E. Granor, Ph.D.
In my last two articles, I wrote about some of the tools that come with the VFPX project, Thor. This month, I show you how to add existing tools to Thor, and how to take advantage of the code that's included with Thor.
The Business Case for Moving *Some* Applications to VFP in 2013, Part 2
Whil Hentzen
So you're contemplating VFP for a new project. Or perhaps you've got a 1/2.x application that is in dire need of an upgrade, and you're thinking that VFP is the best choice. But the other players in this situation aren't all in agreement. (Oh, THERE'S a surprise!) You need to make a business case to your management or your customer.
FoxBarcodeQR
Rick Schummer
In the May 2012 issue of FoxRockX, Rick's VFPX column focused on the FoxBarcode project. This month he expands it to a next dimension with coverage of the FoxBarCodeQR project. QR barcodes are two-dimensional, and just like barcode creation with FoxBarcode, very easy to use.
Number 30
Call .NET Code from VFP the Easy Way
Doug Hennig
Calling .NET components from VFP applications can be tricky or even impossible. A new open source project from Rick Strahl named wwDotNetBridge makes this easy.
Try Thor's Terrific Tools, Part 2
Tamar E. Granor, Ph.D.
In my last article, I showed a few of the tools that are included with Thor. This time, I'll look at some more of them, including a number that simplify refactoring.
Another Boring Article About Regular Expressions
Whil Hentzen
Fox developers have lived a long time without needing to know anything about regular expressions. But then that Linux thing became popular a decade ago, and suddenly literature all over the place started referencing them. Yet many developers, not seeing an immediate need, ignored them. "I've been using Fox since FoxBase+ any never needed them. I can't see why I'd need them now." And, true, you don't NEED them. But regular expressions fills the need addressed in this plea "I don't need more input. I need to be able to create more output." Regular expressions might be that tool that will allow you to fit 36 hours of work into a 24 hour day some time. So bear with me; in this article, I'll explain why you MIGHT want to have the ability to use regular expressions in your toolkit, and how to get started.
The Business Case for Moving *Some* Applications to VFP in 2013, Part 1
Whil Hentzen
So you're contemplating VFP for a new project. Or perhaps you've got a 1/2.x application that is in dire need of an upgrade, and you're thinking that VFP is the best choice. But the other players in this situation aren't all in agreement. (Oh, THERE'S a surprise!) You need to make a business case to your management or your customer.
Number 29
Try Thor's Terrific Tools, Part 1
Tamar E. Granor, Ph.D.
Thor provides dozens of great tools to make developing in VFP easier. In this series, Tamar takes a look at her favorites.
Creating ActiveX Controls for VFP using .Net, Part 4
Doug Hennig
Doug concludes his series on creating ActiveX controls using .Net by looking at another way to create ActiveX controls and how to deploy them to your user's system.
IntellisenseX
Rick Schummer
IntelliSense was introduced in Visual FoxPro 7. Many developers have extended it by creating scripts that are stored in the FoxCode.DBF table. Christof Wollenhaupt (with the help of many others) created a tool named ISX to extend IntelliSense without modification to the FoxCode table. Jim Nelson extends this excellent public domain utility, makes some of his own enhancements, and integrates it into Thor on VFPX.
Vive La Difference - How SQLite varies from VFP SQL
Whil Hentzen
"We need to get away from DBFs" is a refrain I hear regularly from fellow developers. Be it due to perceived instability of the file format, the need for tables larger than 2 GB, or the result of political machinations, the result is the same - a desire to move to a SQL database back-end. SQLite can be an excellent intermediate step - and possibly the final word - in the process of restructuring your application to talk to a SQL back-end.
Number 28
Editorial: The Business Case for Upgrading Apps to Visual FoxPro in 2013
Whil Hentzen
So 2013 is getting ready to stare us in the face, and it seems every week we're getting calls from customers who have FoxPro 1.x, 2.x or Visual FoxPro applications in production, wondering what to do with them. These customers have thousands, perhaps tens of thousands of hours invested in their applications, systems that in some cases run their entire company, but they're looking at potential problems as Windows goes through its 5th or 6th new release since their application was initially written.
Using Assign methods
Tamar E. Granor, Ph.D.
In my last article, I introduced Access and Assign methods and showed some examples of Access methods. This time, I'll explore Assign methods, which fire when the corresponding property changes, essentially giving you a "property changed" event.
Creating ActiveX Controls for VFP using .Net, Part 3
Doug Hennig
Doug continues his series on creating ActiveX controls using .Net by adding additional classes to the library of controls he's been building.
Data Explorer 3
Rick Schummer
The release of Visual FoxPro 9 introduced a new Xbase tool called the Data Explorer. Microsoft released a new version in the Sedna release to correct the known bugs and introduce a handful of new features. This article explores some of the newest features added to the Data Explorer past the Sedna release and released on VFPX in a project known as Data Explorer 3.
OS Based Invisible Data Compression in VFP
Pradip Acharya
Data compression with external zipping utilities in VFP applications has been featured in more than one article in this forum over the past quarter century. XP onward, Windows has offered OS managed, behind the scene compression of data in folders and files via a single FILE_ATTRIBUTE control bit. Now long stagnant, VFP even from its inception offered scant choices for system level control of anything, save for a few isolated SYS function settings. Controlling OS handled compression directly from within VFP was taken on as an R&D challenge. This initiative has led to the creation of a new function SETCOMPATT (Set Compression Attribute) in the existing VFP booster library Foxparse, a C based API. OS based, black-box data compression is a device driver functionality which can now be turned on or off directly from a VFP application. Decompression is implicit and automatic, on data access. The user only needs to call SETCOMPATT once to set the compression status of the target folder or file. This technique, unfortunately, is dependent on the device driver being compression enabled, limiting its universal use. Foxparse.fll in this download is the most current release of this library to date.
Number 27
Editorial: Learn, Network, Be inspired
Rick Schummer
Rick has attended developer conferences since 1992 and feels they are an essential part of career development. He credits the countless hours spent sitting in sessions, hanging out in the bar or the pool talking shop, skipping formal sessions to take part in on-the-fly sessions in the hallways, networking at meals, attending late night bonus sessions, long days, and listening to vendors pitch their products as a critical component to his success as a developer and business owner.
Put Access methods to work
Tamar E. Granor, Ph.D.
In my last two articles, I demonstrated BindEvent(), the VFP function that lets you set up a method to respond when an event fires. In this article and the next, I'll take a look at Access and Assign methods, another VFP approach to provide automatic behavior.
Creating ActiveX Controls for VFP using .Net, Part 2
Doug Hennig
Last issue, Doug showed how to create ActiveX controls from .Net components so we can take advantage of these controls without having to convert our applications to .Net. This month, he continues the discussion to show how to handle events.
Inserting Large Amounts of Data into SQLite
Whil Hentzen
"We need to get away from DBFs" is a refrain I hear regularly from fellow developers. Be it due to perceived instability of the file format, the need for tables larger than 2 GB, or the result of political machinations, the result is the same - a desire to move to a SQL database back-end. SQLite can be an excellent intermediate step - and possibly the final word - in the process of restructuring your application to talk to a SQL back-end. In this article, I'll show you how to work with SQLite directly in order to quickly insert large amounts of data into a SQLite database, and then how to export data from SQLite into other data file formats.
VFP 9 SP2 Help File
Rick Schummer
Microsoft released two different Help files for VFP 9 Service Pack 2 (SP2) and both were flawed and considered unusable. I am not sure exactly what happened or how it transpired, but the cold hard fact is no one checked the final Help file Microsoft released during an update of VFP 9 SP2. Fortunately several people in the Fox Community took it upon themselves to attempt to fix it, but only Francis Faure was able to reassemble all the missing pieces and put it all together again. Microsoft Legal gave the final blessing and released it to the Fox Community on VFPX using a Creative Commons license.
Creating Dependency Properties and Understanding DP-concepts
Patrick Schärer
Anyone who has done some Silverlight or WPF has stumbled over the term "Dependency Property"and if he has done some research on it, he has probably found out that nearly all properties of visual objects shaped through XAML code are Dependency Properties, and that for them to work the containing object (such as UserControl or Window) must inherit from DependencyObject. He also might have discovered that this is the mechanism used to allow properties to depend on (or be determined by) the typical XAML-like mechanisms like styles, animations and Xaml-Bindings.
Cool tool for reporting problems
Tamar E. Granor, Ph.D.
Windows 7 introduced a cool tool that can help you understand your customer's bug reports.
Number 26
Put Event Binding to Work, Part 2
Tamar E. Granor, Ph.D.
In my last article, I gave an overview of the BindEvent() function and showed some of the ways I use it to improve my applications. In this article, we'll see some additional examples, including one that binds to a Windows event.
Creating ActiveX Controls for VFP using .Net, Part 1
Doug Hennig
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. 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 is the first in a series of articles discussing techniques for creating ActiveX controls from .Net components so we can take advantage of these controls without having to convert our applications to .Net
SQLite Connection: Error Handling and Verification
Whil Hentzen
"We need to get away from DBFs" is a refrain I hear regularly from fellow developers. Be it due to perceived instability of the file format, the need for tables larger than 2 GB, or the result of political machinations, the result is the same - a desire to move to a SQL database back-end. SQLite can be an excellent intermediate step - and possibly the final word - in the process of restructuring your application to talk to a SQL back-end. In this article, I discuss how to deal with the usual spate of errors that can occur when connecting to SQLite from VFP, and then how to verify that the connection actually is working.
FoxBarcode
Rick Schummer
Barcoding data has been around for decades, and has become simpler over time. Yet developers struggle when they are first approached to include barcodes in their applications. The challenges include finding the appropriate barcode fonts, finding compatible ActiveX controls, and getting barcode readers to read the generated barcodes. This month, in our ongoing series on VFPX, Rick covers how barcoding is simplified for Visual FoxPro developers using FoxBarcode.
Number 25
Put Event Binding to Work, Part 1
Tamar E. Granor, Ph.D.
At fi rst glance, the BindEvent() function may seem unnecessary. After all, why bind to an event when you can just write code in the event's method?
Make Your Menus Pop
Doug Hennig
Last issue, Doug discussed ctl32_ContextMenu, an object-oriented menu class that's part of the ctl32 library. This month, he looks at another OOP menu class, this time the VFPX PopMenu project.
VFPX: GoFish 4
Rick Schummer
GoFish is a tool originally released in March 2001 by Peter Diotte and resurrected by Matt Slay in 2010. GoFish revolutionizes search performance and gives Visual FoxPro developers a solid source code search and replace process. If you are a fan of Microsoft's Code References tool or the enhanced VFPX version you certainly should take a look at the new and improved GoFish. This month Rick shows you how this tool surpasses Code References in so many ways and points out a couple of the features where it is still a step behind.
Getting started with Client-Server with SQLite
Whil Hentzen
"We need to get away from DBFs" is a refrain I hear regularly from fellow developers. Be it due to perceived instability of the file format, the need for tables larger than 2 GB, or the result of political machinations, the result is the same - a desire to move to a SQL database back-end. SQLite can be an excellent intermediate step - and possibly the final word - in the process of restructuring your application to talk to a SQL back-end.
Number 24
New Ways: Managing Properties as Virtual Table Fields
Pradip Acharya
In a distributed multi user application with a central shared database, it's not easy to add new fields to a table or modify table structures at will. This may not even be practical. For example, when the Product table must support inventory for a several Business Models, there may be thousands of individual Product properties.
Deep Dive: The ctl32 Library, Part 3
Doug Hennig
Carlos Alloatti has created an incredible library of controls you can use to give your applications a more modern interface. Doug finishes his look at the library with the last set of controls.
Know How: Speed Up Your SQL Code
Tamar Granor, Ph D
In my last article, I talked about the two functionsin VFP that allow you to measure the optimization of SQL commands. This month, I'll look at what you can do to improve performance once you know that a query is sub-optimal.
VFPX: Parallel Fox
Rick Schummer
Parallel processing is defined as the performance by a computer of two or more simultaneous operations divided among multiple processors. Parallel programming is spawning processes on two separate processors either on different computers or the same computer. This is becoming more and more important based on the engineering fact it is getting harder to get silicone-based processors to run faster with the reliability and stability we expect and require. So how do Visual FoxPro developers take advantage of this approach? Well thanks to Joel Leach and the Parallel Fox project on VFPX, it actually is quite straightforward.
Number 23
01 New Ways: Foxparse C Library for Handling Strings, Properties and Windows
Pradip Acharya
A limited version of the Foxparse.fll C library was introduced in an earlier recent issue. This issue covers the full version featuring the complete set of advanced functions. The C API was created to expand the limited choices for string handling, formatting and parsing offered by VFP9. Functions described earlier are all included in this issue, most with additional options and functionality.
Number 22
Editorial: Totally Marshmallowed? Join us at SWFox DevCon for a refresher!
Rainer Becker
You should not miss the SWFox DevCon. It covers a lot of great topics, treated by great speakers! But maybe economics are harsh again in your region and maybe there is a problem with the funding - concerning not only the money to spend, but also the time? Time of not being available at your desk for the perennially urgent development work, support and maintenance tasks. Here come a few more reasons why you should circumnavigate all these obstacles somehow or why your boss should be won over, too.
Deep Dive: The ctl32 Library, Part 2
Doug Hennig
Carlos Alloatti has created an incredible library of controls you can use to give your applications amore modern interface. Doug continues his look at the library withthe next set of controls.
Know How: Make Your Queries Fly
Tamar Granor, Ph D
In the January, 2010 issue, I wrote about changes in VFP's SQL commands in VFP 8 and 9. But one of the key elements in using SQL commands is that they can be very fast. When they're not, you need to figure out why. Fortunately, VFP includes a couple of functions that help you do so.
VFPX: Thor Adding Tools
Rick Schummer
Thor is designed to be the ultimate IDE extension and tool manager and is quickly maturing on VFPX. Last issue Rick briefly introduced you to the installation process and provided a brief overview of Thor's user interface. This month Rick dives in to the core reason this tool was created in the first place by detailing how you can use Thor to manage various add-ons and tools you want integrated into the Visual FoxPro 9 IDE.
Tips & Tricks: Schummer Tips and Tricks
Rick Schummer
ActiveX/IntelliSense tip Dragging the ActiveX controls from the Visual FoxPro Toolbox to an editor provides the syntax for CREATEOBJECT() code. The following code was created when I dropped the Adobe PDF Reader ActiveX Control in the program editor...
Tips & Tricks: Report Writer
Cathy Knight
The VFP Report Writer has some very useful features hidden away. The first hidden feature is very helpful for concatenating data in a single field object on a report. The second hidden feature is helpful for browsing or hacking the FRX.
Internationalization: Internationalize Your App, Part 1 Entering international characters
Rainer Becker
Numerous articles and publications describe how to use Unicode and such in Visual FoxPro applications to enable the input and display of international character sets. Visual FoxPro cannot process double byte character sets and a workaround is needed in all cases. The simple approach discussed here might be the quickest solution to internationalize the data input capabilities of your application, at least to some degree.
Number 21
Editorial: It's show time again
Rainer Becker
Mark the date: October 26 - 29, 2011. The Southwest Fox 2011 will take place at the Legado Hotel, Gilbert, Arizona, USA and you should not miss this great event! All details including very interesting session descriptions and the speakers' biographies are available on-line at www.swfox.net. Registration is already open.
Deep Dive: The ctl32 Library, Part 1
Doug Hennig
Want to add fresher, more modern-looking controls to your applications? Want to avoid ActiveX issues? Take a look at the ctl32 library.
Know How: Talking to Microsoft Office
Tamar Granor, Ph D
While most Office Automation code moves smoothly from older versions to the latest, some changes in recent versions do have an impact on the process of automating the Office apps. One change in Office 2010 has major implications for applications that need to use Office's applications programmatically.
Customerizing: Customizing Your Vertical Market Application, Part IV
Cathy Pountney
In the previous three installments of this four-part series, I introduced you to a customization methodology you can implement in your vertical market application to keep your standard code independent from your custom code, yet have the two code bases "play nice" together. I showed you how to lay the foundation and add hooks in your application. I showed you how to build the custom application and add basic functionality. I explained how to customize menus, forms, processes and even offer customized data. In this last article of the series, I show you how to customize my favorite part of an application; Reports.
Silverlight: Applications and the local System
Michael Niethammer
As You saw this headline You might be wondering why it is necessary to write an article in Fox RockX about SL-applications and the system they are running on. But please remember: Silverlight is a web-technology, applications written this way are running on the local system in a "sandbox", hosted by a web browser, without any access to the local machine. Thinking about business- applications it becomes very important to talk about ways to use the local file system, automate applications like Office or using the local hardware.
VFPX: Thor Introduction
Rick Schummer
Thor is designed to be the ultimate IDE extension and tool manager and is relatively new to VFPX. Thor helps you manage hotkeys as shortcuts to your add-ons, allows you to create and manage a developer menu, and positions itself as a facilitator to add-ons and the ability to more easily share tools you create with other Visual FoxPro developers. This month Rick is going to give you a short introduction to this fluid project in hopes you will help test it out and provide some of your own add-ons to share with the Fox Community, and then next time dig deeper into some extensions samples.
Number 20
1 Deep Dive: Email and File Transfer the Fast (and Cheap!) Way
Doug Hennig
In the previous two issues, Doug discusses 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.
06 Know How: Build Your Own Project Tools
Tamar Granor, PhD
While Visual FoxPro's Project Manager doesn't offer much in the way of tools to audit or manage projects, the ability to address the project as an object more than makes up for this deficiency.
13 Customerizing: Customizing Your Vertical Market Application, Part III
Cathy Pountney
In the previous two installments of this four-part series, I introduced you to a customization methodology you can implement in your vertical market application to keep your standard code independent from your custom code, yet have the two code bases "play nice" together. I showed you how to lay the foundation and add hooks in your application. I showed you how to build the custom application, add basic functionality, and explained how to customize menus. In this article, Part 3, I take it a step further and show you how to customize forms, processes, and offer customized data to your clients.
17 Tools: dFPUG.fll Version 3 - Zip, Scan and more
Venelina Jordanova & Uwe Habermann & Erich Todt
The dFPUG.fll has grown up. The little FLL with functions for compressing and decompressing files has become an ample collection of functions indispensable for many purposes. FoxPro developers are offered capabilites hitherto unknown.
Number 19
1 Deep Dive: Encryption the Fast (and Cheap!) Way
Doug Hennig
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.
06 Know How: Inside the Object Inspector
Tamar Granor, PhD
In my last article, I demonstrated the Object and Collection Inspector, a new tool I built to overcome the VFP Debugger's weaknesses in working with collections. This time, I'll open the hood and cover some of the issues I encountered in building the tool.
14 Customerizing: Customizing Your Vertical Market Application, Part II
Cathy Pountney
Part 1 of this four-part series introduced you to a customization methodology you can implement in your vertical market application to keep your standard code independent from your custom code, yet have the two code bases "play nice" together. This article, Part 2, dives into the code showing you how to lay the foundation and start building the custom application as well as how to add some customization to menus in your application.
19 VFPX: Vista (and Windows 7) Dialogs via COMtool
Rick Schummer
Sedna was released on January 25, 2008, which is more than three years ago. Yet Rick still finds Visual FoxPro developers asking questions about Sedna, where to go get it, what is included, and how to install it. Microsoft open sourced the Sedna release package and source code, and made it so they could be available on VFPX. Now developers can extend them and have the ability to re-release them to the Fox Community. This month Rick is going to show you the VistaDialogs4COM, which is one of the components available in the Sedna package.
Number 18
1 Deep Dive: Compression the Fast (and Cheap!) Way
Doug Hennig
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.
06 Know How: Introducing the Object and Collection Inspector
Tamar Granor, PhD
For the last four years, I've been working on a project that has grown to include a complex object hierarchy with many embedded collections. While VFP's collection class is quite useful, the debugging tools for collections are weak. In particular, there's no support for drilling down into collections. So I finally created my own tool.
09 Customerizing: Customizing Your Vertical Market Application, Part I
Cathy Pountney
Writing a vertical market application can be very rewarding. You write one application, sell it numerous times, and sit back while the money rolls in. Well,that's the theory anyway. The reality is often times new clients want to buy your software as long as you can change this one little thing. Managing custom code for various clients within your application can easily turn into a nightmare as your client base expands. This article, part 1 of a four-part series, introduces you to a customization methodology you can implement in your vertical market application to keep your standard code independent from your custom code, yet have the two code bases "play nice" together.
13 Silverlight: Lightswitch - a first look at the Beta of the new RAD tool
Michael Niethammer
End of August this year Microsoft published the first Beta of their new product called "Lightswitch" (former internal name: "KittyHawk"). This product should fill a gap in the Visual Studio toolset for professional developers as well as for home users to create database applications as easy as possible. Without writing a line of code, Lightswitch enables the user to create CRUD applications for different datasources (locally or anywhere else) easily. Even though it's somewhat a model-based application generator there are enough ways for enhancing the generated application to make the toolset a valuable thing for professionals. In this article I will give a brief overview of Lightswitch and its architecture.
20 Tools: Application String Handling Made Easy with Foxparse C library
Pradip Acharya
In business applications (and in general), we are faced with complex string handling and parsing issues every day. Fulfilling this requirement with the rudimentary VFP functions SUBSTR, ATC and ALINES is a tedious task involving lengthy ad hoc coding with numerous chained function calls within VFP loops, slowing down development not to mention execution. In this introductory article, Pradip Acharya presents the broad outlines of the new Foxparse C library, its advantages, how it's used and a few core functions with examples. In a forthcoming issue, the complete set of functions and the advanced options will be unveiled. Foxparse.fll included in this download is the curtailed version of the library.
Number 17
Silverlight: Silverlight Business Application
Venelina Jordanova & Uwe Habermann
You can create Silverlight 4 applications with any version of Visual Studio 2010. We are using the version "Visual Web Developer 2010 Express" which is available for download free of charge. Basically all Silverlight 4 applications can be developed with this free version of Visual Studio 2010. But the various commercial versions of Visual Studio offer an extended debugging, automatized testing capabilities, and the possibility of integrating them in a source code management system. However, the free Visual Web Developer 2010 Express is the right choice for beginners. And in many cases it will suffice for doing professional development work.
Deep Dive: A More Flexible Report Designer
Doug Hennig
This month, Doug presents a way to make the VFP Report Designer more flexible, such as customizing the pages of the properties dialogs without having to change ReportDesigner.APP.
Know How: Understanding Business Objects, Part III
Tamar Granor, PhD
Once you have business objects, you need to connect them to the user interface. Plus changing the application is easier than when business logic and UI code are mingled
Number 16
Editorial: Rescue in sight with Silverlight
Rainer Becker
Dear FoxRockX reader,the publisher of FoxRockX magazine, the FoxPro User group of German Language Inc., is happy to report good news: Our plans to offer a migration path for Visual FoxPro developers have taken big steps forward!
VFPX: zProc IntelliSense
Rick Schummer
IntelliSense in Visual FoxPro is highly extensible and this is proven by the number of developers who create scripts over the years to assist themselves and other developers in writing source code quicker. This month Rick is going to dive into the relatively new "zProc, zVFP, and zCOM IntelliSense Scripts" project headed up by Jijo Pappachan to show you three new scripts which may or may not be useful for your development, and potentially can save you time.
Deep Dive: Practical Uses for GDIPlusX, Part III
Doug Hennig
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 article is the last in a series that examines some practical uses for GDIPlusX.
Know How: Understanding Business Objects, Part II
Tamar Granor, PhD
In my last article, I explained what business objects are and why I had a hard time learning to use them. Then, I looked at a client application (called NMS) that brought the ideas home to me. In this issue, I'll begin to look at the details of using business objects.
Silverlight: SL Data-Binding and Data-Validation
Michael Niethammer
Developing Silverlight applications is totally different from the way FoxPro developers did things for a long time. Most of them don't like to switch over to Visual Studio because of the DataBinding in old style Winforms Applications. Microsoft has released the Windows Presentation Foundation and Silverlight with a totally rewritten User-Interface. So let's take a closer look at it.
Number 15
Silverlight: Silverlight for VFP Developers
Venelina Jordanova & Uwe Habermann
In the past most of VFP developers were in search of new development tools. Some of us switched to other development platforms like Java or .NET, but most VFP developers still looked for a development platform.
VFPX: Code References
Rick Schummer
The Code Reference developer tool is one of those tools some developers find indispensible and other developers find less useful. Regardless of your opinion all Visual FoxPro developers have the need to do global searching of the different source code files included in their projects. Jim Nelson decided he wanted a few of his enhancements ideas implemented to make his searching more productive and is making Code References a little more powerful. This month Rick digs into the beta release of this product to show you what is new, and maybe even shed some light on some gotchas with the latest release.
Deep Dive: Practical Uses for GDIPlusX, Part II
Doug Hennig
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 article is the second in a series that examines some practical uses for GDIPlusX.
Know How: Understanding Business Objects, Part I
Tamar Granor, PhD
I've been hearing about business objects since some time in the mid-1990's. Not long after VFP added object-orientation, people started recommending that business logic be encapsulated into a set of separate objects. Intellectually, I understood the idea, but the examples I saw never really seemed to deliver on the promise. The standard example involved a customer object with the customer data entry form calling on that business object to do things like calculate sales tax. While I could see how to build that kind of object, it didn't seem all that important.
Number 14
Editorial: The Visual FoxPro Roadshow 2010
Rainer Becker
Dear Subscribers, thank you for your ongoing support of FoxRockX! And here comes our gift to you for supporting us: You are herewith invited to a free one-day workhop right after the South West DevCon in October!
VFPX: OOP Menus
Rick Schummer
OOP menus are probably the second highest requested feature to be added to Visual FoxPro over the years. Microsoft never responded to this request for some reason (I am speculating it was most likely a resource issue). Doug Hennig wanted OOP menus and over the years implemented his own set of classes to accomplish this task and has posted the classes up on VFPX for others to use and help enhance.
Deep Dive: Practical Uses for GDIPlusX, Part I
Doug Hennig
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 article is the first in a series that examines some practical uses for GDIPlusX.
New Ways: Extending the Toolbox
Tamar Granor, PhD
Several issues back, I wrote about the Toolbox, a cool tool added in VFP 8 that makes designing forms and classes much easier. Like many other VFP tools, the Toolbox was written with VFP and was designed with extension in mind. This month, I want to show you how simple some changes to the Toolbox are, so you can customize it for your needs.
New Ways: Dating with DBI
Toni Feltman
In the last issue of FoxRockX I talked about three of the eight ActiveX controls that DBI Technologies have graciously provided Visual FoxPro 9.0 SP2 users for free. In this issue I am going to talk about two more controls that make working with dates a little more exciting.
Number 13
1 Editorial: Visual FoxPro Stack Overflow
Ken Levy
In software, a stack overflow occurs when too much memory is used on the call stack, usually caused by programming errors, typically resulting in a program crash. In ideas, a stack overflow might occur when too many ideas, all with good intention, comprise a concept which is too far reaching and/ or unrealistic to reach its goals.
2 VFPX: ProjectHookX
Rick Schummer
Projecthooks were introduced in Visual FoxPro 6, yet even today I know developers who have not implemented projecthooks in their development. Projecthooks allow you as a developer to write code that reacts to the different events of the Project Manager. One of the drawbacks of projecthooks is you only get one per project. Toni Feltman from F1 Technologies saw this limitation pain and designed one approach to working around it so developers can use more than one projecthook for any one project and calls this project ProjectHookX.
6 Deep Dive: Introduction to GDIPlusX, Part III
Doug Hennig
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 article is the third in a series that 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.
11 New Ways:OOP + Metadata = Flexibility
Tamar E. Granor, PhD
Over the last few years, I've found many situations where data-driving code makes an application easier to maintain. But sometimes, data-driving alone can lead to repeated code and more difficult maintenance. In such cases, combining good objectoriented practices with data-driving may provide a better solution.
15 New Ways:Paying it Forward
Toni M. Feltman
For years DBI Technologies, www.dbi-tech.com, has offered for sale ActiveX controls that could be used in various development languages and unlike many other third party vendors they had examples written in FoxPro. Now, DBI's support of the Fox- Pro community is even better. They have agreed to give away 8 of their active controls for free to users of VFP 9, SP2 in a bundle called the "Sedna Components."
Number 12
1 Editorial: Get on the VFPX Bandwagon
Rick Schummer
A group of VFPX developers/users held a bonus session during the Southwest Fox conference in October to discuss future direction of VFPX and what is needed to get the word out to other developers in the Fox Community. There were a number of good ideas shared, but there are three key details I believe need to be highlighted.
2 VFPX: SCCTextX
Rick Schummer
Source code control is an integral part of the development process for Visual FoxPro developers, but much of the source code elements in Visual FoxPro are stored in binary format (DBF files), which is not friendly to source code control repositories. The Alternate SCCText project and specifically the SCCTextX program is the key ingredient to flattening the DBFs into text files so comparisons can be performed between versions, and merging of two changed versions can occur. Jurgen "wOOdy" Wondzinski leads the SCCTextX project that contains what is considered the gold standard for the Visual FoxPro SCCText process.
6 Deep Dive: Introduction to GDIPlusX, Part II
Doug Hennig
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 article is the second in a series that 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.
13 New Ways: Take adventage of SQL improvements
Tamar E. Granor, PhD
When SQL commands were added in FoxPro 2, it didn't take me long to see that they could make writing code easier. SQL SELECT, in particular, was very appealing since it made it possible to retrieve the data I needed by specifying what I wanted rather than how to find it.
17 New Ways: Where's the Beef?
Jim Booth
Many times I have found my self using onto a piece of software for one purpose only to find out that it has many other very valuable uses as well. It's like finding a free tool in my tool box. Well FoxRockX is just like that once you discover its web version. If you haven't yet visited http://www.foxrockx.com please make it a point to visit there and spelunk around abit real soon. There are gems lying around that place worth their weight in gold.
19 New Ways: String.Format for VFP
Eric Selje
If you haven't used C#'s String.Format() method, it's a real treat. There's nothing natively like it in VFP, but we can certainly roll our own equivalent. This will make our code easier to read and maintain. This article will show why you want to do that, and how to do it.
22 VUProjectTools: Updating project files from the source control management
Venelina Jordanova & Uwe Habermann
To make our daily development work easier we have brought many useful little tools to life. In this article in two parts we would like to introduce two of our "V&U Project Tools". This second part concerns how to update project files from the source control management.
FoxRockX Special issue "VFP.NET"
01 VFP.NET
Boudewijn Lutgerink
The Netcompiler for VFP, or VFP.Net as it is already called by its fans,
offers you the language you already know.
For a better understanding, VFP in this context has the meaning of Very Fast
Productivity. The commands and functions of VFP are covered now for more than
90%. Some older functions, like DDE functions will never be included as these
became obsolete due to the new technologies. At the same time VFP.Net gives you
access to all the classes that .Net assemblies offer you, either developed by MS
or by 3rd party manufacturers. eTecnologia also took a good look at the
possibilities other languages had to offer. This lead to language enhancements
that you will most definetely like. I tell more about that later on. As a result
of having that well known language it offers you also the possibilities to
access data the way you are used to, simple, fast and furious.
Number 11
01 Editorial:
Ken Levy
Microsoft will never release VFP source code into open source because there is no business reason to do so and a list of reasons not to. The evolution of VFP goes on into the next decade with new and enhanced products that work with VFP, community projects such as VFPX, and of course the VFP community itself.
02 VFPX: Control Renamer
Rick Schummer
The Control Renamer Builder project headed by long time Visual FoxPro guru Tamar Granor is relatively new to VFPX, but has been around a few years. This tool started out as a personal project to help Tamar rename controls in forms developed by other developers so the names of the controls have meaning and followed common programming standards. In this article I hope to show you how this sophisticated builder actually helps me refactor code that I have in forms and VCX-based classes.
07 Deep Dive: Introduction to GDIPlusX, Part I
Doug Hennig
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 article is the first in a series that 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.
13 New Ways: Collections instead of Arrays
Tamar Granor, PhD
Every procedural programming language I used before FoxBase+ offered arrays as a way to hold an ordered collection of information. So when I started learning FoxBase+, its arrays made sense to me. Infact, the very first article I ever published in a Foxjournal was about arrays.
17 Best Practices: Best Practices Part VI
Jim Booth
In this series of articles we have discussed a wide variety of issues related to the development of high quality software systems. We have investigated methods for achieving efficiency in our development efforts and attempting to reduce the risk for errors in our code.
19 VUProjectTools: Beauty Studio
Venelina Jordanova & Uwe Habermann
To make our daily development work easier we have brought many useful little tools to life. In this article in two parts we would like to introduce two of our "V&U Project Tools". The first part treats the so-called "Beauty Studio".
Number 10
Editorial: New kids on the block
Rainer Becker
And here they come: A new book about Visual FoxPro has been sent to the printer today, and printed copies will be available in September 2009. It is the rewritten version of the best-selling Visual FoxPro book of all time: "Effective Techniques for Application development with Visual FoxPro 6.0" by Jim Booth and Steve Sawyer from Hentzenwerke Publishing. Jim Booth has reworked and updated it for Visual FoxPro 9.0, but it is still valid for all versions. And why do we say "kids" instead of "kid"? Because this book, "Effective Application development with Visual FoxPro" comes in two flavours, English and German at the same time!
VFPX: Code Analyst
Rick Schummer
Code Analyst is a tool developed by Andrew MacNeill who is a long time Visual FoxPro guru and most recently famous for his "The Fox Show" podcasts (http://akselsoft.libsyn.com/). Code Analyst is being developed to help Visual FoxPro developers recognize possible refactoring opportunities. If you are not familiar with refactoring then you need to know it is part of the development process when you recognize a "smell" of properly working code that could be written better. There are a number of refactoring patterns developers have detailed over the years and concepts we all recognize in our code and in other developers' code. Code Analyst is here to help you find these opportunities faster.
Deep Dive: Custom UI Controls:SFCombo Tree
Doug Hennig
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.
New Ways: The Right Keys are Primary
Tamar Granor, PhD
FoxPro is a relational database, that is, data is stored in multiple tables with fields that establish relationships between those tables. In order to establish those relationships, there must be a way to uniquely identify each record in a table. The field or fields that link one table to another are called keys. Over the years, the best practices for creating those keys have changed, as have the tools for doing so in VFP.
New Ways: Test Driven Development, After the Fact, Part II
Eric Selje
In Part I, we reviewed what test-driven development (TDD) was, created some unit tests in Fox-Unit, and put together some trivial code to calculate a factorial to run the tests on. It's easy stuff when you're starting with a blank slate, but how do you get started when you've already got a ton of legacy code? This article will show you how to make a couple of quick changes to FoxUnit to quickly get a suite of tests on existing code.
New Ways: ActiveLabel Class - CmdButton Substitute for Forms with the New Look
Pradip Acharya
On the Web and in desktop applications, command buttons are a rare sight today. An action is launched via a highlighted or underlined text string. While VFP offers a HyperLink native class and a Click method for a label, neither a Hyper-Link nor a passive label fulfils the general need for a full featured ActiveLabel control with SetFocus, Keypress and TabStop functionality with builtin co-ordination of associated internal or external access keys, images(s), and supplementary descriptive label. Pradip Acharya presents an easy to use ActiveLabel class with rich capabilities which is not a container class. The class library in the download is self sufficient with no external dependencies. The class is also an excellent Toolbar alternative for simplicity, and can also serve as raised 3D buttons as seen in VFP task panes, with optional double line captions.
Number 9
Editorial: All You Can Eat!
Rainer Becker
It's conference time again. This year's Prague DevCon took place, SouthWestFox and the FoxPro DevCon Germany and other events are coming soon. And lots of new topics and new stuff to learn for everyone. For 15+ years I have really tried to attend conferences and learn new things. And the FoxPro conferences I always enjoyed most as they are the best on earth from my perspective. I am really sorry about each one I missed for whatever reason. Surely the FoxPro DevCons are smaller nowadays, which is a pity as the number of topics you need to know about has increased each year. Therefore developers have to attend other conferences as well.
VFPX: Tabbing Navigation
Rick Schummer
Rick covers the Tabbing Navigation project this month in his continuing series of articles on the open source project known as VFPX hosted on CodePlex. This project provides developers with a snappy dialog filled with the titles of the open windows as well as a list of standard Visual FoxPro windows available for selection. This enhancement to the Visual FoxPro Interactive Development Environment (IDE) is clean and a fast way to find a specific instance of an editor or designer window when you have numerous instances open.
Deep Dive: Custom UI Controls:Splitter
Doug Hennig
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.
Best Practices: Best Practices Part V
Jim Booth
Last time we discussed some of the concepts that allow us to really exploit our object oriented approach to system development. This time we will pull back a bit and look at our work from a more distant perspective. We will look at the very big picture of our system design by focusing on the architectural structure of our systems.
New Ways: Use the Toolbox!
Tamar Granor, PhD
Until now, I've focused this column on the FoxPro language, covering commands and functions. In this issue, I want to take a look at one of my favorite recent tools, the Toolbox, introduced in VFP 8.
New Ways: Test Driven Development,After the Fact, Part I
Eric Selje
Test-Driven Development (TDD) is easiest when you do it right from the start. But once you've written a lot of code it may seem overwhelming to start testing it after the fact. But if you change any of that existing code, having tests is the best way to ensure that you don't break any functionality. It may seem like a catch-22, but it is worthwhile to create tests on legacy code so you can use to make sure that doesn't happen.
Number 8
Editorial: VFP 9 SP2 News
Rick Schummer
The perception and adoption of the Visual FoxPro 9 Service Pack 2 has been in a word, underwhelming. Reports of the Report Designer having some bugs and the Help file being a mess spread across the various forums and blogosphere extremely fast. Rick has good news on both fronts!
VFPX: PEM-Editor
Rick Schummer
The PEM Editor is one of the fastest moving projects on VFPX and for this reason one of the hardest tools to write about in this continuing series. That said, this month Rick attempts to catch you up on all the development for the PEM Editor, show you some of the super cool features it has to help you be more productive, and expose some of the new functionality being developed for the fourth release of this powerful tool.
Deep Dive: Creating Explorer Interfaces in Visual FoxPro, Part 3
Doug Hennig
The last article in this three-part series finishes examining a set of classes that provide Explorer-style interfaces to Visual FoxPro applications.
Best Practices: Best Practices Part IV
Jim Booth
Last month we covered the introduction of object orientation and some of the key concepts of that programming paradigm. This month we will continue to look into the key concepts of object orientation and discover some additional mechanisms that are at our disposal within this conceptual programming approach. In addition to covering some more of the programming concepts of object orientation, this month we will introduce and discuss at some length the idea of application frameworks and see how they are constructed and what they can do for us. Obviously, in a single article we will not be building a complete application framework or even discussing a complete framework but we will cover enough about frameworks to give you a very good start on how to approach building your own and how to evaluate any of the many commercial application frameworks that are out there.
New Ways: Handling Code that Changes at Runtime
Tamar Granor, PhD
There are lots of places in VFP code where you don't know until the code is running exactly what you want it to do. Perhaps you want to let the user choose a file to operate on, or you want to run a report based on criteria specified by a user. VFP offers a number of different ways to handle code that isn't known until run-time. Knowing which one to use when affects the efficiency, accuracy, and reliability of your code, but many people stick with macros and don't use any of the other options. In this article, I'll look at each of the options and discuss where it's appropriate.
New Ways: Use FastNoData to drastically improve form load times
Mike Yearwood
Forms that take too long to load are a cause of frequent complaints. Here's a technique that can dramatically reduce form load times. I've seen anywhere from 8 to 4375 times faster. My most complex form went from loading in a range of 8 to 10 seconds, down to a consistent 2.2 seconds.
Number 7
Editorial: Thanks for the Memories (and all the code)!
Doug Hennig
As they discuss in this issue's article, Andy Kramek and Marcia Akins have written their last Kitbox column. Doug offers a tribute to Andy and Marcia to celebrate their years of contribution to the FoxPro community.
VFPX: FoxTabs the VFP IDE
Rick Schummer
FoxTabs is relatively new to VFPX, but has been in development for years. In October 2008 project manager Joel Leach dusted off the initial development started several years ago by Craig Bailey and Scott Scovell and began moving the tool forward. This month Rick will discuss this innovative approach to enhancing the VFP IDE and explain how he uses it to enhance his productivity.
Deep Dive: Creating Explorer Interfaces in Visual FoxPro, Part 2
Doug Hennig
In the first part of this three-part series, Doug presented a set of classes that form the basis of an Explorer-style interface. This article looks at more of these classes.
KitBox: So Long and Thanks for all the Fish!
Marcia Akins and Andy Kramek
For more than 10 years Andy has been writing the Kitbox Column. He was first published, with co-author and long-time friend, Paul Maskens, in the April 1998 edition of FoxTalk. Andy and Paul wrote some 42 articles together in the three and a half years of their collaboration and the style of the column as an interchange between two peers began to gradually evolve. When Paul retired from the column in September 2001, Marcia jumped in and took over as Andy's partner in the column, as she is in real life. Together they have written more than seventy articles together and, under their collaboration, the back-and-forth style of two real-life developers discussing a problem of mutual interest evolved further until it truly has become their unique signature. Andy and Marcia's writings are instantly recognizable, and their style has even been imitated (the sincerest form of flattery - even if it was not very successful). However, like all things, this too must come to an end and this is the final offering from Andy and Marcia.
New Ways: The Scope of Things
Tamar Granor, PhD
When I started using FoxBase+, there were two kinds of variables available: public and private. If you did nothing, any variables you used in code were private. Since that was the most restrictive scope available, it was easy to get into the habit of not declaring variables unless they were public.
Best Practices: Best Practices Part III
Jim Booth
In the last article of this series we covered the concepts of encapsulation and cohesiveness to understand how to construct routines that have a solid internal structure and we discussed coupling to investigate the issues involved with constructing routines that play well with others. Our first venture into this best practices series covered what constitutes a routine and why we care about routines at all.
Number 6
VFPS: Visual FoxPro Stack
Ken Levy
The evolution and next phase of Visual FoxPro has essentially been transferred from Microsoft to the FoxPro community. Visual FoxPro will evolve, but the results of its evolution depend on the efforts within the FoxPro community. VFPS (Visual FoxPro Stack) can become an important part in the future and perception of Visual FoxPro starting in 2009 and into the next decade.
VFPX: Using Desktop Alerts
Rick Schummer
The Desktop Alerts provide you with another common mechanism to deliver informational messages to the users while your application is running. This month in Rick's continuing series on VFPX deep dives, he takes a look at the Desktop Alert project on CodePlex, and demonstrates why this control might help you get rid of a few WAIT WINDOWS in your applications.
KitBox: Take it up with Management
Marcia G. Akins, Andy Kramek
All Visual FoxPro applications rely on data and in VFP we have various ways of handling sets of data. We may use tables directly, views, predefined cursors, or cursors generated "on the fly" by SQL queries. However, VFP doesn't have a command that will unconditionally create or open and make current a data set irrespective of the type. In this month's column Andy and Marcia discuss the creation of a class that will do precisely that thing.
New Ways: From Type to Type
Tamar E. Granor, PhD
Changing data from one type to another is a common requirement. In older versions of VFP, you had to know a veritable cornucopia of functions to handle the various possibilities. A few recent additions make type conversion easier.
Best Practices: Best Practices Part II
Jim Booth
Last month we started this series with a little history and some discussion of basic programming practices. We discovered the ideas of routines and modules in our application development and we discussed the impact of designing for expansion to be able to adapt to future requirements. This month we will be digging deeper into the construction of our code and the concepts that we need to understand to realize the benefits of well designed system development.
Extend Excel with VFP!: Using a Visual FoxPro ComServer with Excel (and other VBA applications)
Rainer Vömel
Most programmers that use VBA are non-IT employees usually, with a marketing, finance, or logistics background trying to automate some reporting tasks. Usually this starts with an Excel spreadsheet and the use of ODBC. With ODBC the user can retrieve results from database queries and create some powerful reports. However, there might be some surprises that will make the user look for a different solution. In my case this was a bug in the VFP ODBC driver when I was using the default settings. The setting "Fetch data in background" caused the ODBC driver to hang after creating a lot of reports. In my case this was creating a personalized report for roughly 150 recipients. Sometimes after about report 92 the process would hang; at other times this would be around report 102, etc. This made me want to use a VFP ComServer instead of ODBC. After unchecking the ODBC setting Fetch data in the background, the problem vanished, but I now understood the potential benefits of using a ComServer. In addition, the ComServer now has all the SQL features of Visual FoxPro 9, whereas the ODBC driver has not been updated for several years. The ComServer I am using now has about 150 methods. This article describes how to use a Visual FoxPro Comserver with Microsoft Excel.
Number 5
VFPX: Using the BalloonTip
Rick Schummer
The balloon tip control is a nice way to communicate information to the users while they are interacting with the user interface of the application. This month in Rick's continuing series on VFPX deep dives, he takes a look at the ctl32_BalloonTip control found in the ctl32_StatusBar project up on Code Plex.
Deep Dive: Creating Explorer Interfaces in Visual FoxPro, Part 1
Doug Hennig
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 first of a multi-part series presents a set of classes and techniques that makes short work of developing explorer interfaces for your applications.
Kit Box: A Moving Experience
Marcia Akins and Andy Kramek
One question that seems to pop up again and again in various on-line forums is how to create a grid with mover bars that will allow the users to re-sequence the records in the same way that they can in a list box. This month Andy and Marcia discuss how to implement this.
New Ways: Breaking Up is Not Hard to Do
Tamar Granor, Ph D
In my last article, I looked at techniques for reading and writing text files. Once you've read a text file into memory, or perhaps created a long string in some other way, it's not unusual to need to break it up into lines, or words, or based on some other criteria. Prior to VFP 6, you had to use different approaches depending on the criteria for parsing. With the introduction of the ALINES() function, though, most simple parsing has been reduced to a single function call.
Best Practices: Best Practices Part I
Jim Booth
Programming in Visual FoxPro is not really any different than programming in any other language. Programming languages all have differing syntaxes and the commands and functions vary from one to the other, but the underlying concepts of good programming are universal across all languages. These underlying concepts of "good" programming are referred to as the "Best Practices". In this article series I will be discussing the "Best Practices" in programming with Visual FoxPro. The "Best Practices" are the same for all languages; consequently, the only thing that will make this series about Visual FoxPro will be the example code.
Number 4
Intro: Career Investment 101 - How can I become a better developer?
Rick Schummer
Rick gets asked the question: how can I become a better developer? He explains how he attempts to stay at the top of his game in software development.
VFPX: Putting the OutlookNavBar to use
Rick Schummer
The Microsoft Outlook user interface was all the rage a few years ago. The last two versions of Outlook include the navigation bar with separate panes for you to manage email, calendar, contacts, tasks, etc. Developers scrambled to duplicate this interface in VFP applications. Emerson Stanton Reed first created the Outlook2003Bar. This month Rick is going to show you how to implement the most current OutlookNavBar and demonstrate some new flexibility included in the July 2008 release.
Deep Dive: Practical Uses for XML, Part 2
Doug Hennig
In part 1 of this two-part article, Doug examined the basics of XML: what it is, how it's structured, how to create XML, and how to parse it. This article focuses on why XML is useful and shows some practical examples of how he's used XML in various applications.
KitBox: A program is trying to automatically send e-mail
Marcia Akins and Andy Kramek
Sending E-mail from within an application is often more than a luxury, and there are many ways of doing it in Visual FoxPro. Outlook automation is a common approach and works well, but the version of Collaboration Data Objects that was introduced with Windows 2000 offers a more flexible and extensible approach that allows you to generate E-mail without needing a specific E-mail client installed, or even a work-around for the security patch introduced in Office 2000 SP2. In this month's column Andy and Marcia show how to implement CDO in Visual FoxPro.
New Ways: Working with text
Tamar Granor, Ph D
VFP's tools for working with text have improved as the importance of text files has grown. In a world where we need to parse and create HTML, XML, and other text formats, using the best VFP has to offer makes the job a lot easier.
TimeFrame Class - Autoset Past or Future Date Range in Reports
Pradip Acharya
Many financial and forecasting reports require a start date and an end date to be entered in the Report Setup interface. This can be a past or a future time period. A sales summary for the last completed Quarter or a preventive maintenance forecast for the next month are typical examples. It's not easy for the user to figure out the limiting dates in the first place and secondly, users in general are averse to typing in dates in the stipulated format. The TimeFrame class was created to make it easy to autoset a date range with a click. Select any past or future time period from a dropdown list and the two dates are filled in programmatically. The user can then override either date or select the Open Dates option to enter a date range of choice.
Number 3
VFPX: ctl32_StatusBar Easy to Implement
Rick Schummer
The VFPX project is a set of replacement controls designed to improve the user interface experience of your applications. In this issue of Fox Rock X, Rick shows you how simple it is to implement a modern replacement for the Visual FoxPro native status bar.
Deep Dive: Practical Uses for XML, Part 1
Doug Hennig
XML can be a great way to store some types of data or transfer data from one application to another. In the first of a two-part article, Doug discusses what XML is and how to use it.
New Ways: Working with work areas
Tamar Granor, Ph D
Although we have had techniques that let us ignore work area numbers and letters for many versions, some developers still write code that addresses work areas directly. This month, I will look at how to write code without worrying about work area letters or numbers, and how to depend as little as possible on the currently selected work area. The result is better code that is easier to write and maintain.
KitBox: Doing a PROPER job
Marcia Akins and Andy Kramek
Correctly formatting blocks of text is a problem that we all have to deal with from time to time. While VFP has functions for forcing text to either upper or lower case, its handling of mixed case text suffers from a number of shortcomings that make it essentially unusable in all but the simplest of circumstances. This month Andy and Marcia are discussing the issues surrounding the task of formatting text and come up with a class that does a better job of handling mixed case text.
Vista: Displaying form borders in Windows Vista
Uwe Habermann and Venelina Jordanova
If you are running VFP 9 applications in Windows Vista, you will know the problem. Forms with a Border Style setting other than 3 sometimes appear without a form border. In principle this bug shall have been fixed with VFP 9 SP 2. But then why are the forms often displayed incorrectly?
Events: The DevCon Germany 2007 from a visitors perspective
Boudewijn Lutgerink
While visiting the DevCon Germany last year I took the chance to listen to Steven Black's sessions about niche markets and "So fox is 'dead', now what?"
Number 2
New Ways: Use the right loop for the job
Tamar Granor, Ph D
Learning to use the right loop for the situation will make your code faster and more readable. Both of those goals are worth breaking old habits and building new ones. Happy looping!
New Ways: Stroking the Keys
Jim Booth
The mouse is commonly used for many tasks in windows. In real heads down data entry operations it is often more efficient for the users to keep their fingers on the home row. To accomplish this, it is necessary to provide keystroke equivalents for mouse actions like selecting an item from a menu or clicking on a button, even access to functionality that may not be represented by any menu option or button.
Deep Dive: A Generic Import Utility, Part 2
Doug Hennig
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.
KitBox: All a matter of form
Marcia Akins, Andy Kramek
This month Andy and Marcia create a class to handle the creation of word documents from templates using named Bookmarks and Tables to indicate where data should be inserted. The class was originally designed for use with Office 2003, but will work without modification in Office XP and Office 2000. It will also work in Office 2007 but, in that version, creates the new ".docx" file type by default.
VFPX: Property / Method Dialog Replacements
Rick Schummer
In the first issue of Fox Rock X, Rick provided you an overview of VFPX and the Code Plex Web site where VFPX projects are established and maintained. In this issue he is starting a series of deepdives into the various projects of VFPX with the intent of exposing the productivity you can gain using VFPX tools, and enhance your applications using the various VFPX components. First up are two of the tools he uses numerous times a day: the New Property and Method dialog and the Edit Property/Method dialog replacements.
Free ADS issue
Advantage Database Server for Visual FoxPro Developers
Doug Hennig
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 article introduces Advantage and discusses how to access it from VFP applications.
Number 1
VFPX: Open Source Extensions
Rick Schummer
In 2007 I presented a session on VFPX at four Visual FoxPro Conferences in the United States and Europe. During each of the sessions I asked, "How many of you have heard of VFPX?" Approximately 10 to 15 percent of the people sitting in the room raised their hand. Since I believe VFPX is a significant part of the future of Visual FoxPro, this is a disturbing revelation. The goal of this series of articles is to introduce you to the VFPX open source project, and to do some high level overviews of the different tools and components, as well as some deepdives to show how they can be used in your day-to-day development of Visual FoxPro solutions. This article will describe VFPX, provide a short history of this project, show you where on the Internet you will find VFPX, and provide an overview of the Web site...
Deep Dive: A Generic Import Utility, Part 1
Doug Hennig
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...
New Ways: Parsing und Building File and Path Names
Tamar Granor
I started using FoxBase+ nearly 20 years ago. In the evolution from that remarkably able product to Visual FoxPro 9, hundreds, perhaps thousands, of new elements have been added to the FoxPro programming language. Each new version has introduced not only new capabilities, but new ways to do old things.
KitBox: Managing Global Variables
Marcia Akins, Andy Kramek
The use of Public Variables in FoxPro Applications has long been regarded as poor design. However there are many situations in which a variable that can be accessed, or updated, from anywhere in the application is really the only feasible way of handling things. In this article, Andy and Marcia design a data driven "Variable Manager" class that can be either be instantiated directly, or can be attached to an application object, to manage variables that need to be globally available...
Blog: Advantage Database Server V9.0, available soon
Andy Kramek
Sybase Anywhere have been working on a Visual FoxPro compatible version of the Advantage Database Server for some time and, just before Christmas, the long-awaited Version 9.0 was released in Beta. You can download the Beta version (time limited until mid of March, beta license expiring on March 28th).