-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpapers.html
527 lines (520 loc) · 73.5 KB
/
papers.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<!-- #BeginTemplate "../master.dwt" -->
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<!-- #BeginEditable "doctitle" -->
<title>Technical Papers</title>
<!-- #EndEditable -->
<link href="../styles/style2.css" media="screen" rel="stylesheet" title="CSS" type="text/css" />
</head>
<body>
<!-- Begin Container -->
<div id="container">
<!-- Begin Masthead -->
<div id="masthead">
<h1><a href="#">Doug Hennig</a></h1>
<h3>My personal Web site</h3>
</div>
<!-- End Masthead -->
<!-- Begin Navigation -->
<div id="navigation">
<ul>
<li><a href="../default.html">Home</a></li>
<li><a href="../about_me/default.html">About Me</a></li>
<li><a href="../links/default.html">Links</a></li>
<li><a href="default.html">Technical Papers</a></li>
</ul>
</div>
<!-- End Navigation -->
<!-- Begin content_container -->
<div id="content_container">
<!-- Begin Left Column -->
<div id="column_left">
<!-- #BeginEditable "content" -->
<h2>Technical Papers</h2>
<p>These documents are either sessions I presented at various conferences over the years (including Southwest Fox, DevCon, Great Lakes Great Database Workshop, and the German DevCon) or articles I wrote in various magazines (FoxRockX, FoxTalk, and Advisor).<h3>A Deep Dive into the VFPX ThemedControls</h3>
<p>One of the coolest projects in VFPX is ThemedControls by Emerson Santon Reed (the 2009 Southwest Fox Ceil Silver Ambassador). The ThemedControls project consists of eight controls-ThemedButton, ThemedContainer, ThemedExplorerBar, ThemedForm, ThemedOutlookNavBar, ThemedTitlePageFrame, ThemedToolbox, and ThemedZoomNavBar-that allow you to provide the modern interface users expect in today's applications. This document looks at these controls in detail and shows how to use them in your own applications.</p>
<p><a href="Pub/ThemedControls.pdf">White Paper</a> <a href="Pub/ThemedControlsSamples.zip">Samples</a></p>
<h3>A File Open Dialog</h3>
<p>A File Open dialog is a better approach than having a long list of forms appear in the File menu. This article presents a reusable File Open dialog that supports grouping forms into different pages in a pageframe and uses ListView controls for a visually appealing display.</p>
<p><a href="Pub/Nov97.pdf">White Paper</a> <a href="Pub/199711dhensc.zip">Samples</a></p>
<h3>A Generic Import Utility, Part 1</h3>
<p>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.</p>
<p><a href="Pub/200803dhen.pdf">White Paper</a> <a href="Pub/200803dhensc.zip">Samples</a></p>
<h3>A Generic Import Utility, Part 2</h3>
<p>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.</p>
<p><a href="Pub/200805dhen.pdf">White Paper</a> <a href="Pub/200805dhensc.zip">Samples</a></p>
<h3>A More Flexible Report Designer</h3>
<p>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.</p>
<p><a href="Pub/201011dhen.pdf">White Paper</a> <a href="Pub/201011dhensc.zip">Samples</a></p>
<h3>A New Beginning</h3>
<p>The development world is moving to reusable components. As goes the world, so goes Doug's column. We'll start off the new "Best Tools" column with SFThermometer, a handy progress meter class.</p>
<p><a href="Pub/Aug97.pdf">White Paper</a> <a href="Pub/199708dhensc.zip">Samples</a></p>
<h3>A New IDE Add-on: FoxTabs</h3>
<p>FoxTabs provides easy access to all open windows in your VFP IDE. However, not only is it a great tool, it uses some very cool techniques to do its magic, including Windows message binding and event-driven object messaging.</p>
<p><a href="Pub/200603dhen.pdf">White Paper</a> <a href="Pub/200603dhensc.zip">Samples</a></p>
<h3>Access and Assign Methods in VFP</h3>
<p>In my opinion, one of the most useful and powerful additions in Visual FoxPro 6 is access and assign methods. It may seem strange that something as simple as this can be considered powerful, but in this document we'll see some very compelling reasons to use these methods, including the ability to strongly type properties, automatically validate the values of properties, create read-only properties, and support collection classes.</p>
<p><a href="Pub/AccessAssign.pdf">White Paper</a> <a href="Pub/AccessAssignSamples.zip">Samples</a></p>
<h3>Adapt Your Cursors to CursorAdapters</h3>
<p>The CursorAdapter class is one of the most important new features in VFP 8 because it provides an easy-to-use, consistent interface to remote data. In this month's article, Doug examines CursorAdapters and how they work. Next month, we'll take a look at some advanced uses of them.</p>
<p><a href="Pub/200210dhen.pdf">White Paper</a> <a href="Pub/200210dhensc.zip">Samples</a></p>
<h3>Adding IntelliSense to Your Applications</h3>
<p>IntelliSense is easily the best feature ever added to Visual FoxPro. It provides a greater productivity boost to VFP developers than anything added before or since. However, until VFP 9, it was restricted to the development environment. Now, IntelliSense is supported in a runtime environment as well. This document discusses why this is a useful feature for many types of application and shows you how to create a customized IntelliSense environment specific for your application. </p>
<p><a href="Pub/AddingIntelliSensetoApps.pdf">White Paper</a> <a href="Pub/AddingIntelliSensetoAppsSamples.zip">Samples</a></p>
<h3>Advantage Database Server for Visual FoxPro Developer</h3>
<p>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 document introduces Advantage and discusses how to access it from VFP applications.</p>
<p><a href="Pub/ADS.pdf">White Paper</a> <a href="Pub/ADSSamples.zip">Samples</a></p>
<h3>Ahoy! Anchoring Made Easy</h3>
<p>The new event binding feature in VFP 8 makes it easy to have objects resize or move themselves when their container is resized. In this month's article, Doug shows how you can do it by simply setting a couple of properties.</p>
<p><a href="Pub/200306dhen.pdf">White Paper</a> <a href="Pub/200306dhensc.zip">Samples</a></p>
<h3>Application Security</h3>
<p>Most applications need a way to limit which users can run an application and which functions users can perform in the application. This article presents a set of tools for defining and maintaining application security. It also pulls together the reusable tools described in previous issues to provide a simple application framework.</p>
<p><a href="Pub/199804dhen.pdf">White Paper</a> <a href="Pub/199804dhensc.zip">Samples</a></p>
<h3>Base Classes Revisited</h3>
<p>Most VFP developers know you should never use the VFP base classes, but instead create your own set of "base" classes. It's time to blow the dust off the set of base classes Doug has discussed for the past six years and see how they can be revamped in VFP 8.</p>
<p><a href="Pub/200308dhen.pdf">White Paper</a> <a href="Pub/200308dhensc.zip">Samples</a></p>
<h3>Best Practices for Vertical Application Development</h3>
<p>While a vertical market application shares many of the same goals as a custom application, the bar is higher because the audience is both larger in volume and broader in scope, plus you usually have much less direct contact with the customer. This document examines some of the things to consider when designing and implementing a vertical market application.</p>
<p><a href="Pub/BestPracticesforVerticalApplicationDevelopment.PDF">White Paper</a> </p>
<h3>Build Your Own Wizards</h3>
<p>Wizards provide an ideal way of holding your users hands through complex, multi-step tasks. This month's Reusable Tools column presents a set of classes you can use to build your own wizards.</p>
<p><a href="Pub/May98.pdf">White Paper</a> <a href="Pub/199805dhensc.zip">Samples</a></p>
<h3>Building Builders with BuilderD</h3>
<p>BuilderD is a new data-driven builder technology that comes with VFP 6. This month, Doug takes a look at how BuilderD works and how you can create builders with it in record time.</p>
<p><a href="Pub/Mar99.pdf">White Paper</a> <a href="Pub/199903dhensc.zip">Samples</a></p>
<h3>Building Your Own Builders with BuilderB</h3>
<p>Builders make it easy to set properties for objects at design time, which is especially handy for containers which you normally have to drill down into. Ken Levy's BuilderB tool makes creating your own builders almost a trivial job. </p>
<p><a href="Pub/Dec97.pdf">White Paper</a> <a href="Pub/199712dhensc.zip">Samples</a></p>
<h3>Building a Builder Builder</h3>
<p>Creating builders is a snap using enhancements to Ken Levy's BuilderD technology described in this month's article.</p>
<p><a href="Pub/199904dhen.pdf">White Paper</a> <a href="Pub/199904dhensc.zip">Samples</a></p>
<h3>Building and Using VFP Developer Tools</h3>
<p>In addition to being the best darn database management system available, VFP also gives us the ability to highly customize the interactive development environment (IDE). You can modify the menu, install new builders and wizards, implement developer toolbars, change the behavior of the Project Manager, and do lots of other things to make your IDE more productive. Even better is that all of this customization is done in the language we all know and love, so we don't have to have some C++ guru create add-ins for us. Even relatively inexperienced VFP developers can customize their environment to work the way they want. This document will show you how to create simple tools that increase productivity for you and your development team. We'll look at modifying the VFP wizards and builders to provide additional or customized features, and creating your own builders using the BuilderD technology included with VFP 6. </p>
<p><a href="Pub/devtools.pdf">White Paper</a> <a href="Pub/devtoolsSamples.zip">Samples</a></p>
<h3>But It Works For Me!</h3>
<p>Figuring out why a user is getting different results than you are can be a frustrating, time-consuming task. This month, Doug looks at a way of instrumenting your application so you can quickly determine what is being executed and how long it's taking.</p>
<p><a href="Pub/200310dhen.pdf">White Paper</a> <a href="Pub/200310dhensc.zip">Samples</a></p>
<h3>CATCH Me if You Can</h3>
<p>VFP 8 has structured error handling, featuring the new TRY ... CATCH ... FINALLY ... ENDTRY structure. This powerful new feature provides a third layer of error handling and allows you to eliminate a lot of code related to passing and handling error information. This month, Doug discusses structured error handling and shows how it fits in with a complete error handling strategy.</p>
<p><a href="Pub/200301dhen.pdf">White Paper</a> <a href="Pub/200301dhensc.zip">Samples</a></p>
<h3>COM Enhancements in VFP 7</h3>
<p>This is last of a six-part series on language enhancements in VFP 7. This month's article focuses on those enhancements related to COM.</p>
<p><a href="Pub/Jun01.pdf">White Paper</a> <a href="Pub/200106dhensc.zip">Samples</a></p>
<h3>Christmas Stocking Stuffers</h3>
<p>Visual FoxPro has a lot more places to put code than FoxPro 2.x. This month's column examines the advantages and disadvantages of creating classes for library routines. It also looks at a replacement for FoxPro's GO command and shows how to make it more obvious that Visual FoxPro controls are read-only.</p>
<p><a href="Pub/Dec96.pdf">White Paper</a> <a href="Pub/199612dhensc.zip">Samples</a></p>
<h3>Collecting Objects</h3>
<p>Collection classes can help you reduce the complexity of your applications by eliminating multi-column arrays or grouping related objects into one place. They can also help you create an interface to your applications that can be used by the outside world.</p>
<p><a href="Pub/Jul98.pdf">White Paper</a> <a href="Pub/199807dhensc.zip">Samples</a></p>
<h3>ComboBoxes are Looking Up</h3>
<p>Most applications need a way for a user to select a lookup value for certain fields. In this, the first of a two-part article on reusable tools for managing lookups, Doug presents a combobox class for lookup selection and a form for maintaining lookup values.</p>
<p><a href="Pub/Oct98.pdf">White Paper</a> <a href="Pub/199810dhensc.zip">Samples</a></p>
<h3>Compression the Fast (and Cheap!) Way</h3>
<p>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.</p>
<p><a href="Pub/201101dhen.pdf">White Paper</a> <a href="Pub/201101dhensc.zip">Samples</a></p>
<h3>Consuming XML Web Services in VFP 8</h3>
<p>XML Web services are becoming very important for application development, and VFP 8 makes it easier than ever to use them. This month, Doug explores consuming XML Web services in VFP applications, including how to use the new XML Web Service Builder to bind controls to XML Web services results with very little code.</p>
<p><a href="Pub/200307dhen.pdf">White Paper</a> <a href="Pub/200307dhensc.zip">Samples</a></p>
<h3>Cool Controls for Your Applications</h3>
<p>This document examines some controls you can add to your applications to provide a cleaner or fresher user interface. Controls discussed include a splitter, a combobox that drops down to a TreeView control, object-oriented Microsoft Office-like menus, a 100% VFP code date picker control, a control for displaying "balloon tips", and a modern-looking progress bar control.</p>
<p><a href="Pub/CoolControls.pdf">White Paper</a> <a href="Pub/CoolControlsSamples.zip">Samples</a></p>
<h3>Cool Tools by Craig Boyd, Part II</h3>
<p>Doug Hennig continues his examination of cool tools provided to the VFP community by Craig Boyd.</p>
<p><a href="Pub/200605dhen.pdf">White Paper</a> <a href="Pub/200605dhensc.zip">Samples</a></p>
<h3>Cool Tools from Craig Boyd</h3>
<p>Craig Boyd has produced some very cool tools for VFP developers. This month, Doug Hennig examines Craig's encryption library and splitter and progress bar controls.</p>
<p><a href="Pub/200604dhen.pdf">White Paper</a> <a href="Pub/200604dhensc.zip">Samples</a></p>
<h3>Cool Uses for ReportListeners</h3>
<p>You've probably seen the demos showing the new ReportListener in VFP 9: dynamically formatted text, rotated labels, and so forth. But did you know report listeners can be used for a lot more than that? This practical session will show you all kinds of cool uses for report listeners, including hyperlinking text in reports, providing a "live" preview surface that can handle click events, finding and highlighting text, and more. </p>
<p><a href="Pub/CoolUsesforReportListeners.pdf">White Paper</a> <a href="Pub/CoolUsesforReportListenersSamples.zip">Samples</a></p>
<h3>Create Modern Interfaces With VFP 7</h3>
<p>It seems that every new version of Microsoft Office changes user interface standards. Whether you like it or not, your users expect your applications to keep up with this ever-moving target. Fortunately, VFP 7 adds new features that make it easier to create interfaces similar to Office 2000.</p>
<p><a href="Pub/Oct01.pdf">White Paper</a> <a href="Pub/200110dhensc.zip">Samples</a></p>
<h3>Create Your Own Property Editors</h3>
<p>VFP 9 makes it possible to create your own editors for custom properties of classes and forms. This month, Doug Hennig presents a framework for these editors, allowing you to focus on the editor itself rather than the plumbing necessary to hook in the editor.</p>
<p><a href="Pub/200507dhen.pdf">White Paper</a> <a href="Pub/200507dhensc.zip">Samples</a></p>
<h3>Creating ActiveX Controls for VFP Using .Net</h3>
<p>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, especially ones that take advantage of features in Windows Vista and Windows 7. 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 document discusses techniques for creating ActiveX controls from .Net components so we can take advantage of these controls without having to convert our applications to .Net. </p>
<p><a href="Pub/ActiveXControls.pdf">White Paper</a> <a href="Pub/ActiveXControlsSamples.zip">Samples</a></p>
<h3>Creating Explorer Interfaces in Visual FoxPro</h3>
<p>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 session presents a set of classes and techniques that makes short work of developing explorer interfaces for your applications. </p>
<p><a href="Pub/ExplorerInterfaces.pdf">White Paper</a> <a href="Pub/ExplorerInterfacesSamples.zip">Samples</a></p>
<h3>Custom Classes</h3>
<p>This month's column uses great ideas from other applications to create some custom classes you can include in any application.</p>
<p><a href="Pub/Mar97.pdf">White Paper</a> <a href="Pub/199703dhensc.zip">Samples</a></p>
<h3>Custom UI Controls: SFComboTree </h3>
<p>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.</p>
<p><a href="Pub/200909dhen.pdf">White Paper</a> <a href="Pub/200909dhensc.zip">Samples</a></p>
<h3>Custom UI Controls: Splitter </h3>
<p>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.</p>
<p><a href="Pub/200907dhen.pdf">White Paper</a> <a href="Pub/200907dhensc.zip">Samples</a></p>
<h3>DBCX 2: The Quickening</h3>
<p>DBCX is a public domain data dictionary extension utility that allows you to define extended properties for database objects. However, it suffers from a number of shortcomings, the biggest one being performance. DBCX 2 is a complete rewrite of DBCX that adds speed and flexibility to this powerful tool.</p>
<p><a href="Pub/199808dhen.pdf">White Paper</a> <a href="Pub/199808dhensc.zip">Samples</a></p>
<h3>Data Handling Issues, Part I</h3>
<p>The ability to handle multiple sets of data is a frequent requirement in business applications. So is the management of primary key values for tables. In this first of a two-part article, Doug takes on these data handling issues and looks at the best way to deal them.</p>
<p><a href="Pub/OCT96.pdf">White Paper</a> <a href="Pub/199610dhensc.zip">Samples</a></p>
<h3>Data Handling Issues, Part II</h3>
<p>While field and table validation rules protect your tables from invalid data, they also make data entry forms harder to use. In this second of a two-part article, Doug looks at a solution to this problem. He also examines the use of multi-purpose lookup tables, and discusses how to take advantage of new data dictionary features in VFP 5.0.</p>
<p><a href="Pub/NOV96.pdf">White Paper</a> <a href="Pub/199611dhensc.zip">Samples</a></p>
<h3>Data Strategies in VFP: Advanced</h3>
<p>In the "Data Strategies in VFP: Introduction" document, we examined the different mechanisms for accessing non-VFP data (such as SQL Server) in VFP applications: remote views, SQL passthrough, ADO, XML, and the CursorAdapter class added in VFP 8. In this document, we'll look at CursorAdapter in a lot more detail and discuss the concept of reusable data classes. In addition, we'll take a brief look at the new XMLAdapter base class and see how it can help exchange data with other sources, such as ADO.NET. </p>
<p><a href="Pub/DataStrategiesAdvanced.pdf">White Paper</a> <a href="Pub/DataStrategiesSamples.zip">Samples</a></p>
<h3>Data Strategies in VFP: Introduction</h3>
<p>There are a lot of ways you can access non-VFP data (such as SQL Server) in VFP applications: remote views, SQL passthrough, ADO, XML ... This document will examine the pros and cons of different mechanisms and discuss when it's appropriate to use a particular strategy. We'll also look at an exciting new technology in VFP called CursorAdapter that will make accessing remote data much easier than it is in earlier versions. </p>
<p><a href="Pub/DataStrategiesIntro.pdf">White Paper</a> <a href="Pub/DataStrategiesSamples.zip">Samples</a></p>
<h3>Data-Drive Your Applications</h3>
<p>As VFP developers, we're used to storing application data in tables. However, another use for tables is to store information about application behavior. This month's article will look at how data-driving key pieces of your applications can make them more flexible and more maintainable.</p>
<p><a href="Pub/200208dhen.pdf">White Paper</a> <a href="Pub/200208dhensc.zip">Samples</a></p>
<h3>Data-Driving and Scripting Applications</h3>
<p>As VFP developers, we're used to storing application data in tables. However, another use for tables is to store information about application behavior. This session looks at how data-driving key pieces of your applications can make them more flexible and more maintainable. In addition, we'll examine how to make your application scriptable so advanced users can customize its behavior.</p>
<p><a href="Pub/DataDrivingScripting.pdf">White Paper</a> <a href="Pub/DataDrivingScriptingSamples.zip">Samples</a></p>
<h3>Database Events in Visual FoxPro</h3>
<p>Database (DBC) events are an exciting new addition in Visual FoxPro 7.0. Since these events are automatically fired when anything in a database container is accessed (opened, closed, modified, deleted, etc.), they give us the ability to control what happens before and after the access. This document discusses DBC events in detail and explores some of the uses for this new technology, such as implementing table-level security and powerful developer tools. </p>
<p><a href="Pub/DBCEvents.pdf">White Paper</a> <a href="Pub/DBCEventsSamples.zip">Samples</a></p>
<h3>Database, Heal Thyself</h3>
<p>Like regualr FoxPro tables, database containers are subject to corruption. While fortunately this is rare, when it does happen, it can be the start of a very bad day. In this month's article, Doug presents a utility you can use to repair corruption in the PROPERTY memo of DBC records. In addition, this utility can be used to change read-only properties, such as the path for a table or the SQL SELECT statement of a view.</p>
<p><a href="Pub/200311dhen.pdf">White Paper</a> <a href="Pub/200311dhensc.zip">Samples</a></p>
<h3>Developing Modern Interfaces With VFP 7</h3>
<p>VFP 7 introduces some new features that allow us to create applications with up-to-date interfaces (such as that in Office 2000). However, there's a lot more to creating an exciting interface than just turning on "hot tracking". In this document, you'll learn how to create modern-looking menus (complete with Most Recently Used features), toolbars (including command buttons with drop-down menus), dialogs (using new Windows 2000 features), and forms. These techniques will help you freshen the user interface of your applications to give them a longer shelf life.</p>
<p><a href="Pub/ModernUI.pdf">White Paper</a> <a href="Pub/ModernUISamples.zip">Samples</a></p>
<h3>Developing VFP Applications for Windows 7</h3>
<p>Like Windows Vista before it, Windows 7 changes the rules for many aspects of application development, including the user interface, dialogs, deployment, security, and file access. This document looks at things you need to know to create Windows 7-compatible applications with Visual FoxPro.</p>
<p><a href="Pub/Windows7.pdf">White Paper</a> <a href="Pub/PracticalUsesforXMLSamples.zip">Samples</a></p>
<h3>Developing Visual FoxPro Applications for Windows Vista</h3>
<p>Windows Vista changes the rules for many aspects of application development, including the user interface, dialogs, deployment, security, and file access. This document looks at things you need to know to create Vista-compatible applications with Visual FoxPro.</p>
<p><a href="Pub/Vista.pdf">White Paper</a> <a href="Pub/VistaSamples.zip">Samples</a></p>
<h3>Dismembering MemberData</h3>
<p>A couple of common requests from VFP developers are capitalization support for custom properties and methods in the Properties window and IntelliSense and the ability to customize the Properties window. Microsoft listened: VFP 9 gives us both of these, plus the ability to create our own property editors, with a new feature called MemberData.</p>
<p><a href="Pub/200406dhen.pdf">White Paper</a> <a href="Pub/200406dhensc.zip">Samples</a></p>
<h3>Displaying and Editing Child Records</h3>
<p>This month's article presents a grid class to display child records for a parent and a form class to edit the selected child record.</p>
<p><a href="Pub/Sep99.pdf">White Paper</a> <a href="Pub/199909dhensc.zip">Samples</a></p>
<h3>Drilling Down Into Your Data</h3>
<p>Do your users want to drill down into their data to see increasing levels of detail? You might think the TreeView control discussed last month is perfect for this, but it doesn't provide the ability to show columns of information. This month's article describes a technique for drilling down into data using a grid, plus describes how to make your grids act more like a spreadsheet with frozen panes.</p>
<p><a href="Pub/Jul97.pdf">White Paper</a> <a href="Pub/199707dhensc.zip">Samples</a></p>
<h3>Email and File Transfer the Fast (and Cheap!) Way</h3>
<p>In the previous two issues, Doug discussed 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.</p>
<p><a href="Pub/201105dhen.pdf">White Paper</a> <a href="Pub/201105dhensc.zip">Samples</a></p>
<h3>Encryption the Fast (and Cheap!) Way</h3>
<p>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.</p>
<p><a href="Pub/201103dhen.pdf">White Paper</a> <a href="Pub/201103dhensc.zip">Samples</a></p>
<h3>Error Handling Revisited</h3>
<p>While objects have Error methods to provide local error handling, how do you provide common, global error handling services to your application? How do you recover when an error occurs? This month's Reusable Tools looks at a proven strategy for implementing error handling in Visual FoxPro applications, starting from individual controls and working up to a global error object.</p>
<p><a href="Pub/Jan98.pdf">White Paper</a> <a href="Pub/199801dhensc.zip">Samples</a></p>
<h3>Error Handling in VFP 8</h3>
<p>VFP 8 now has structured error handling, featuring the new TRY ... CATCH ... FINALLY ... ENDTRY structure. This powerful new feature provides a third layer of error handling and allows you to eliminate a lot of code related to passing and handling error information. This document examines structured error handling and show how it fits in with a complete error handling strategy. </p>
<p><a href="Pub/ErrorHandlinginVFP8.pdf">White Paper</a> <a href="Pub/ErrorHandlinginVFP8Samples.zip">Samples</a></p>
<h3>Error Handling in Visual FoxPro</h3>
<p>Like most things, error handling is more flexible but a lot more complex in Visual FoxPro than it was in FoxPro 2.x. While objects have Error methods to provide local error handling, how do you provide common, global error handling services to your application? How do you recover when an error occurs? This session looks at a proven strategy for implementing error handling in Visual FoxPro applications, starting from individual controls and working up to a global error object.</p>
<p><a href="Pub/errorh.pdf">White Paper</a> <a href="Pub/errorhSamples.zip">Samples</a></p>
<h3>Extending Visual FoxPro with Visual FoxPro</h3>
<p>One of the coolest things about the Visual FoxPro interactive development environment (IDE) is that it's highly extensible. Even better, you can use VFP code to extend VFP itself. In this document, you'll learn how to extend the VFP IDE to boost your productivity and create simple tools that make your life easier. Topics I'll discuss include: </p>
<ul>
<li>How to create your own property editors. </li>
<li>Creating powerful IntelliSense scripts to boost your productivity. </li>
<li>How the new New Property/Method dialog speeds form and class development. </li>
<li>Automatically updating a LOCAL statement. </li>
<li>An overview of how the My namespace in Sedna (the code name for the next version of VFP) works. </li>
</ul>
<p><a href="Pub/ExtendingVFPwithVFP.pdf">White Paper</a> <a href="Pub/ExtendingVFPwithVFPSamples.zip">Samples</a></p>
<h3>Extending the VFP 9 IDE</h3>
<p>One of the key themes in VFP 9 is extensibility. You can extend the VFP 9 Report Designer through report events and the reporting engine through the new ReportListener base class. You can even extend the IDE by trapping system and shortcut menu hits. This month, Doug Hennig shows you how to customize the IDE in ways you never thought possible.</p>
<p><a href="Pub/200409dhen.pdf">White Paper</a> <a href="Pub/200409dhensc.zip">Samples</a></p>
<h3>Extending the VFP 9 Reporting System, Part I: Design-Time</h3>
<p>Among the new and improved features in the reporting system of VFP 9 is the ability to extend the Report Designer to provide easier-to-use, more powerful, and more flexible report writing to your development team and even your end-users. In this document, you will learn about the new Report Builder application, how it captures and handles events raised by the Report Designer, and how you can create your own handlers to extend the VFP Report Designer in ways you never thought possible.</p>
<p><a href="Pub/VFP9ReportingDesignTime.pdf">White Paper</a> <a href="Pub/VFP9ReportingDesignTimeSamples.zip">Samples</a></p>
<h3>Extending the VFP 9 Reporting System, Part II: Run-Time</h3>
<p>In addition to the design-time extensibility of VFP 9's reporting system discussed in Part I of this white paper, VFP 9 also provides the ability to extend the behavior of the reporting system when reports are run. In this document, you'll learn about VFP 9's report listener concept, how it receives events as a report is run, and how you can create your own listeners to provide different types of output besides the traditional print and preview.</p>
<p><a href="Pub/VFP9ReportingRunTime.pdf">White Paper</a> <a href="Pub/VFP9ReportingRunTimeSamples.zip">Samples</a></p>
<h3>Favorites for IntelliSense</h3>
<p>Favorites for IntelliSense is a new tool that extends IntelliSense, allowing you to specify which members of a class you want displayed in IntelliSense, as well as easily scripting tooltips or lists of values for properties or parameters of methods.</p>
<p><a href="Pub/200508dhen.pdf">White Paper</a> <a href="Pub/200508dhensc.zip">Samples</a></p>
<h3>File Your Collections</h3>
<p>While collections are extremely useful, array-based collections with a lot of members can suffer from poor performance at load and destroy time, and take up tons of memory. A file-based collection, on the other hand, takes no load or destroy time at all, since member objects are created on an "as needed" basis.</p>
<p><a href="Pub/Nov00.pdf">White Paper</a> <a href="Pub/200011dhensc.zip">Samples</a></p>
<h3>Fix Problems Fast with Advanced Error Handling and Instrumentation Techniques</h3>
<p>Your customer calls to report that their application crashes. Where do you start to figure out what's causing the problem? This document looks at techniques for troubleshooting application problems, including advanced error handling to provide complete state information and instrumenting your applications to determine exactly what steps led up to the crash.</p>
<p><a href="Pub/FixProblemsFast.pdf">White Paper</a> <a href="Pub/FixProblemsFast_Samples.zip">Samples</a></p>
<h3>Get the Message?</h3>
<p>This month's article presents a class that can be used to send email from your applications. It combines the two MAPI ActiveX controls that come with VFP into one easy-to-use class.</p>
<p><a href="Pub/Feb00.pdf">White Paper</a> <a href="Pub/200002dhensc.zip">Samples</a></p>
<h3>Going Ape Over the Windows API</h3>
<p>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.</p>
<p><a href="Pub/Jul01.pdf">White Paper</a> <a href="Pub/200107dhensc.zip">Samples</a></p>
<h3>Handling Specific Errors</h3>
<p>Letting a general error handler deal with specific foreseeable errors isn't a good idea, since the handler won't know the environment the errors occurred in nor possible resolutions to the problem. This month's column shows techniques for handling specific foreseeable errors at the appropriate level.</p>
<p><a href="Pub/Feb98.pdf">White Paper</a> <a href="Pub/199802dhensc.zip">Samples</a></p>
<h3>Have Your Cake and Eat it Too</h3>
<p>Visual FoxPro 7.0 has several new functions that can make certain tasks easier, such as executing script code or performing text merges. However, since it's still a long way from release, this month's article presents several routines that emulate these new functions in VFP 6 so you can start using these capabilities today.</p>
<p><a href="Pub/200012dhen.pdf">White Paper</a> <a href="Pub/200012dhensc.zip">Samples</a></p>
<h3>Horizontally Paginated Reports</h3>
<p>Horizontally paginated reports allow you to print more columns for a given row that will fit on a page. The report prints as many "horizontal" pages as needed. This technique has many applications, including cross-tabulation reports. In this article, Doug shows how to create horizontally paginated reports using the FoxPro Report Designer.</p>
<p><a href="Pub/199704dhen.pdf">White Paper</a> <a href="Pub/199704dhensc.zip">Samples</a></p>
<h3>Hyperlink Your Reports</h3>
<p>Last month, Doug Hennig discussed the new ReportListener class in VFP 9 and how it can be used to control report output in ways that previously wasn't possible. This month, he looks at how output generated from reports can have live hyperlinks so some action is performed when they're clicked.</p>
<p><a href="Pub/200503dhen.pdf">White Paper</a> <a href="Pub/200503dhensc.zip">Samples</a></p>
<h3>I Got Rendered Where?</h3>
<p>Doug Hennig continues his discussion of report listeners by presenting a set of classes that output the contents of a report run to a cursor and use that cursor to provide a "live" report preview surface.</p>
<p><a href="Pub/200504dhen.pdf">White Paper</a> <a href="Pub/200504dhensc.zip">Samples</a></p>
<h3>I Got Rendered Where? Part II</h3>
<p>Thanks to the new ReportListener in VFP 9, we have a lot more control over where reports are rendered. Last month, Doug Hennig showed a listener that collaborates with a custom preview window to provide a "live" preview surface. This month, he takes it a step further and adds support for finding and highlighting text.</p>
<p><a href="Pub/200505dhen.pdf">White Paper</a> <a href="Pub/200505dhensc.zip">Samples</a></p>
<h3>Implementing Offline Views</h3>
<p>The introduction of updateable views in Visual FoxPro 3 provided new capabilities for FoxPro applications. A new feature of VFP 5 extends the capabilities of updatable views even further: you can now take any view offline. An offline view is "disconnected" from the source of its data so data entry can continue while the tables the view is based on are unavailable. Sometime later, you can update the source tables by "reconnecting" the view to them. While you could do this type of thing in VFP 3 yourself, it required a lot of coordinating and some slick code. VFP 5 makes it very simple.<br/>
<br/>
This document will look at the mechanics of offline views: how you take a view offline, considerations about working with offline views, updating the source tables, and taking a view back online. We'll also look at some uses of offline views: obvious ones like remote applications which allow querying and data entry on the road or branch offices, but also a less-obvious but equally interesting one, that of permitting data entry to carry on while table maintenance (reindexing, updating structures, packing, backing up, etc.) is being done.</p>
<p><a href="Pub/Offline.pdf">White Paper</a> <a href="Pub/OfflineSamples.zip">Samples</a></p>
<h3>Installing Applications Using Inno Setup</h3>
<p>Although a limited edition of InstallShield Express comes with VFP, many developers are unhappy with Windows Installer-based installation tools: the tools are slow and cumbersome, the resulting SETUP.EXE files are huge and slow, and Windows Installer sometimes has a mind of its own. Introducing Inno Setup, a free, fast, easy-to-use installation tool that generates fast, lightweight setup executables. This document shows you how to quickly implement Inno Setup to create great setups for your applications. </p>
<p><a href="Pub/InnoSetup.pdf">White Paper</a> <a href="Pub/InnoSetupSamples.zip">Samples</a></p>
<h3>Integrating RSS and Visual FoxPro</h3>
<p>RSS (Really Simple Syndication) is becoming a popular way to publish content on Web sites and blogs. However, it can be used for a lot more than that. This document provides an introduction to RSS and explores how VFP can both generate and consume RSS. </p>
<p><a href="Pub/IntegratingRSSandVFP.pdf">White Paper</a> <a href="Pub/IntegratingRSSandVFPSamples.zip">Samples</a></p>
<h3>IntelliSense at Runtime</h3>
<p>VFP 9 provides support for IntelliSense at runtime. This month, Doug Hennig examines why this is useful, discusses how to implement it, and extends Favorites for IntelliSense to support it.</p>
<p><a href="Pub/200511dhen.pdf">White Paper</a> <a href="Pub/200511dhensc.zip">Samples</a></p>
<h3>Introduction to ADO</h3>
<p>Microsoft's latest data access strategy is focused on ActiveX Data Objects (ADO), a COM-based data engine that acts as a front end for OLE DB. OLE DB is bound to replace ODBC as the defacto data connectivity standard and ADO is the interface that most applications will use to access data functionality. ADO provides an object-based approach to data access and through COM allows the ability to pass data as objects between components. A subset of ADO—Remote Data Service (RDS)—also allows access to ADO recordsets over an HTTP connection. This document discusses the technology involved with ADO and provides examples of how you can implement and use ADO in a VFP environment. </p>
<p><a href="Pub/IntroductionToADO.pdf">White Paper</a> <a href="Pub/IntroductionToADOSamples.zip">Samples</a></p>
<h3>Introduction to C# for VFP Developers</h3>
<p>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 document introduces the C# language, comparing it to constructs and syntax in VFP to shorten the learning curve. </p>
<p><a href="Pub/IntroToCSharp.pdf">White Paper</a> </p>
<h3>Introduction to GDIPlusX</h3>
<p>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 provides an <br/>
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. </p>
<p><a href="Pub/IntrotoGDIPlusX.pdf">White Paper</a> <a href="Pub/IntrotoGDIPlusXSamples.zip">Samples</a></p>
<h3>Introduction to N-Tier Development</h3>
<p>As applications get ever more complex, designing application in components becomes very important to the successful completion of projects. This session discusses what n-tier development is, why it's important to modern application development, and shows strategies of how you can break out the tiers using Visual FoxPro.</p>
<p><a href="Pub/ntier.pdf">White Paper</a> <a href="Pub/ntierSamples.zip">Samples</a></p>
<h3>It Just Kicks In</h3>
<p>The best kind of tool is one that automatically does its job without having to set any properties, write any code, or even lift a finger. This column looks at a strategy for implementing these types of tools, and provides a popup calendar for Date fields and a universal find function for your applications.</p>
<p><a href="Pub/Sep97.pdf">White Paper</a> <a href="Pub/199709dhensc.zip">Samples</a></p>
<h3>Keep Y'er Paws Off My Stuff</h3>
<p>Need to prevent unauthorized access to your FoxPro data? Cryptor from Xitech provides an easy way to encrypt files and leave them encrypted on disk, even while you access them as normal tables in your application.</p>
<p><a href="Pub/200404dhen.pdf">White Paper</a> <a href="Pub/200404dhensc.zip">Samples</a></p>
<h3>Kill Objects Dead!</h3>
<p>Dangling object references are among the hardest bugs to track down, and can cause a wide range of problems. This month's article looks at the cause of these problems, presents a couple of tools to help track them down, and discusses techniques for preventing them.</p>
<p><a href="Pub/Oct99.pdf">White Paper</a> <a href="Pub/199910dhensc.zip">Samples</a></p>
<h3>Language Enhancements in VFP 7, Part I</h3>
<p>Want an early peek at what's new in VFP 7? This is the first article in a series discussing the language enhancements Microsoft is implementing and how to take advantage of some of them now.</p>
<p><a href="Pub/Jan01.pdf">White Paper</a> <a href="Pub/200101dhensc.zip">Samples</a></p>
<h3>Language Enhancements in VFP 7, Part II</h3>
<p>This article continues the series on language enhancements in VFP 7, discussing enhancements to existing commands and functions.</p>
<p><a href="Pub/Feb01.pdf">White Paper</a> <a href="Pub/200102dhensc.zip">Samples</a></p>
<h3>Language Enhancements in VFP 7, Part III</h3>
<p>This is the third in a series of articles on language enhancements in VFP 7. This article covers the last of the improvements to existing commands and functions, and starts discussing new commands and functions.</p>
<p><a href="Pub/Mar01.pdf">White Paper</a> <a href="Pub/200303dhensc.zip">Samples</a></p>
<h3>Language Enhancements in VFP 7, Part IV</h3>
<p>This fourth article in a series on language enhancements in VFP 7 article covers six new functions. One of them, EDITSOURCE(), is used in a project text search utility, making it easy to find all occurrences of a string in all files in a project and bring up the found locations in the appropriate editor.</p>
<p><a href="Pub/200104dhen.pdf">White Paper</a> <a href="Pub/200104dhensc.zip">Samples</a></p>
<h3>Language Enhancements in VFP 7, Part V</h3>
<p>This fifth in a series of articles on language enhancements in VFP 7 covers the remaining new general-purpose commands and functions.</p>
<p><a href="Pub/May01.pdf">White Paper</a> <a href="Pub/200105dhensc.zip">Samples</a></p>
<h3>Listening to a Report</h3>
<p>Microsoft has opened the architecture of the reporting engine in VFP 9 by having it communicate with the new ReportListener base class. Subclassing ReportListener allows VFP developers to create their own customized output. This month, Doug Hennig looks at ReportListener and shows an example of how it solves a real-world problem.</p>
<p><a href="Pub/200502dhen.pdf">White Paper</a> <a href="Pub/200502dhensc.zip">Samples</a></p>
<h3>Live Nude Documentation!</h3>
<p>Creating documentation, especially user manuals and help files, is usually the last thing a developer wants to do. HTML Help Builder makes creating HTML Help files actually a fun thing to do!</p>
<p><a href="Pub/Dec99.pdf">White Paper</a> <a href="Pub/199912dhensc.zip">Samples</a></p>
<h3>Long Live PRGs!</h3>
<p>Although classes get most of the attention today, there's still a place for PRGs. This month's article looks at some library routines packaged as PRGs.</p>
<p><a href="Pub/Nov99.pdf">White Paper</a> <a href="Pub/199911dhensc.zip">Samples</a></p>
<h3>Make Your Menus Pop</h3>
<p>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.</p>
<p><a href="Pub/201201dhen.pdf">White Paper</a> <a href="Pub/201201dhensc.zip">Samples</a></p>
<h3>Manage Your Applications</h3>
<p>This month's article presents a simple yet useful tool, and discusses several reusable techniques used in this tool.</p>
<p><a href="Pub/200004dhen.pdf">White Paper</a> <a href="Pub/200004dhensc.zip">Samples</a></p>
<h3>Managing Projects and Class Libraries</h3>
<p>VFP 6 includes several new or enhanced tools for managing projects and class libraries. Projects are now exposed as objects so you can manipulate them in an OOP fashion rather than having to "hack" the PJX file. The new ProjectHook class extends this concept even further by allowing you to create objects that VFP automatically instantiates whenever a project is opened. ProjectHook events are called when files are added to, dropped on, or removed from a project, as well as when files are modified or the project built. The Class Browser has new capabilities that extend its usefulness even further. The Component Gallery is a new tool for organizing and managing objects by project, client, application, or any other grouping you see fit. This session will focus on these tools and provide practical examples of using them to boost your productivity. </p>
<p><a href="Pub/ManagingProjectsandLibraries.pdf">White Paper</a> <a href="Pub/ManagingProjectsandLibrariesSamples.zip">Samples</a></p>
<h3>May I See Your License?</h3>
<p>If you develop commercial applications, you may want to provide multiple levels of your application depending on what your users paid for, and prevent unauthorized users from installing and running the application. This month's article presents a license manager that can help with these tasks.</p>
<p><a href="Pub/Jun00.pdf">White Paper</a> <a href="Pub/200006dhensc.zip">Samples</a></p>
<h3>Microsoft Virtual PC for VFP Developers</h3>
<p>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 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.</p>
<p><a href="Pub/vpc.pdf">White Paper</a> <a href="Pub/ManagingProjectsandLibrariesSamples.zip">Samples</a></p>
<h3>Mine Your Data With DynamiCube</h3>
<p>Providing your users with the ability to analyze their data by breaking it down an unlimited number of ways sounds like a "pie in the sky" goal. However, using the DynamiCube ActiveX control, you can easily add this feature to any VFP application in less than an hour.</p>
<p><a href="Pub/Mar98.pdf">White Paper</a> <a href="Pub/199803dhensc.zip">Samples</a></p>
<h3>Mine for Code in XSource</h3>
<p>Visual FoxPro comes with source code for most of the "Xbase" tools that ship with the product, including the Class Browser, Code References, Toolbox, and Task Pane. Looking at source code written by top VFP gurus often gives insight into new, powerful coding techniques. This document looks at various files in XSource to show you cool ideas you can incorporate and even better, code you can directly use in your applications today.</p>
<p><a href="Pub/MininginXSource.pdf">White Paper</a> <a href="Pub/MininginXSourceSamples.zip">Samples</a></p>
<h3>Mining for Gold in the FFC</h3>
<p>One of the design goals for VFP 6 was to make it easier for programmers new to VFP to get up and running with the tool. The FoxPro Foundation Classes, or FFC, is one of the results of this goal. The FFC, located in the FFC subdirectory of the VFP home directory, is a collection of class libraries that provide a wide range of functions. Don't think that just because previous versions of FoxPro have included some, shall we say, less useful (to be polite) example files that these fall into that category. While some of these do appear to be more demoware than really useful, there are still lots of great classes in here. It's well worth the effort to spend some time looking at these classes, picking through the rocks to find the nuggets. This document will look at some of the FFC classes and see how we might use them or even subclass them to make them even more useful.</p>
<p><a href="Pub/MiningFFC.pdf">White Paper</a> <a href="Pub/MiningFFCSamples.zip">Samples</a></p>
<h3>Modifying VFP's Wizards and Builders</h3>
<p>The builders and wizards that come with VFP often don't do quite what you need them to. This month's article shows how to remedy this.</p>
<p><a href="Pub/199908dhen.pdf">White Paper</a> <a href="Pub/199908dhensc.zip">Samples</a></p>
<h3>More Flexible Reporting With XFRX</h3>
<p>XFRX can make your reporting solutions more flexible since it allows you to output FRX reports to PDF, Microsoft Word, Microsoft Excel, and HTML files. This month, Doug takes a look at how easy it is to incorporate XFRX in your applications.</p>
<p><a href="Pub/200402dhen.pdf">White Paper</a> <a href="Pub/200402dhensc.zip">Samples</a></p>
<h3>Much ADO About Something</h3>
<p>The release of the OLE DB provider for VFP means better performance and scalability for applications that need to access VFP data via ADO. However, there are some interesting issues and limitations of this provider you need to be aware of. </p>
<p><a href="Pub/Sep01.pdf">White Paper</a> <a href="Pub/200109dhensc.zip">Samples</a></p>
<h3>Multi-User and Data Buffering Issues</h3>
<p>In FoxPro 2.x, developers edited records using scatter memvar, editing the memory variables, and gather memvar. The purpose of this indirect editing of fields was to protect the record by buffering it. With Visual FoxPro, data buffering is built in, so fields can be edited directly. This session will discuss how data buffering works and explores strategies for selecting which buffering mechanism to use and how to handle multi-user conflicts.</p>
<p><a href="Pub/Buffer.pdf">White Paper</a> </p>
<h3>New Language Features in Visual FoxPro 7.0</h3>
<p>Every new version of Visual FoxPro introduces changes to the programming language and Visual FoxPro 7.0 is no exception. This document highlights new and changed commands, functions, properties, events, and methods. Due to time constraints, we won't discuss database events, COM enhancements, IntelliSense, or IDE enhancements, all of which introduce some changes to commands and functions. </p>
<p><a href="Pub/NewLanguageVFP7.pdf">White Paper</a> <a href="Pub/NewLanguageVFP7Samples.zip">Samples</a></p>
<h3>New OOP and Language Features in Visual FoxPro 9.0</h3>
<p>VFP 9 has an incredible list of new features: dockable forms, control anchoring, polygon shapes, word wrapping for checkboxes and option buttons, IntelliSense support within WITH/ENDWITH and within memo fields, removal of limits in such places as the number of elements in an array or size of PRG files, new data types ... the list seems endless! This session will focus on new and improved OOP and language features so you can quickly get up to speed on the newest version of VFP.</p>
<p><a href="Pub/NewLanguageVFP9.pdf">White Paper</a> <a href="Pub/NewLanguageVFP9Samples.zip">Samples</a></p>
<h3>Objectify Your Menus</h3>
<p>Object-oriented menus have been one of the most commonly requested enhancements to VFP. This month, Doug presents a set of classes that allow you to implement object-oriented menus right now.</p>
<p><a href="Pub/200108dhen.pdf">White Paper</a> <a href="Pub/200108dhensc.zip">Samples</a></p>
<h3>PEMs For Your Base Classes</h3>
<p>This month's column examines some ideas to put in your subclasses of Visual FoxPro base classes. Some of these ideas are straightforward, but others may be less obvious. We'll look at some custom properties and methods you can add to provide more automatic functionality to your applications.</p>
<p><a href="Pub/Feb97.pdf">White Paper</a> <a href="Pub/199702dhensc.zip">Samples</a></p>
<h3>Persistence without Perspiration</h3>
<p>This month's article presents a set of classes that persist values. A common application of this technique is restoring a form's last size and position when it's opened.</p>
<p><a href="Pub/Jan00.pdf">White Paper</a> <a href="Pub/200001dhensc.zip">Samples</a></p>
<h3>Practical Uses for GDIPlusX</h3>
<p>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 document 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.</p>
<p><a href="Pub/GDIPlusX.pdf">White Paper</a> <a href="Pub/GDIPlusXSamples.zip">Samples</a></p>
<h3>Practical Uses for New Features in Visual FoxPro 8.0</h3>
<p>Going over a list of the new features in VFP 8 doesn't really tell you how and where to use them. This document takes a practical look at new features to create things like picklist grids, page frames with delayed instantiation of contents, labeled option boxes, objects that know how to resize themselves in a form, dynamic data objects, and many more.</p>
<p><a href="Pub/PracticalUsesforVFP8.pdf">White Paper</a> <a href="Pub/PracticalUsesforVFP8Samples.zip">Samples</a></p>
<h3>Practical Uses for XML</h3>
<p>XML can be a great way to store some types of data or transfer data from one application to another. This session discusses what XML is and presents various methods of generating and parsing XML. It also shows why XML is useful and demonstrates some practical examples of how I've used XML in my applications.</p>
<p><a href="Pub/PracticalUsesforXML.pdf">White Paper</a> <a href="Pub/PracticalUsesforXMLSamples.zip">Samples</a></p>
<h3>Putting Parameters in Perspective</h3>
<p>Concentrating on communication between routines can reduce up to one-third of the errors in your applications. This month's column examines some "Best Practices" regarding the use of parameters.</p>
<p><a href="Pub/MAY96.pdf">White Paper</a> <a href="Pub/199605dhensc.zip">Samples</a></p>
<h3>Raise a Little Event of Your Own</h3>
<p>Event binding, added in VFP 8, is getting more and more used as VFP developers discover its powerful capabilities. This month, Doug Hennig examines a couple of uses he's been making of this technique lately.</p>
<p><a href="Pub/200510dhen.pdf">White Paper</a> <a href="Pub/200510dhensc.zip">Samples</a></p>
<h3>Report Objects</h3>
<p>FoxPro developers have wanted an object-oriented report writer since VFP 3 was released. Although the classes presented in this article don't have a pretty visual designer tool, they do expose the FRX as a set of objects and provide a simple way to create reports programmatically.</p>
<p><a href="Pub/Jun99.pdf">White Paper</a> <a href="Pub/199906dhensc.zip">Samples</a></p>
<h3>Reporting Errors</h3>
<p>This month's article presents an error reporting class that prompts the user to fax or email you information about errors that occur. Doug also describes improvements he's made to the error handling scheme he presented in articles two years ago.</p>
<p><a href="Pub/200008dhen.pdf">White Paper</a> <a href="Pub/200008dhensc.zip">Samples</a></p>
<h3>Reporting System Enhancements in VFP 9</h3>
<p>The major focus of VFP 9 is improving the reporting system. The list of new and improved features is enormous: multiple detail bands, protection of objects in the Report Designer, design-time events, ability to position objects absolutely, more zoom levels, better menus, etc. This document explores these enhancements in detail, demonstrates some types of reports you couldn't do in earlier versions of VFP, and provides an introduction to the "Extending the VFP 9 Reporting System" documents.</p>
<p><a href="Pub/VFP9ReportingOverview.pdf">White Paper</a> <a href="Pub/VFP9ReportingOverviewSamples.zip">Samples</a></p>
<h3>Retrieving and Updating Data With CursorAdapters</h3>
<p>The new CursorAdapter base class added in VFP 8 provides an easy-to-use, consistent interface to data. This month's article shows how to use CursorAdapter to access local data and remote data via ODBC, ADO, and XML, discussing the particular requirements and "gotchas" for each.</p>
<p><a href="Pub/200211dhen.pdf">White Paper</a> <a href="Pub/200211dhensc.zip">Samples</a></p>
<h3>Reusable Data Classes</h3>
<p>VFP developers have wanted reusable data classes for a long time. Although there were various ways of handling this in earlier versions, they were often kludges. Now in VFP 8, we have true reusable data classes. This month, Doug looks at subclasses of CursorAdapter and DataEnvironment, creates some reusable data classes from these subclasses, and shows how these data classes can be used in both forms and reports.</p>
<p><a href="Pub/200212dhen.pdf">White Paper</a> <a href="Pub/200212dhensc.zip">Samples</a></p>
<h3>Role-Based Security</h3>
<p>Role-based security allows you to specify which users have rights to particular secured entities, but at a group, or role, level. This month, Doug Hennig starts a discussion of how he implements role-based security in his applications.</p>
<p><a href="Pub/200512dhen.pdf">White Paper</a> <a href="Pub/200512dhensc.zip">Samples</a></p>
<h3>Role-Based Security, Part II</h3>
<p>In part 2 of Doug Hennig's series on role-based security, he looks at code used for manage the rights users and roles have to secured elements, discusses password encryption, and shows how user login works.</p>
<p><a href="Pub/200601dhen.pdf">White Paper</a> </p>
<h3>Role-Based Security, Part III</h3>
<p>This month, Doug Hennig winds up his series on role-based security by examining a form class responsible for maintaining users and roles.</p>
<p><a href="Pub/200602dhen.pdf">White Paper</a> <a href="Pub/200602dhensc.zip">Samples</a></p>
<h3>Searching With Web Services</h3>
<p>Web Services make it easy to access functions on other computers. Several Web sites now provide a Web Service to search their archives for text. However, every Web Service has a different interface and returns results in a different format. This month, Doug shows how to create a wrapper to provide a consistent way to search for the same text from many Web Services.</p>
<p><a href="Pub/200206dhen.pdf">White Paper</a> <a href="Pub/200206dhensc.zip">Samples</a></p>
<h3>See Reports in Your Mind's Eye</h3>
<p>Interested in more flexibility in your reports? Want to output to PDF files? How about graphs? The Mind's Eye Reporting Engine is an incredible new tool that'll make you forget the VFP Report Preview window. In this month's article, Doug explains why.</p>
<p><a href="Pub/200304dhen.pdf">White Paper</a> <a href="Pub/200304dhensc.zip">Samples</a></p>
<h3>Spam, Wonderful Spam</h3>
<p>This month's article puts emailing on steroids. The tools presented here provide the ability to send bulk emails to anyone listed in a table.</p>
<p><a href="Pub/Mar00.pdf">White Paper</a> <a href="Pub/200003dhensc.zip">Samples</a></p>
<h3>Splitting Up is Hard to Do</h3>
<p>While they aren't used everywhere, splitter controls can add a professional look to your applications when you have left/right or top/bottom panes in a window. This month's article implements a splitter using the new OLE drag and drop features added in VFP 6.</p>
<p><a href="Pub/Jul99.pdf">White Paper</a> <a href="Pub/199907dhensc.zip">Samples</a></p>
<h3>Taking Control</h3>
<p>This month, Doug Hennig discusses a simple way to make anchoring work the way you expect it to and how to control the appearance and behavior of a report preview window.</p>
<p><a href="Pub/200506dhen.pdf">White Paper</a> <a href="Pub/200506dhensc.zip">Samples</a></p>
<h3>Tame Your ActiveX Controls</h3>
<p>ActiveX controls are forwardly but not backwardly compatible. This means if you install a newer version of an OCX on your system, any applications you ship to people with an older version installed will break. This article presents a reusable tool that solves this problem in a simple, easy-to-use manner.</p>
<p><a href="Pub/Jun98.pdf">White Paper</a> <a href="Pub/199806dhensc.zip">Samples</a></p>
<h3>Task Scheduler</h3>
<p>This provides classes that can be used to create tasks in the Windows Task Scheduler. There are separate classes for Windows Vista, which uses Task Scheduler 2.0 and earlier Windows versions, which use Task Scheduler 1.0.</p>
<p><a href="Pub/TaskScheduler.zip">Samples</a></p>
<h3>The Best of Both Worlds</h3>
<p>You don't have to sacrifice performance for ease of installing new versions of applications. Using STARTAPP, you can run applications from local drives for best performance, and yet have them automatically updated from a common server directory when you install a new version. This solution also gives a secondary benefit: you can easily change where your data files are located without rebuilding your application.</p>
<p><a href="Pub/Oct97.pdf">White Paper</a> <a href="Pub/199710dhensc.zip">Samples</a></p>
<h3>The Happy Project Hooker</h3>
<p>Project objects and ProjectHooks are new in VFP 6. Together, they provide the ability to add to or change the behavior of the Project Manager. Doug's article presents tools that allow you to have project-specific field mappings, perform text search on all files in a project, log activities, and have a toolbar of useful project functions.</p>
<p><a href="Pub/Sep98.pdf">White Paper</a> <a href="Pub/199809dhensc.zip">Samples</a></p>
<h3>The Last Pick List You'll Ever Need</h3>
<p>Last month's column looked at classes dealing with lookup tables. Closely related to lookups are pick lists. Pick lists were ubiquitous in FoxPro 2.x applications, but even with comboboxes and listboxes, are still useful in today's applications. This month, Doug presents reusable classes that provide pick list features, and expands our base class library to provide row highlighting in grids.</p>
<p><a href="Pub/Nov98.pdf">White Paper</a> <a href="Pub/199811dhensc.zip">Samples</a></p>
<h3>The Mother of All TreeViews</h3>
<p>If you've ever had to work with a TreeView control, you'll appreciate Doug Hennig's article this month: it provides a class that encapsulates all of the quirky behavior of a TreeView so you don't have to worry about it. You need only implement a few methods to get a fully-functional control that provides the features your users need.</p>
<p><a href="Pub/200407dhen.pdf">White Paper</a> <a href="Pub/200407dhensc.zip">Samples</a></p>
<h3>The Mother of All TreeViews, Part 2</h3>
<p>Last month, Doug presented a reusable class that encapsulates most of the desired behavior for a TreeView control. He discussed controlling the appearance of the TreeView, loading the nodes in the TreeView, and restoring the TreeView's state. This month, he finishes the discussion of this class and shows a form class that provides the features needed in any form that displays a TreeView and the properties of the selected node.</p>
<p><a href="Pub/200408dhen.pdf">White Paper</a> <a href="Pub/200408dhensc.zip">Samples</a></p>
<h3>Tools for and by Geeks and Gurus</h3>
<p>HackCX Professional and ViewEditor Professional are two tools from Geeks and Gurus that can make your life easier. HackCX allows you to edit SCX and VCX files in ways the Form and Class Designers can't, and ViewEditor is more convenient and safer to use than VFP's View Designer.</p>
<p><a href="Pub/200312dhen.pdf">White Paper</a> </p>
<h3>Understanding DBCX 2</h3>
<p>DBCX is a public domain data dictionary extension manager for Visual FoxPro. A colloboration between leading industry vendors Stonefield Systems Group, F1 Technologies, Flash Creative Management, and Micromega Systems, DBCX provides a core set of functions that allows third party products to effectively share extended data dictionary information. DBCX was recently rewritten to add speed and flexibility. This session concentrates on the design and implementation of DBCX so you can understand what goes on "under the hood" in products such as Visual FoxExpress and Stonefield Database Toolkit.</p>
<p><a href="Pub/UnderstandingDBCX2.pdf">White Paper</a> <a href="Pub/UnderstandingDBCX2Samples.zip">Samples</a></p>
<h3>Unit Testing VFP Applications</h3>
<p>Unit testing is a very important part of application development and yet it seems that few VFP developers use this important technique. Unit testing allows you to confirm that code has the functionality expected of it, and is especially important when refactoring or making other changes to your code. This document introduces you to unit testing and the VFX FoxUnit project so you can be confident in your application's success before you deploy it.</p>
<p><a href="Pub/UnitTesting.pdf">White Paper</a> <a href="Pub/UnitTesting_Samples.zip">Samples</a></p>
<h3>Updating an Application over the Internet</h3>
<p>Ever wanted to update your client's applications with minimal effort? This month's article, the first of two on this topic, presents a set of classes that download an application's files from an FTP site, automating the process of distributing application updates.</p>
<p><a href="Pub/Sep00.pdf">White Paper</a> <a href="Pub/200009dhensc.zip">Samples</a></p>
<h3>Updating an Application over the Internet, Part II</h3>
<p>This second of a two-part series looks at several strategies for automating the process of distributing application updates by downloading an application's files from an FTP site.</p>
<p><a href="Pub/Oct00.pdf">White Paper</a> <a href="Pub/200010dhensc.zip">Samples</a></p>
<h3>Using VFP to Create CHM Files From Word Documents</h3>
<p>Tools like the Microsoft HTML Help Workshop or West Wind HTML Help Builder can make short work of generating an HTML Help (CHM) file. However, what if you're not starting from scratch but from a set of existing Word documents? This session discusses the basics of generating CHM files, covers the tasks necessary to create CHM files from Word documents, and presents a set of tools that automates the process.</p>
<p><a href="Pub/WordToCHM.pdf">White Paper</a> <a href="Pub/PracticalUsesforXMLSamples.zip">Samples</a></p>
<h3>Using Visual FoxPro's ActiveX Controls</h3>
<p>Visual FoxPro includes a lot of ActiveX (formerly OLE) controls that can add great new features to your applications. Many of these, including the TreeView, ListView, StatusBar, and CommonDialog controls, allow you to create a Windows 9x interface for your applications. Others, such as the MAPI controls and Comm control, allow you to add messaging and serial port control to your applications. Some of these controls are less useful: the "Threed" controls, for example, provide very little beyond what the native VFP controls already have, and seem to just be there for Visual Basic or Access usage.</p>
<p><a href="Pub/ActiveX.pdf">White Paper</a> <a href="Pub/ActiveXSamples.zip">Samples</a></p>
<h3>Using ctl32 to Create a More Modern UI</h3>
<p>Carlos Alloatti has created an incredible library called ctl32 that you can use to quickly add attractive controls to your VFP applications. It allows you to both provide a fresher, more modern interface and to add functionality that other VFP controls don't have. This document examines the library in detail and shows you how to implement the controls in your own applications.</p>
<p><a href="Pub/ctl32.pdf">White Paper</a> <a href="Pub/ctl32Samples.zip">Samples</a></p>
<h3>Using the Coverage Profiler</h3>
<p>Visual FoxPro (VFP) includes an important tool called the Coverage Profiler that provides both code coverage and profiling. This document examines how to use this tool for effective application testing, and shows how simple add-ins can increase its usefulness. I'm not going to discuss when or why, but how. In other words, we're not going to look at testing and profiling theories and concepts, but rather how the Coverage Profiler works and how to use it.</p>
<p><a href="Pub/coverage.pdf">White Paper</a> <a href="Pub/coverageSamples.zip">Samples</a></p>
<h3>Web Page Components</h3>
<p>With its fast and powerful string functions, VFP is a great tool for generating HTML. This month, Doug Hennig shows how you can treat Web pages as a collection of reusable HTML "components", to easily generate both static and dynamic Web sites.</p>
<p><a href="Pub/200405dhen.pdf">White Paper</a> <a href="Pub/200405dhensc.zip">Samples</a></p>
<h3>Win32API for VFP Developers</h3>
<p>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 document discusses how API functions are called in VFP, where to find information on the API, and presents lots of useful API functions you can call in your VFP applications today.</p>
<p><a href="Pub/Win32API.pdf">White Paper</a> <a href="Pub/Win32APISamples.zip">Samples</a></p>
<h3>Windows 95 Issues for FoxPro</h3>
<p>This month's column examines issues FoxPro developers must take into account when developing applications that will run under Windows 95. We'll also look at techniques for creating cross-platform (Windows 3.1 and Windows 95) applications.</p>
<p><a href="Pub/Aug96.pdf">White Paper</a> <a href="Pub/199608dhensc.zip">Samples</a></p>
<h3>Windows Event Binding Made Easy</h3>
<p>A feature available in other development environments but missing in VFP is the ability to capture Windows events. VFP 9 extends the BINDEVENT() function to allow our own code to be called when Windows passes certain messages to VFP windows. This has a wide range of uses, some of which Doug examines in this month's article.</p>
<p><a href="Pub/200501dhen.pdf">White Paper</a> <a href="Pub/200501dhensc.zip">Samples</a></p>
<h3>Working With Arrays</h3>
<p>This month's column examines some best practices for working with arrays, including a library routine that does a better job of searching an array than ASCAN and one that cleans up by closing all tables opened by a routine.</p>
<p><a href="Pub/Jan97.pdf">White Paper</a> <a href="Pub/199701dhensc.zip">Samples</a></p>
<h3>XML Web Services for Visual FoxPro Developers</h3>
<p>XML Web services are becoming very important for application development. Based on XML, SOAP and open standards, XML Web services are the building blocks of distributed applications. Visual FoxPro 8 makes it easier than ever to register, explore, consume, and publish XML Web services. This document explores the use of XML Web services in VFP applications. You'll see how to use the new XML Web Service Builder to bind controls to XML Web services results with very little code. You'll also discover how to publish XML Web services written in VFP.</p>
<p><a href="Pub/XMLWebServices.pdf">White Paper</a> <a href="Pub/XMLWebServicesSamples.zip">Samples</a></p>
<h3>Zip it, Zip it Good</h3>
<p>This month's article presents a class to zip and pack the files in a project, and a class to interface VFP with a zipping utility like WinZip. Combining these classes with a ProjectHook and a project toolbar helps improve your productivity.</p>
<p><a href="Pub/May00.pdf">White Paper</a> <a href="Pub/200005dhensc.zip">Samples</a></p>
<!-- #EndEditable -->
</div>
<!-- End Left Column -->
<!-- Begin Footer -->
<div id="footer">
<div id="copyright">
<p>Copyright (c) 2011-2014. All Rights Reserved.</p>
</div>
<p><a href="../default.html">Home</a> |
<a href="../about_me/default.html">About
Me</a> | <a href="../photo_gallery/default.html">Photo Gallery</a> |
<a href="../links/default.html">Links</a> |
<a href="default.html">Technical Papers</a>
</p>
</div>
<!-- End Footer --></div>
<!-- End content_container --></div>
<!-- End Container -->
</body>
<!-- #EndTemplate -->
</html>