I had an early start Friday, waking up at 5:30 a.m., partly because I was still on Central time and partly because I was going over in my mind the speeches I was to give at Sunday’s closing session for the FoxPro Lifetime Achievement Award presentations. Unfortunately, today was like sleeping in compared to the next two days.
The first session I attended was Paul Mrozowski’s jQuery for VFP Developers. Although I’ve seen a couple of introductory sessions on jQuery before, I have yet to do anything with it, which I hope to change soon. Paul’s session started by discussing the basics of JavaScript, then quickly moved into the jQuery library. He showed basic jQuery syntax, then discussed more complex uses, and finished the session showing some of the cool add-ons available for jQuery, including date-time controls and grids. This was a very inspiring session and made me wonder why I’ve waited so long to get started with jQuery.
Next I went to Extending VFP using the Web Browser Control, presented by Bo Durban. Although I’ve used the Web Browser ActiveX control in my apps for several years, I’m always looking for new ideas, and definitely got some in this session. Bo showed a subclass of the control he’s created that adds several behaviors, including disabling the shortcut menu so the user can’t do things like View Source. I got several great tips from this session and have already implemented them in my apps.
The last session of the morning was Eric Selje's The Amazing VFP2C32 Library. I wanted to see this session for two reasons: Eric was one of our new speakers and although I’ve had a little exposure to VFP2C32 (it’s used in Carlos Alloatti’s excellent Ctl32 library), I didn’t know much about it. Eric started by showing the complexities of calling some Windows API functions in VFP, and then showed how VFP2C32 makes it very easy because it simplifies the calls to those functions through an easy-to-use VFP wrapper. Because he was a little nervous, Eric stumbled on saying “VFP2C32” a couple of times, so he decided to call it “Fred” for the rest of the session. I liked that idea so much that when I mentioned VFP2C32 in my Themed Controls session (because Themed Controls uses Ctl32, which uses VFP2C32) and also stumbled saying it, I called it “Fred” too. Eric classified the various “Fred” functions by functionality and spent the rest of the session showing how it satisfies various needs in typical VFP applications. Eric’s white paper is an excellent resource for “Fred” because he’s documented the library in great detail. I definitely intend to replace some of my ugly Windows API calls with VFP2C32 functions since VFP2C32 is already included in my apps due to my use of Ctl32. Even cooler is thanks to prompting by Eric, the author of VFP2C32, Christian Ehlscheid, has now released it as a VFPX project.
After lunch, I presented my A Deep Dive into the VFPX ThemedControls session. I was a little nervous about this session: I’d practiced it several times and had it down smooth, but I went over the time limit every time because, typical for me, I tried to jam too much information into the session. Sure enough, I had only five minutes left at the end and still had a couple of the themed controls to cover. Fortunately, because I was prepared for this, I left the ones I consider to be less useful for the end, so I quickly skipped through them. Sorry for anyone who wanted to spend more time on those controls; however, the white paper for the session has lots of details and samples you can play with.
Although I didn’t plan this, it turned out that both of my sessions this year had a common theme: there’s no excuse for creating boring looking VFP apps. Using colorful modern icons, attractive fonts like Segoe UI (the system font for Windows Vista and 7), and various VFPX projects like GDIPlusX and ThemedControls, you can create applications that are as great looking as anything written in .Net or any other environment. As its name suggests, this session focused on Emerson Reed’s ThemedControls project. ThemedControls allows you to create themed forms in your application that allow the user to change color schemes as easily as they do in Microsoft Outlook. The image below uses several ThemedControls, including ThemedOutlookNavBar (the Outlook-like control at the left) and ThemedTitlePageFrame (the container at the right doesn’t look like a pageframe but it is).
I went through the basics of the ThemedControls library: how to download and install it, how to add it to your applications, what to deploy to your users, and so on. I then went through each of the controls, starting from the simple ThemedForm and ThemedContainer to the complex ThemedOutlookNavBar and ThemedExplorerBar, blowing through the less useful (in my opinion) ThemedToolbox and ThemedZoomNavBar, and finishing with a demo of the unfinished Ribbon control. Based on the audience feedback during the session and the evals afterward (I love the new online evals Rick, Frank, and Paul implemented this year!), I thought the session went well.
Because I was chatting with folks after my session, I was late getting to Christof Wollenhaupt’s How the Fox is Different session. However, as usual, Christof blew me away with his incredibly deep knowledge of the internals of both VFP and .Net. (After the session, Bill Anderson said to me, “I’ve been working with FoxPro for 20 years. I know nothing.” and I felt as equally humbled.) Christof’s take-away point was that if you’re working in VFP, do it the VFP way, and if you’re working in .Net, do it the .Net way. He showed fundamental differences between VFP and .Net, not in terms of language and syntax, which are relatively easy to learn, but in philosophy, which takes much longer to understand. For example, VFP is object based (we do things with instances of classes) while .Net is class based (classes have a much bigger role than instances in .Net). In VFP, we’re used to using a framework and global objects such as an application object; in .Net, the “framework” is built in and there are no global objects in correctly written applications. This is one of these sessions where I’m going to have to read the white paper several times and think about what Christof has said before it truly sinks in.
The last session of the day was dedicated to “bonus” sessions. I went to the “Show Us Your Apps, Part 1” session and was amazed as everyone else at the cool things people have done using VFP. Among the highlights were Jim Nelson showing his relatively new Code References replacement VFPX project, Cesar Chalom showing his FoxyPreviewer replacement for the VFP report preview toolbar, and Bernard Bout showing some work he’s done recently integrating Silverlight into VFP apps.
The plan was to have a dinner party out on the veranda of the conference center, but some unusual Phoenix weather—a sandstorm with high winds—nixed that at literally the last minute. Fortunately, the SanTan/Elegante staff quickly pulled together and moved everything inside the ballroom at record speed, so the party only started a few minutes late. The food, as it was at other meals, was fabulous, including two kinds of lasagna and an excellent caprese salad.
More bonus sessions followed into the evening. I held a Stonefield Query Developer meeting and went over some of the new features in our 4.0 version, including the brand new interface for Stonefield Query Studio (using many of the controls I covered in my ThemedControls and Cool Controls sessions), application views, new output types including Microsoft Excel PivotTable, and so on. I then showed a couple of new features we’re planning for version 4.1, including drilldown charts, dashboards, and % change between columns in a cross-tab. These got a very enthusiastic response!
The session didn’t wind up until nearly 10:00 p.m., so I was pretty tired by now. I hung out by the pool (the replacement for the “grotto” of the Arizona Golf Resort that became the popular hang-out spot the last couple of years) for a while, but had to call it a night at about 11:30 because I had an 8:30 session.
Doug...
ReplyDeleteJust a couple of thoughts as I read your blog. First of all, keep it up, I am looking forward to your recap of the remaining days. However, the main thought was how good it is to read the POST-conference blogs by everyone because it reminds me of what a dummy I was not to make the time to get away for the conference. I won't make that mistake next year.
Bestest,
...Dave