There are 6 conference tracks at Southwest Fox. "Level" shows the expected VFP level for attendees for a session.
Click a track's icon to jump to the sessions for that track.
|
Extending VFP: The sessions in this track cover technologies that extend VFP's capabilities (including COM, ReportListeners, etc.)
|
|
Integrating VFP: This track looks at using VFP together with other products, including back-end servers, Automation servers, and .NET.
|
|
Pre-Conference: These half-day sessions are offered on Thursday, October 15, and are available for an additional cost; see the Register page for details.
|
|
Solidifying VFP Development: Sessions in this track cover either VFP fundamentals, aimed at those newer to VFP (whether moving up from FP2.x or coming to VFP from other languages), or VFP best practices, aimed at helping all VFP developers improve.
|
|
Taking Advantage of VFPX: The sessions in this track showcase the projects in VFPX, providing enough information to put those projects to work for you.
|
|
Technology for VFP Developers: This track looks at tools and technologies to make life as a developer easier or more productive, including such things as virtual machines and source control.
|
Extending VFP
We all know that the only place to keep data is a database. Surprisingly, 150% of our customers firmly believe that data has to be stored in Excel sheets. As expected your customer rejected your first and quick attempt to export to Excel files using COPY TO. Now you're suffering from automation hell trying to keep execution time of a simple export down to less than an hour. There's no reason to!
Ever since Excel XP (Excel 2000 with downloadable plugins) Excel supports XML files in XMLSS (XML Spreadsheet) format. That's almost a decade now! Even your most cost sensitive customer might have now replaced their Office 95 and Office 97 installations, meaning there's no need to chastise yourself with Excel automation.
We cover how you can create this simple text based format, which features are available and which aren't, and how you can let your client do most of the work of creating Excel sheets. If after attending this session you still want to write Excel automation code, I'll invite you to a free beer at the next German DevCon *.
* Personal presence at German DevCon required. You will learn:
- What features are available in XMLSS and which are lacking
- How to create XMLSS spreadsheets
- How to manage templates
Prerequisite: Basic Visual FoxPro programming skills
VFP dynamic-link libraries (FLLs) provide one of the best ways to extend VFP and increase performance for VFP applications. In this session Craig shows attendees how quick and easy it is to create FLLs before taking attendees on a tour of many real world FLL examples. Attendees don't have to have a background in C/C++ to benefit from this session, just a desire to make the most out of VFP and harness the power of the built-in VFP API. If you're ready to take VFP to the next level, you won't want to miss the session. You will learn:
- What the VFP API is and how it's accessed from an FLL
- What an FLL is and how to create one in Visual Studio
- Considerations for deploying and using FLLs
FoxCharts creates good looking and modern charts in pure VFP, using NO ActiveX components. It provides for the creation of a number of horizontal and vertical charts as well as pie and donut charts. It takes full advantage of colors, using solid, gradient and hatch brushes, transparencies, 3D effects, and animations. There are customizable tool tips and full mouse behavior customization.
It is easy to set up and easy to customize. The code is Open Source, benefiting from all the GdiPlusX drawing capabilities, allowing developers to modify the charts as they see fit. It is easy to save to disk or print, and charts can be saved as EMF, resulting in perfect charts when printed, in VFP reports, or exported to PDFs.
We take a full tour of FoxCharts, starting with the basics, building a few simple charts, then creating more complex charts with some bells and whistles, and finally demonstrating a helper class which can be used both by the developer to rapidly create great looking charts and also within an application to allow users to modify their charts themselves. You will learn:
- Basics of FoxCharts
- How to create and manipulate a simple chart
- How to create complex charts
- How to print charts, and print with quality, using EMF
- How to allow users to customize their own charts using helper classes provided
Prerequisite: FoxPro basics: basic ability to work with forms and classes.
Watch a video
VFP includes a number of built-in functions that make it easy to manipulate text and search data in tables. For most purposes, these native functions work great. One place where they don't is full text searches - for example, searching memo fields. As the amount of data increases the search time becomes unacceptable.
Fortunately, there is an open source Java project called Lucene which can do fast full text search. We actually use a .NET port of this project from within VFP to take advantage of its searching capabilities.
If you need to add full text search to your VFP app (or want to speed it up), or be able to search common file formats such as PDF, DOC, XLS, and PPT, this is the session for you. You will learn:
- How to use Lucene.NET from within VFP
- How to index and search memo files for text
- How to search common document files such as PDF, DOC, XLS from within VFP
Visual FoxPro has strong support for working with HTML. Reports, menus and forms can all be output to HTML. VFP has long had wizards for generating HTML. There are plenty of HTML goodies in the VFP foundation classes. VFP's textmerge and string manipulation features also make it very easy to work with HTML in VFP. In this session we'll focus on VFP's built-in features for generating HTML from various sources, when, why and how you might write your own code for generating HTML and taking advantage of VFP's language features for parsing HTML. Specifically we look at all of the HTML features that come "in the box" as well as Text Merge, FileToStr(), StrToFile(), STREXTRACT(), ALINES() and a number of other commands and functions that are useful in generating HTML. You will learn:
- How to use VFP's native HTML generation features
- How to "roll your own" HTML generators and when it's appropriate
- How to parse HTML using VFP
VFP is so powerful as a front-end development tool that it's extremely rare to find user interface items that VFP can't handle. Tools such as FoxCharts and the themed controls on VFPx are just a few of many testaments to VFP developers ability to create compelling interfaces. That being said, there are a number of interface items that can be created more easily with HTML and the Internet is literally loaded with HTML examples that are ready for you to "borrow" and VFP is perfectly capable of displaying those items. There are many creative ways that HTML can be used in desktop applications that are often overlooked. You will learn:
- Places where you can easily make use of HTML to create interfaces that require considerably more work when using native VFP controls
- How to borrow HTML components to create compelling interfaces in VFP
- How to use HTML for mail merge operations in order to minimize automation code and enable WYSWIG editing from within your applications
Interactive and data driven websites are replacing desktop applications in virtually all areas of technology. While there is still a market for desktop applications, being able to deliver dynamic web applications and websites is a critical skill to have as a developer in 2009. In this session we cover all the fundamental techniques needed to create fully interactive database driven websites and web applications from Foxpro. We begin with the basics of what's involved in programming for the web from a VFP developer's perspective. Along the way each technique is explained and demonstrated as we build a fully functional, simple data driven web application in Foxpro. We finish the session by reviewing how to deploy and manage updates to your web applications. You will learn:
- How web applications work
- What the differences are between creating a desktop application and a web application
- How to work with HTML to create web pages
- How to create dynamic web pages from VFP
- How to implement authentication, sessions, forms, and basic data handling in a VFP based web application
- How to handle deployment and updating of your web applications
Prerequisite: Some exposure to HTML is helpful, but not required.
In addition to lots of bug fixes, VFP 9 SP2 offered up some major enhancements to the Visual FoxPro Report Writer. This session (the first of a 2-part series) explores the new Dynamics, Advanced, and Rotation features. It also takes you behind the scenes and explains how these features are implemented. If you want to write professional reports with lots of pizzazz, this session is a must-see. You will learn:
- How to correctly install SP2 and obtain the hotfixes
- How to use the new Dynamics feature (e.g. negative numbers in red)
- How to use the new Advanced features (e.g. HTML-related properties)
- How to use the new Rotation feature
- How the new features are implemented behind the scenes
Prerequisite: Familiar with Report Listeners
Part I of this 2-part series shows you how to use the new reporting features introduced in VFP 9 SP2. This session steps it up several notches by showing you how to add your own features. Not only will you learn how to implement those features on your reports, but you'll also learn how to make the features available in the Report Builder's UI. In addition, you'll see a "best practices" methodology that makes it easy for developers to share their enhancements with one another. You don't want to miss this session. Come be a part of history in the making! You will learn:
- How to dynamically shrink a font
- How to create text and graphic watermarks
- How to modify the Report UI to include your custom features
- How to data-drive all your custom features
- How to share new features with other developers
Prerequisite: Familiar with Report Listeners and prior attendance of "Making the Most of VFP 9 SP2 Reports (Part I)"
Are you still writing FoxPro DOS applications? I do. Obviously requirements for applications have changed in the past more than 15 years since the last version of FPD was released. These days our DOS application communicates with Web services, places online orders, generates PDF files and processes a number of loyalty cards.
It might be unpleasant to realize, yet the truth is that a number of things are easier to do in .NET. Nowadays at least one version of the .NET framework - mostly 2.0 - is available on virtually every computer eliminating any additional runtime requirements when using .NET components.
.NET isn't simply a different way of doing something. With its growing acceptance it turned into a necessity to learn .NET. Libraries and samples for new hardware almost exclusively come as .NET assemblies, whether that's a barcode scanner, a card reader or a new kind of display.
This session is all about how you can use .NET as a Visual FoxPro developer to move your existing FoxPro application forward no matter how old it is. Everything covered in this session can be done with the free tools available from Microsoft and other sites. We look into generating .NET code dynamically, how to maintain the easy setup of your VFP application, how to use inter-process communication between .NET and VFP, how to create multiple threads for your VFP application very easily, how to exchange data between .NET and VFP code, and much more.
This session does not cover integrating Windows Forms and Windows Presentation Foundation. You will learn:
- How to make use of .NET in Visual FoxPro applications
- How to use .NET without needing to become an expert in .NET
- How to avoid rewriting your VFP application without staying behind on technology
- How to exchange information easily between VFP and .NET code
Prerequisite: Experience in writing actual VFP applications and basic knowledge of Windows API development in VFP
For many years Visual FoxPro developers have found backend databases to be a compelling alternative to the DBF data store. There are many good reasons to move to a backend database. The business model of distributed locations and facilities is not uncommon. Because of the way Visual FoxPro caches tables and indexes, DBF data does not scale well over the WAN, pushing people to a backend data store. Another business concern is the security of the DBF files and easy access to anyone with network/workstation access to the folder where they are stored. Businesses cannot afford to have their competitive advantage walk out the door on a thumb drive. Then there is the ever unpopular technical limitation of the two gigabyte table size limit. There are lots of good reasons you or your customer might want to migrate to a server-based backend database.
Visual FoxPro is very flexible in working with backend data. In fact, even though Visual FoxPro has a long history deeply seeded with the DBF standard, the development environment and the language is really data store agnostic. In this session, you'll see how you can leverage MySQL (or for that matter, any backend data) to have data sit on a server (Web, file, or data), and have a Web application and a VFP desktop application both access the same database. The demonstrations will be performed on a live application developed as a prototype for two production applications created for actual customers that fit this model. The session is filled with real world experience and the wisdom shared should give developers a huge head start if they are just getting started with remote data, and some things to consider even if you have experience working with backend databases. You will learn:
- Fundamentals of working with MySQL and other backend databases
- Pros and cons to different access techniques to remote data (remote views, cursoradapters, SQL passthrough)
- Performance vs. ease of use vs. flexibility considerations approaching backend data
- Simple model for architecting a distributed application
- Lessons learned in setting up a distributed application
- Challenges to consider before you decide to make the jump to a backend database
Prerequisite: Desire to learn more about MySQL and remote data with VFP.
Virtual Earth (VE) is Microsoft's state-of-the-art mapping services platform. This session explains what VE is, what VE can do, and how to use VE to embed feature-rich mapping functionality into Visual FoxPro applications. You will not only become familiar with the ins and outs of VE, but also learn how to implement VE in a Visual FoxPro form from start to finish using the VirtualEarth.vcx. A number of more advanced real-world examples will also be shown and explained. In short, this session will provide you with the tools and information you need to begin using Virtual Earth with Visual FoxPro. You will learn:
- What Virtual Earth is
- Details about the Virtual Earth object model
- How to use virtualearth.vcx to implement Virtual Earth functionality in VFP applications
- How json.vcx is used behind the scenes to enable seamless interaction between VFP and JavaScript
Integrating VFP
VFP dynamic-link libraries (FLLs) provide one of the best ways to extend VFP and increase performance for VFP applications. In this session Craig shows attendees how quick and easy it is to create FLLs before taking attendees on a tour of many real world FLL examples. Attendees don't have to have a background in C/C++ to benefit from this session, just a desire to make the most out of VFP and harness the power of the built-in VFP API. If you're ready to take VFP to the next level, you won't want to miss the session. You will learn:
- What the VFP API is and how it's accessed from an FLL
- What an FLL is and how to create one in Visual Studio
- Considerations for deploying and using FLLs
Visual FoxPro has strong support for working with HTML. Reports, menus and forms can all be output to HTML. VFP has long had wizards for generating HTML. There are plenty of HTML goodies in the VFP foundation classes. VFP's textmerge and string manipulation features also make it very easy to work with HTML in VFP. In this session we'll focus on VFP's built-in features for generating HTML from various sources, when, why and how you might write your own code for generating HTML and taking advantage of VFP's language features for parsing HTML. Specifically we look at all of the HTML features that come "in the box" as well as Text Merge, FileToStr(), StrToFile(), STREXTRACT(), ALINES() and a number of other commands and functions that are useful in generating HTML. You will learn:
- How to use VFP's native HTML generation features
- How to "roll your own" HTML generators and when it's appropriate
- How to parse HTML using VFP
VFP is so powerful as a front-end development tool that it's extremely rare to find user interface items that VFP can't handle. Tools such as FoxCharts and the themed controls on VFPx are just a few of many testaments to VFP developers ability to create compelling interfaces. That being said, there are a number of interface items that can be created more easily with HTML and the Internet is literally loaded with HTML examples that are ready for you to "borrow" and VFP is perfectly capable of displaying those items. There are many creative ways that HTML can be used in desktop applications that are often overlooked. You will learn:
- Places where you can easily make use of HTML to create interfaces that require considerably more work when using native VFP controls
- How to borrow HTML components to create compelling interfaces in VFP
- How to use HTML for mail merge operations in order to minimize automation code and enable WYSWIG editing from within your applications
This session is focused on sharing tools and strategies that can be used to make it easier for the VFP developer to work with SQL data. I use Microsoft SQL Server 2005 during the session although many concepts will apply to other SQL database engines. You will learn:
- How to get Intellisense within SQL Management Studio
- How to configure SQL log shipping for a high-availability backup/recovery strategy
- Strategies for data synchronization between multiple SQL environments
- How to use SQL database constraints in your application to provide basic data validation
- How to incorporate semaphore locking in a purely SQL environment
- Strategies for integer and character key generation in SQL
Prerequisite: Familiarity with SQL Server and/or T-SQL programming
SQL is the lingua franca of data. Introduced into FoxPro way back in 2.0, VFP developers have been using it in applications for years. With the growing popularity of using Client Server back ends, it is necessary to know the differences between the various favors of SQL you will encounter.
The session concentrates on VFP, MySQL, and Microsoft SQL Server flavors of SQL. You will learn:
- The differences that exist between the various flavors of SQL
- Strategies for creating applications that can run with many different back ends without modification
Visual FoxPro has a powerful ability to communicate with Microsoft Office applications through Automation. In essence, Visual FoxPro "drives" these other applications. In this session, you'll learn how to automate Word, Excel and Outlook by seeing some practical real-world examples going past the fundamentals of Office Automation, thus, expanding the ability of your VFP application. It can be intimidating starting out with Office Automation given the extensive object model Microsoft provides for each of the Office components. But honestly, it is not hard to wow your customers once you get the hang of it. You can have your apps simply find key words within any number of Word documents, report which Word documents have the tags, and if necessary edit a document and save changes. Next, you schedule a staff meeting though Outlook about the Word document changes and notify staff about the meeting via email with attached changes. Create Excel or Word documents already filled with the information from your application, email the document to business associates with one click of a button. Are pivot tables in Excel a challenge? Not really when you know how it is done. Send the numbers to Excel and have Excel create a pivot chart for you. So many possibilities, so little time to code. You go above and beyond your customers' expectations by sharing your application's data with Microsoft Office applications. Generate professional Word documents, Excel spreadsheets, and interface with Outlook email, contact lists and calendars. If you want to expand the power of your applications, this session is a must-see. You will learn:
- How to work directly with Word, Excel, and Outlook Application objects
- How to create useful documents and spreadsheets
- How to add pizzazz & sustenance to documents and spreadsheets
- How to make it easier for users to analyze their application information and reduce mundane tasks
- How to send emails so users can save time cutting and pasting
- How to simplify working and integrating Outlook contacts and use the calendars for scheduling
Prerequisite: Basic knowledge of Visual FoxPro. Also helpful, but not required, is a basic knowledge of Microsoft Word, Excel & Outlook.
Are you still writing FoxPro DOS applications? I do. Obviously requirements for applications have changed in the past more than 15 years since the last version of FPD was released. These days our DOS application communicates with Web services, places online orders, generates PDF files and processes a number of loyalty cards.
It might be unpleasant to realize, yet the truth is that a number of things are easier to do in .NET. Nowadays at least one version of the .NET framework - mostly 2.0 - is available on virtually every computer eliminating any additional runtime requirements when using .NET components.
.NET isn't simply a different way of doing something. With its growing acceptance it turned into a necessity to learn .NET. Libraries and samples for new hardware almost exclusively come as .NET assemblies, whether that's a barcode scanner, a card reader or a new kind of display.
This session is all about how you can use .NET as a Visual FoxPro developer to move your existing FoxPro application forward no matter how old it is. Everything covered in this session can be done with the free tools available from Microsoft and other sites. We look into generating .NET code dynamically, how to maintain the easy setup of your VFP application, how to use inter-process communication between .NET and VFP, how to create multiple threads for your VFP application very easily, how to exchange data between .NET and VFP code, and much more.
This session does not cover integrating Windows Forms and Windows Presentation Foundation. You will learn:
- How to make use of .NET in Visual FoxPro applications
- How to use .NET without needing to become an expert in .NET
- How to avoid rewriting your VFP application without staying behind on technology
- How to exchange information easily between VFP and .NET code
Prerequisite: Experience in writing actual VFP applications and basic knowledge of Windows API development in VFP
Virtual Earth (VE) is Microsoft's state-of-the-art mapping services platform. This session explains what VE is, what VE can do, and how to use VE to embed feature-rich mapping functionality into Visual FoxPro applications. You will not only become familiar with the ins and outs of VE, but also learn how to implement VE in a Visual FoxPro form from start to finish using the VirtualEarth.vcx. A number of more advanced real-world examples will also be shown and explained. In short, this session will provide you with the tools and information you need to begin using Virtual Earth with Visual FoxPro. You will learn:
- What Virtual Earth is
- Details about the Virtual Earth object model
- How to use virtualearth.vcx to implement Virtual Earth functionality in VFP applications
- How json.vcx is used behind the scenes to enable seamless interaction between VFP and JavaScript
Pre-Conference
The majority of FoxPro work today is working on existing applications. These applications are not always designed the way we would like, even if we were the original authors! This session demonstrates some techniques learned from years of staring into the void of indecipherable legacy FoxPro code and remaining sane.
We rely heavily on guidance from the book "Dealing Effectively With Legacy Code" by Michael Feathers. Feathers presents this algorithm for modifying legacy code:
- Identify change points
- Find an inflection point
- Cover the inflection point
- Break external dependencies
- Break internal dependencies
- Write tests
- Make changes
- Refactor the covered code
You will learn:
- Strategies for improving code quality and readability while continuing to provide value to customers
- Why "The Big Re-Write" never happens and shouldn't
- Techniques for breaking dependencies external and internal
- The role of tests during development as opposed to as a QA tool
- Common refactorings
- Ways to find a balance between GSD (getting stuff done) and coping with obvious code quality problems
Prerequisite: Knowledge of FoxPro, a sense of humor, and a drive to improve
Incorporating source control into our development environment has been one of the most enlightening experiences I've had in years. In this session, I cover the basics of why you need to be using source control, even in single developer shops. I use Vault version 4.1, which supports either a Visual Source Safe working model or a Subversion CVS model. I cover the basics of the Vault client interface and show how we've built a VFP object to drive the Vault command-line interface. For current users of Visual Source Safe interested in moving to Vault for the SQL backend, I cover the use of the built-in VSS Import Tool. We also talk about methods we've used for integrating with VFP Projects as well as running in file mode. You will learn:
- Why there is no valid reason not to be using some sort of version control system
- Some of the high-points of Vault: sharing files, labels, history, blame, etc
- The benefits of the SQL backend for backups/replication and a brief description of the built-in folder security provisions
- How to use the VSS Import tool to convert from Visual Source Safe with no loss of functionality or the interface you are used to
- How to drive the Command-line interface to automate routine tasks via a demonstration of our Vault wrapper class
- How to use integrate Vault with VFP projects and easily share Projects among multiple developers via Project Hooks
Prerequisite: Familiarity with a version control system is a bonus but the session should benefit everyone.
Watch a video
Interactive and data driven websites are replacing desktop applications in virtually all areas of technology. While there is still a market for desktop applications, being able to deliver dynamic web applications and websites is a critical skill to have as a developer in 2009. In this session we cover all the fundamental techniques needed to create fully interactive database driven websites and web applications from Foxpro. We begin with the basics of what's involved in programming for the web from a VFP developer's perspective. Along the way each technique is explained and demonstrated as we build a fully functional, simple data driven web application in Foxpro. We finish the session by reviewing how to deploy and manage updates to your web applications. You will learn:
- How web applications work
- What the differences are between creating a desktop application and a web application
- How to work with HTML to create web pages
- How to create dynamic web pages from VFP
- How to implement authentication, sessions, forms, and basic data handling in a VFP based web application
- How to handle deployment and updating of your web applications
Prerequisite: Some exposure to HTML is helpful, but not required.
Version control is a must for any application development platform yet many development shops still do not use a version control system. There are all sorts of excuses such as time, money or lack of team support. Once you adopt a version control system, your team will wonder how you ever lived without one. In this session, we take an in-depth, action packed look at using Subversion and Tortoise as a version control repository for FoxPro applications. Most FoxPro developers are cost conscious so how much better can you get than a FREE version control system. Subversion and Tortoise are both free tools that despite the price, work great. You will learn:
- How to install and administer a Subversion server
- How to install Tortoise as a client for Subversion
- How to create a repository using Tortoise and Subversion
- How to perform daily work using Subversion as your version control repository
- How to troubleshoot common problems with Subversion
- Ways to deal with Visual FoxPro's binary files in the version control system
Solidifying VFP Development
Once developers understand the fundamentals of Object Oriented Development, they frequently create deep inheritance chains and confusing "god" objects that try to do too much. We examine some principles that have been developed to guide the creation of maintainable and flexible Object Oriented Systems. We then look at examples of each principle applied to Visual FoxPro code. You will learn:
- Separation of Concerns
- High Cohesion and Low Coupling
- Dependency Inversion Principle
- Composition Over Inheritance
- Single Responsibility Principle
- The Law of Demeter
Prerequisite: Understanding of the fundamentals of OOP in VFP
The majority of FoxPro work today is working on existing applications. These applications are not always designed the way we would like, even if we were the original authors! This session demonstrates some techniques learned from years of staring into the void of indecipherable legacy FoxPro code and remaining sane.
We rely heavily on guidance from the book "Dealing Effectively With Legacy Code" by Michael Feathers. Feathers presents this algorithm for modifying legacy code:
- Identify change points
- Find an inflection point
- Cover the inflection point
- Break external dependencies
- Break internal dependencies
- Write tests
- Make changes
- Refactor the covered code
You will learn:
- Strategies for improving code quality and readability while continuing to provide value to customers
- Why "The Big Re-Write" never happens and shouldn't
- Techniques for breaking dependencies external and internal
- The role of tests during development as opposed to as a QA tool
- Common refactorings
- Ways to find a balance between GSD (getting stuff done) and coping with obvious code quality problems
Prerequisite: Knowledge of FoxPro, a sense of humor, and a drive to improve
There have been sessions at past conferences that discuss using Metadata for applications development. Most of these sessions focus more on using the metadata in building the application foundation. This session focuses on using metadata or template data as an engine for business processes. In my day, I have seen a lot of code like:
DO CASE
CASE customer = "CustomerABC"
DO MyApplicationThisWay
CASE customer = 'CustomerDEF"
DO MyApplicationThisOtherWay
…
ENDCASE
While this type of coding does help to insure job security, it can be very complex and extremely difficult to maintain. The biggest problem is that this code requires the developer maintain the process which can be a big problem when there are many other application components to implement. You will learn:
- How to recognize when an application may benefit from data driven techniques
- How to build a template engine to fit the requirements of the application
- How to use the engine at runtime to create predictable results with flexible inputs
- How to build a UI for the templates in order to offload customization to end users
The Visual FoxPro grid object is a powerful tool for displaying and editing data. In this session, Jody demonstrates a methodology making the development cycle quicker and easier. It also adds greater flexibility to your application. Dive in with demonstrations designed to inspire a better understanding of the grid and the power you can unleash. Build hooks to extend the functionality at runtime without changing the grid control at design-time. Totals at the bottom - it's a snap. Export to Excel - no problem. If you want to add pizzazz to your application, "wow" your users, and save time, this session is a must-see. You will learn:
- How to create data driven grids for easy development
- How to create and use custom controls
- How to create customizable hooks in the When, Valid, Click and RightClick events
- How the Dynamic CurrentControl and other Dynamic properties work and how to program them
- How to total columns at the bottom of the grid
- How to export to Excel with the same look and feel
Prerequisite: Basic knowledge of Visual FoxPro
We all know that the only place to keep data is a database. Surprisingly, 150% of our customers firmly believe that data has to be stored in Excel sheets. As expected your customer rejected your first and quick attempt to export to Excel files using COPY TO. Now you're suffering from automation hell trying to keep execution time of a simple export down to less than an hour. There's no reason to!
Ever since Excel XP (Excel 2000 with downloadable plugins) Excel supports XML files in XMLSS (XML Spreadsheet) format. That's almost a decade now! Even your most cost sensitive customer might have now replaced their Office 95 and Office 97 installations, meaning there's no need to chastise yourself with Excel automation.
We cover how you can create this simple text based format, which features are available and which aren't, and how you can let your client do most of the work of creating Excel sheets. If after attending this session you still want to write Excel automation code, I'll invite you to a free beer at the next German DevCon *.
* Personal presence at German DevCon required. You will learn:
- What features are available in XMLSS and which are lacking
- How to create XMLSS spreadsheets
- How to manage templates
Prerequisite: Basic Visual FoxPro programming skills
For many years, we've heard that business objects are important, but most of the examples are tied too tightly to the user interface to really make the point. In this session, we use a highly graphical example to show how business objects can really improve your applications. We see how a well-designed set of business objects makes changing an application's behavior easier and keeps your application's functionality separate from its user interface. You will learn:
- What a business object is
- Why business objects are a good idea
- How business objects can make your apps more flexible
- Why the usual examples of business objects make it hard to get the point
Prerequisite: Some familiarity with OOP
PEM Editor is a complete tool, in adjunct with the Form and Class Designers, for adding, deleting, and renaming properties and methods, and setting or modifying their values or method code, Access and Assign methods, favorites, and visibility, and exploring parent code and object parentage.
It is a full replacement for the Property Window, a full replacement for "New Property" and "New Method, a full replacement for its ancestor "Edit Property / Method", has its own "Method View" (much like "Document View"), and has special new tools for managing _MemberData.
It has greatly expanded scope and features -- sorting, filtering, custom coloring, full support for property editors with additional build-in editors, provides a number of new listings of looking at code (or values) in parent classes, and allows for a number of Plug-In PRGs for additional customization.
It is non-modal, dockable, and resizable, its settings are persistent, it is highly configurable, and its "feel" is quite intuitive.
We take a complete tour of all of these features and many more.
Beyond that, we take a look under the hood at some of the techniques used and unique problems encountered in its development. You will learn:
- How to use PEM Editor as a replacement for the Property Window
- How to use its "Method View" as a quasi-replacement for Document View
- How to use it to explore class parentage and parent methods and values
- How to clean up (or remove use of) _Memberdata
- How to customize it, including default handling of new methods, _Access and _Assign methods, default values for new properties, etc.
Prerequisite: Some familiarity with Forms Designer and Class Designer
Watch a video
Presenter: Rick Borup
Level: Beginner, Intermediate
|
|
Things don't always work quite the way we expect them to. The quirky behavior of a function or control can be a common cause of those "What the Heck??" moments we all encounter from time to time. We may be tempted to quibble with VFP's behavior in these situations, at least until we learn how it works and why it behaves the way it does. This session explores some of the quirks and quibbles in Visual FoxPro with the goal of reducing the number of "What the Heck" moments in your development work, and demonstrates ways you can boost your productivity by using some quick and easy techniques in VFP that may often be overlooked or forgotten. You will learn:
- Why GetWordCount() and GetWordNum() don't always work as expected
- How NULL values can cause trouble in compound conditions and elsewhere
- How to use TRANSFORM() with precision
- Why a Rose is a rose - or is it?
- What's in a name?
- And lots more!
Prerequisite: A working knowledge of Visual FoxPro, and experience developing and debugging VFP applications.
Let's face it, most of us deal regularly with "legacy" code - code that has been written over many years and probably just as many developers. This code has a tendency to become more and more unmanageable as time goes on. Left unchecked it will slowly crush you under the weight of accumulated technical debt. How can you get this code under control and restore some sanity to your work life? We talk about some ways to regain control over this code and walk through several examples and scenarios. Don't be a slave to your code! You will learn:
- Benefits of refactoring
- Do's and don'ts
- Common refactoring patterns
- Tools you can use to make refactoring easier
Prerequisite: A basic understanding of Object Oriented design.
SQL is the lingua franca of data. Introduced into FoxPro way back in 2.0, VFP developers have been using it in applications for years. With the growing popularity of using Client Server back ends, it is necessary to know the differences between the various favors of SQL you will encounter.
The session concentrates on VFP, MySQL, and Microsoft SQL Server flavors of SQL. You will learn:
- The differences that exist between the various flavors of SQL
- Strategies for creating applications that can run with many different back ends without modification
One of the few complaints developers have about VFP is that it cannot handle true multithreaded processing. Typically developers require this functionality when implementing long running processes in order to keep the user informed visually, and even more importantly, to allow them to cancel the process before it is finished. In this session we review several ways to simulate multithreaded processing, and show how you can incorporate similar functionality in your applications. To demonstrate the code techniques, we review a VFP application that collects information in an explorer style window for all files and folders on a user's hard drive while keeping the user visually informed and allowing them to abort the process at any time. You will learn:
- What is multithreaded processing and when is it typically required in application development
- What are the methods you can use to simulate it in VFP
- How to design for it and implement it in your VFP applications
- How to create a VFP application that runs a long process, shows the progress visually, and allows the user to cancel at any time
The VFP Toolbox is a terrific tool, but many VFP developers have never really used it. In this session, we'll look at why you should use this tool everyday. We will look at built-in capabilities like an easy way to drop controls into grid columns. We'll also see how to customize it for your development environment, including having each control you drop given an appropriate name. Finally, we'll explore some easy extensions that make the Toolbox even more useful, such as making it easy to store web links. You will learn:
- How to set up the Toolbox to work on different projects
- How to make the Toolbox do the boring stuff for you
- How to change the control in a grid column painlessly
- How to add your own types of "tools"
Taking Advantage of VFPX
VFPX, the open source project hosted on CodePlex, has some terrific tools to enhance the Visual FoxPro Interactive Development Environment (IDE). Visual FoxPro has a deep tradition of extensiblity thanks to Microsoft's commitment to an open design. This is evident by the many tools to enhance the development environment so it is easier to create applications. All of the "Xbase" tools written by Microsoft are created using native Visual FoxPro code. Visual FoxPro 9 has been referred to as the version that really blew the doors off for extensiblity. Given this new level of extensibilty it is only natural the activity on VFPX by the volunteer staff has produced some really nice tools to enhance your productivity and make it easier to create solutions for your customer.
This session demonstrates how you can increase your productivity in Visual FoxPro as well as increase the reliability of the applications you are developing by implementing one or more of the tools available from VFPX. The session is filled with tool demonstrations to help you refactor your code, enforce development standards, use builders to simplify working with classes and forms, and replace native Visual FoxPro dialogs with ones that are more flexible and more powerful. Other tools demonstrate more reliable source code interaction with different source code repositories, project manager enhancements, and maybe even a replacement for the project manager. Since projects are always changing on VFPX and new ones come along on a regular basis, this session may even include things that were unknown when this description was written. You will learn:
- What tools are available on VFPX, where to get them, and who is involved in the development
- How to use Code Analyst to sniff out the bad smells in your code
- What the PEM Editor can do and how it can be configured to work the way you prefer
- How the Alternate SCCText progam is better than the one that comes with Visual FoxPro
- Why FoxTabs might be of some use to you
- Builders you might find helpful working with classes and forms
- How SubFox simplifies your life working with Subversion
- Why ProjectHookX is something want to look at to extend the Project Manager
- ...and who knows what is added to VFPX before the conference
Watch a video
FoxCharts creates good looking and modern charts in pure VFP, using NO ActiveX components. It provides for the creation of a number of horizontal and vertical charts as well as pie and donut charts. It takes full advantage of colors, using solid, gradient and hatch brushes, transparencies, 3D effects, and animations. There are customizable tool tips and full mouse behavior customization.
It is easy to set up and easy to customize. The code is Open Source, benefiting from all the GdiPlusX drawing capabilities, allowing developers to modify the charts as they see fit. It is easy to save to disk or print, and charts can be saved as EMF, resulting in perfect charts when printed, in VFP reports, or exported to PDFs.
We take a full tour of FoxCharts, starting with the basics, building a few simple charts, then creating more complex charts with some bells and whistles, and finally demonstrating a helper class which can be used both by the developer to rapidly create great looking charts and also within an application to allow users to modify their charts themselves. You will learn:
- Basics of FoxCharts
- How to create and manipulate a simple chart
- How to create complex charts
- How to print charts, and print with quality, using EMF
- How to allow users to customize their own charts using helper classes provided
Prerequisite: FoxPro basics: basic ability to work with forms and classes.
Watch a video
In addition to lots of bug fixes, VFP 9 SP2 offered up some major enhancements to the Visual FoxPro Report Writer. This session (the first of a 2-part series) explores the new Dynamics, Advanced, and Rotation features. It also takes you behind the scenes and explains how these features are implemented. If you want to write professional reports with lots of pizzazz, this session is a must-see. You will learn:
- How to correctly install SP2 and obtain the hotfixes
- How to use the new Dynamics feature (e.g. negative numbers in red)
- How to use the new Advanced features (e.g. HTML-related properties)
- How to use the new Rotation feature
- How the new features are implemented behind the scenes
Prerequisite: Familiar with Report Listeners
Part I of this 2-part series shows you how to use the new reporting features introduced in VFP 9 SP2. This session steps it up several notches by showing you how to add your own features. Not only will you learn how to implement those features on your reports, but you'll also learn how to make the features available in the Report Builder's UI. In addition, you'll see a "best practices" methodology that makes it easy for developers to share their enhancements with one another. You don't want to miss this session. Come be a part of history in the making! You will learn:
- How to dynamically shrink a font
- How to create text and graphic watermarks
- How to modify the Report UI to include your custom features
- How to data-drive all your custom features
- How to share new features with other developers
Prerequisite: Familiar with Report Listeners and prior attendance of "Making the Most of VFP 9 SP2 Reports (Part I)"
PEM Editor is a complete tool, in adjunct with the Form and Class Designers, for adding, deleting, and renaming properties and methods, and setting or modifying their values or method code, Access and Assign methods, favorites, and visibility, and exploring parent code and object parentage.
It is a full replacement for the Property Window, a full replacement for "New Property" and "New Method, a full replacement for its ancestor "Edit Property / Method", has its own "Method View" (much like "Document View"), and has special new tools for managing _MemberData.
It has greatly expanded scope and features -- sorting, filtering, custom coloring, full support for property editors with additional build-in editors, provides a number of new listings of looking at code (or values) in parent classes, and allows for a number of Plug-In PRGs for additional customization.
It is non-modal, dockable, and resizable, its settings are persistent, it is highly configurable, and its "feel" is quite intuitive.
We take a complete tour of all of these features and many more.
Beyond that, we take a look under the hood at some of the techniques used and unique problems encountered in its development. You will learn:
- How to use PEM Editor as a replacement for the Property Window
- How to use its "Method View" as a quasi-replacement for Document View
- How to use it to explore class parentage and parent methods and values
- How to clean up (or remove use of) _Memberdata
- How to customize it, including default handling of new methods, _Access and _Assign methods, default values for new properties, etc.
Prerequisite: Some familiarity with Forms Designer and Class Designer
Watch a video
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 session looks at some practical uses for GDIPlusX, including creating gradients, resizing images, fully justifying text in reports, creating screen snapshots, adding text to images, reading image information, and many other uses. You will learn:
- The basics of GDIPlusX
- How to create gradient images
- How to fully justify text in reports
- How to create screen snapshots
- How to add text to images
Prerequisite: Understanding OOP in VFP
Technology for VFP Developers
Incorporating source control into our development environment has been one of the most enlightening experiences I've had in years. In this session, I cover the basics of why you need to be using source control, even in single developer shops. I use Vault version 4.1, which supports either a Visual Source Safe working model or a Subversion CVS model. I cover the basics of the Vault client interface and show how we've built a VFP object to drive the Vault command-line interface. For current users of Visual Source Safe interested in moving to Vault for the SQL backend, I cover the use of the built-in VSS Import Tool. We also talk about methods we've used for integrating with VFP Projects as well as running in file mode. You will learn:
- Why there is no valid reason not to be using some sort of version control system
- Some of the high-points of Vault: sharing files, labels, history, blame, etc
- The benefits of the SQL backend for backups/replication and a brief description of the built-in folder security provisions
- How to use the VSS Import tool to convert from Visual Source Safe with no loss of functionality or the interface you are used to
- How to drive the Command-line interface to automate routine tasks via a demonstration of our Vault wrapper class
- How to use integrate Vault with VFP projects and easily share Projects among multiple developers via Project Hooks
Prerequisite: Familiarity with a version control system is a bonus but the session should benefit everyone.
Watch a video
Version control is a must for any application development platform yet many development shops still do not use a version control system. There are all sorts of excuses such as time, money or lack of team support. Once you adopt a version control system, your team will wonder how you ever lived without one. In this session, we take an in-depth, action packed look at using Subversion and Tortoise as a version control repository for FoxPro applications. Most FoxPro developers are cost conscious so how much better can you get than a FREE version control system. Subversion and Tortoise are both free tools that despite the price, work great. You will learn:
- How to install and administer a Subversion server
- How to install Tortoise as a client for Subversion
- How to create a repository using Tortoise and Subversion
- How to perform daily work using Subversion as your version control repository
- How to troubleshoot common problems with Subversion
- Ways to deal with Visual FoxPro's binary files in the version control system
Microsoft Virtual PC is a free utility that lets you create separate virtual machines on your Windows desktop, each of which virtualizes the hardware of a complete physical computer. You can use virtual machines to run different operating systems, such as different versions of Windows. Virtual PC is perfect for testing application installs, presentations, legacy application support, training, and to avoid "polluting" your main system. This session introduces Virtual PC and covers topics including setting it up, installing different operating systems, managing your virtual machines, and using Virtual PC to solve typical problems VFP developers encounter. You will learn:
- How to install Virtual PC
- How to install different operating systems on a virtual machine
- How to manage virtual machines
- Typical uses for virtual machines
Prerequisite: Basic understanding of Windows
Watch a video
Open Source is a phenomenal resource for high quality software that can easily be integrated into your work and make your life much easier. This session shows several tools you can use to make your business and software development life a pleasure.
The session also demonstrates how some of these tools can be set up and work withiin your organization. Tools discussed include, but are not limited to:
Subversion (and TortoiseSVN)
MantisBT
SugarCRM You will learn:
- What is Open Source
- What kind of tools are out there
- Where can you go to find tools
- About certain tools that can assist you
- Basic idea of how to install many of the tools (php based tools)
Presenter: Rick Borup
Level: Beginner, Intermediate
|
|
We all like to think it won't happen to us, but the truth is a disaster can strike anywhere at any time. Whether man-made or natural, there is a wide range of events that can seriously disrupt or even destroy a small business in a very short time. This session, which is geared toward the independent software developer, looks at the threats faced by small businesses and discusses measures you can take to help ensure business continuity while recovering from a disaster. You will learn:
- What types of threats you should recognize and plan for
- How to assess your risk of loss from these threats
- How to protect your physical and intangible assets from disaster
- Strategies for effective on-going backup of critical files
- Ways to test your disaster preparedness plan
|