Source Code Library Goes Gold!

Printer-friendly version

Advertisement

The Clarion Reference Library

Programming Objects In Clarion

Programming Objects in Clarion is a special Clarion Magazine edition of Russ Eggen's widely-acclaimed book on object-oriented programming and ABC. 250 pages.

Buy Now!

Clarion Magazine is more than just a great place to learn about Clarion development techniques, it's also home to a massive collection of Clarion source code. Clarion subscribers already know this, but now we've made it easier for subscribers and non-subscribers alike to find the code they need.

The Clarion Magazine Source Library is a single point download of all article source code, complete with an article cross-reference.

Subscribe to the source code library now

What isn't changing

Source code will still be available via individual articles. Nothing's going away. This is an added feature, not a replacement for how you get source code now.

Pricing

If you do not have a regular Clarion Magazine subscription you pay $64.95 for a one year source library subscription.

If you do have a regular Clarion Magazine subscription you pay just pay just $39.95 for a minimum one year library subscription, plus you get free upgrades for as long as you have a current magazine subscription. In other words, you pay a one time fee of $39.95.

If you wish to subscribe to Clarion Magazine and buy the source library subscription at the same time, the store will give you the magazine subscriber pricing on the source library.

What do I get?

When you complete your purchase you'll receive a confirmation email telling you to log in to My ClarionMag where you'll find your link to the source library download. The zip file contains a signed, SetupBuilder-powered installer which will set up the source code library on your computer. The C3PA compatible installer will detect your Clarion version and by default will install the Source Code Library under your Clarion 3rdparty directory. Please use the default location for Clarion Desktop compatibility. See below for a partial list of included source.

Hundreds of source files and examples

At present there are well over 300 zipped source examples included in the library. The download is in excess of 30 megabytes.

Terms of Use

As a subscriber to the Clarion Source Code Library you are entitled to use the source code and examples without restriction in your own applications. You may not, however, distribute the source code or use it to produce third party products without the permission of CoveComm Inc, publisher of Clarion Magazine.

Upgrades

You are entitled to free upgrades as follows:

  • for one year from the date of purchase, or
  • as long as you have a current Clarion Magazine subscription

Log in to My ClarionMag to download the latest release.

Tree navigation

In addition to the full list of articles the source code library now comes with a categorized tree view of the articles (partial screen shot shown below):

Topical tree view of articles with source code, several categories expanded

The articles listed in the tree view are links to the article summary (below, in the same document). The summary also has links to the source code (which is on your hard disk) and the original article on the ClarionMag web site.

Included source code (as of December 31 2006)

The following is a partial list of articles containing source code included in the library, from newest to oldest. Articles with source posted after December 31 2006 are not listed here.

Source for: Manifests for Hand Coded Apps (updated)
Date: 2006-12-30
Summary: Clarion 6 includes support for XP manifests in APPs. But what about hand coded programs? Mark Riffey shows how to add a manifest to your PRJ. Updated with a Vista screen shot, courtesy of Carl Barnes.
   
Source for: Printing a "No Records" Report
Date: 2006-12-22
Summary: The standard behavior for a Clarion, ABC, report, if there is no data, is to pop up a message which says "No records". Suppressing this message is easy, but what if you want to print a report that says "No records"? Bruce Johnson shows how it's done.
   
Source for: A Callback Technique for Capesoft's FileManager2
Date: 2006-12-21
Summary: CapeSoft's FileManager2, and its more recent incarnation FileManager3, are amazing products: they completely automate the process of upgrading client databases, whether local or across a network, and make it easy to do file maintenance. Randy Rogers shows how to add a callback procedure to FM2 to provide user feedback during startup.
   
Source for: No! You Can't Cancel
Date: 2006-12-13
Summary: Clarion developers are a nasty bunch. They do not want to let their end users cancel forms. At least it seems so from the frequency with which questions are asked about trapping the Escape key or Windows' red X. Dr. Parker shows how it's done.
   
Source for: A Customized Deep Assign Function
Date: 2006-12-12
Summary: The deep assign operator (:=:) is a powerful tool, but it doesn't work in all circumstances. Alan Telford shows how to extend deep assign functionality using WHO and WHAT.
   
Source for: Controlling Controls
Date: 2006-11-30
Summary: Steve Parker has a customer browse which must indicate whether a customer has an email address, and if the email address is present, allow the user to send an email. But as usually seems to happen, the obvious solutions don't apply.
   
Source for: Solving Problems With Finite State Machines
Date: 2006-11-24
Summary: Finite State Machines are a useful technique for many programming tasks, including text searching. If you've ever done any complex text parsing you may even have used one of these without knowing it. John Christ explains.
   
Source for: Adding Arrays To Generic Queues With HOWMANY
Date: 2006-11-17
Summary: Alan Telford uses Excel to view queue data, as explained in an earlier article. That version of his generic-queue-to-CSV exporting procedure couldn't handle arrays in queues, but Clarion 6's new HOWMANY function makes arrays in generic queues usable.
   
Source for: Threads: When START Starts
Date: 2006-11-10
Summary: You may think that when you START a procedure, it immediately starts. This is not, however, true. Steve Parker shows how to exercise control over when a STARTed procedure actually begins to run on its own thread.
   
Source for: Recursive Adds
Date: 2006-10-26
Summary: "Heads down data entry" makes the ability to add multiple records without having to return to a browse desirable. Even customers in lighter duty situations want it. Dr. Parker shows how to deliver the goods.
   
Source for: Classes For Background Processes
Date: 2006-10-20
Summary: C6 introduced true threading, and threads are a great way to handle background tasks. But threads seem very procedural - you start some code running, and it runs until it ends. What if you want to use threads in an object-oriented environment? Is it even possible to have a class that runs on its own thread? How do you control threads in an object-oriented environment? David Harms demonstrates one approach to threading classes.
   
Source for: Throwing Users Out: Methods of Computation
Date: 2006-10-17
Summary: Having determined, in the previous episode, how to throw a user out of a window, Steve Parker returns to the problem of knowing when to throw the user out.
   
Source for: Replicating IDLE: Throwing Users Out
Date: 2006-10-12
Summary: "When the user hasn't done anything for x minutes (or seconds), I want to close the window. How can I do this?" This question comes up fairly frequently. As is so often the case using Clarion, there are a number of ways to accomplish the goal of throwing the user out.
   
Source for: Solving Sudoku Puzzles With Clarion, Part 2
Date: 2006-09-27
Summary: Jon Waterhouse explains his Sudoku solver, written in Clarion. This program uses a deductive approach as much as possible, and falls back on guessing only where deduction is impossible. Part 2 of 2.
   
Source for: Solving Sudoku Puzzles With Clarion, Part 1
Date: 2006-09-21
Summary: Jon Waterhouse explains his Sudoku solver, written in Clarion. This program uses a deductive approach as much as possible, and falls back on guessing only where deduction is impossible. Part 1 of 2.
   
Source for: Roll Your Own Web Search Engine
Date: 2006-09-14
Summary: Jim Albrecht shows how you can create your own web search engine in Clarion using Skip Williams' WebFetch DLL.
   
Source for: Storing GROUPs in INI Files
Date: 2006-09-08
Summary: Jeff Slarve demonstrates a small function that stores any group as field/value pairs in an INI file, and can also restore data from an INI file.
   
Source for: Improving On The Non-Related Lookup Template
Date: 2006-07-17
Summary: Clarion ships with a template that allows you to do a lookup from a table that is not related to the primary table. While very useful, it offers room for improvement, as Nardus Swanevelder demonstrates.
   
Source for: Beautifying Clarion Applications
Date: 2006-07-13
Summary: Beauty may only be GUI deep, but that's no reason to hide your beautiful code with an ugly shell. Roel Abspoel shows how to dress up your apps with that "glass panel" look.
   
Source for: Another Single Browse For Multiple Lookups
Date: 2006-07-10
Summary: Several years ago Clarion Magazine published an article on using a single browse for multiple lookups. Nardus Swanevelder looks at the subject again, and comes up with some improvements.
   
Source for: A Class Wrapper for the SimpleOCR API
Date: 2006-07-06
Summary: While developing a document management system, John Dunn faced a requirement for scanned documents. To reduce data entry time and increase the accuracy of the indexed data he decided to add Optical Character Recognition (OCR) capabilities to the program.
   
Source for: Global Variables, Threads, Critical interSections and the Dangers of Unprotected Sets, Part 2
Date: 2006-06-29
Summary: Inspired by the "CapeSoft Clowns" at the recent Aussie DevCon, John Morter sets out to create an easier way to manage thread-safe variable assignments under Clarion 6. In this concluding part John explains the class source.
   
Source for: Global Variables, Threads, Critical interSections and the Dangers of Unprotected Sets
Date: 2006-06-22
Summary: Inspired by the "CapeSoft Clowns" at the recent Aussie DevCon, John Morter sets out to create an easier way to manage thread-safe variable assignments under Clarion 6. Part 1 of 2.
   
Source for: External Business Rules with the In-Memory Driver
Date: 2006-06-21
Summary: Towards the end of 2004 Nardus Swanevelder wrote a series of articles on Clarion's Business rules, and how they could be configured at runtime. In this update, Nardus shows how to use configurable business rules with the In-Memory Driver. SOURCE LINK UPDATED!
   
Source for: Using RMChart with Clarion
Date: 2006-06-15
Summary: After researching several charting alternatives, Al Randall happened upon RMChart, a free, lightweight wrapper around Microsoft's GDIPLus graphics library. Al shows how to create charts in Clarion using the DLL version.
   
Source for: Nifty Window Tricks And Smart DLL Loading
Date: 2006-04-20
Summary: It's an age old question: "How do I use a Windows API function that is not available in all versions of Windows?" The simple answer is that you only call the function if it's available at runtime. You do this by attempting to dynamically load the module where the function resides, and if that succeeds you call the function by address. If you can successfully load the module and get the address of the procedure, it exists in this version of Windows. There's no need to try to identify the version of Windows; either the function exists or it doesn't. In this article Larry Sand demonstrate this technique with some API calls that are only available in Windows 2000 and later, and which allow you to gradually fade in a window and make an area transparent or opaque.
   
Source for: Aesthetically Pleasing Recursive Updates
Date: 2006-04-17
Summary: Clarion makes it easy to do recursive inserts, where you continue to insert records without going back to the browse each time. It is a matter of but a few mouse clicks. But how about recursive updates? Henry Plotkin looks at the ugly way, and the pretty way.
   
Source for: Mixing Clarion With.NET, Part 6
Date: 2006-04-13
Summary: In the concluding part of this series, Wade Hatler shows how to make COM and C++ wrappers, and demonstrates some nifty ways to spruce up a standard Clarion window via .NET.
   
Source for: Updating Hot Fields
Date: 2006-04-11
Summary: On a browse window, Hot Fields significantly extend the display of information. Fields for which there is no space in the list control, data from other files (related or not), run time computed data are all nicely handled with Hot Fields. But when Steve Parker experiments with read-only entry fields on a browse, he finds out his users now want to use these fields update values.
   
Source for: Using DOS Files To Send Printer Codes
Date: 2006-03-31
Summary: If your applications need to talk directly to printers on parallel ports, or to serial devices, you can use the Windows API. Or, as Olivier Cretey explains, you an simply use a Clarion DOS file.
   
Source for: The Easiest Way To Write To A Printer Port
Date: 2006-03-30
Summary: In the last less-than-action-packed installment, Steve Parker said that he was not going to create a template for the write-directly-to-port wrapper procedure discussed. There is a very good reason for not creating that template. Itıs been done already. At least twice.
   
Source for: Clarion Challenge Results - Remove Links
Date: 2006-03-23
Summary: The results for the March 2 "Remove Links" Clarion Challenge are in! And we have detailed analysis courtesy of CapeSoft's Profiler, plus a .NET surprise.
   
Source for: Print Directly to Printer Made Easier
Date: 2006-03-20
Summary: In his last adventure in API land, Steve Parker explored sending control codes directly to a printer port. In this installment he wraps that code up into a function call.
   
Source for: PROP:SQL And Embedded Single Quotes
Date: 2006-03-10
Summary: If you use MS-SQL with your Clarion programs, and you write your own SQL statements, then you've probably run into problems with quote characters. SQL statements use quote characters to delimit streams, and if you have quotes inside your strings you need to double them up so MS-SQL doesn't treat them as the end of the string. This article by John Griffiths will show you a few quoting tricks, and will also provide you with a handy function - SingleQuoteDoubler()
   
Source for: Writing To A Printer Port: Sending Escape Codes
Date: 2006-03-08
Summary: The problem: How to send a control code (a.k.a. escape sequence or printer control) to a printer? The Clarion report structure no longer supports sending embedded control codes. There is no Clarion statement that allows sending them, at least not since CDD. Steve Parker explores the mystery of talking directly to Windows printers.
   
Source for: Encrypting Data With Number Base Conversion
Date: 2006-03-02
Summary: Most programmers are familiar with base 2 (binary) numbers, base 10 (decimal) and base 16 (hex). But using arbitrary number bases can also be a useful way to encrypt data for transmission by phone or other voice methods. Dermot Herron shows how he applies this technique to transfer vital information to customers.
   
Source for: Anyone Home on the Network?
Date: 2006-01-20
Summary: IsNetworkAlive, IsDestinationReachable, GetLastError, FormatMessage, GetDriveType, WnetGetConnection - the odyssey to know the status of the network began with a printer error. It was the most peculiar printer error Steve Parker and Henry Plotkin had ever seen.
   
Source for: Next Month Anniversary Date Function
Date: 2006-01-19
Summary: Inspired by Carl Barnes Better Date article, John Griffiths offers up this function to get anniversary dates on specific days of the month.
   
Source for: Edit-In-Place: Getting User Confirmation
Date: 2006-01-13
Summary: No good deed, it is said, goes unpunished. And now Henry Plotkin comes to realize that Edit-in-place is ready, willing and able to punish the good-deed-doing Clarion developer. Perfectly willing.
   
Source for: A Better DATE Function
Date: 2006-01-09
Summary: Carl Barnes improves on the standard Clarion DATE function with a version that corrects a bug and works with negative month and day values.
   
Source for: IsNetworkAlive: When You Don't Need to Know That Much
Date: 2005-12-23
Summary: Steve Parker's colleague Henry Plotkin recently examined ways of checking whether a client PC was able to talk to another, named, PC on the network. Henry liked the IsDestinationReachable API, but as Steve shows, IsNetworkAlive still has its uses.
   
Source for: Translating Mapped Drives To UNC
Date: 2005-12-23
Summary: Steve Parker recently objected to having to translate mapped drive letters to UNC names in order to check whether or not network resources were available. Paul Attryde, with his characteristic unstinting help, pointed Steve to a fairly easy and very solid solution.
   
Source for: Modifying The Frame Background - A 10 Minute Template, Part 2
Date: 2005-12-16
Summary: Someone asked recently on the newsgroups if there was an easy way to change the background color of an application frame. This is a question Geoff Bomford frequently asked himself, and never found a satisfactory answer. He happened to find a solution that was good enough to turn into a simple template. Part 2 of 2.
   
Source for: Using GetLastError and FormatMessage to Check the Network
Date: 2005-12-15
Summary: As Henry Plotkin discovered in his previous article, IsDestinationReachable is a less-than-perfect API call for detecting network problems. In this installment, Henry expands his analysis with the GetLastError and FormatMessage calls.
   
Source for: Hello, Server?
Date: 2005-12-12
Summary: If Henry Plotkin's application runs across a network, he wants to know if that network is working or not. If the network drops while the program is trying to access files, the user might get an error message. Or they might not. Or they might get a "Save As" dialog, as happened recently. If they do get a message, it is unlikely that they will comprehend it. Something more user friendly is in order.
   
Source for: Modifying The Frame Background - A 10 Minute Template
Date: 2005-12-08
Summary: Someone asked recently on the newsgroups if there was an easy way to change the background color of an application frame. This is a question Geoff Bomford frequently asked himself, and never found a satisfactory answer. He happened to find a solution that was good enough to turn into a simple template. Part 1 of 2.
   
Source for: A FileDropBox With Conditional Content
Date: 2005-11-30
Summary: There are always situations where the contents of a FileDropBox, either a FileDropListBox or a FileDropCombo, is dependant on some criteria, usually the contents of an entry field or another FileDropBox. But a FileDropBox is always file loaded, and this loading is done when the form opens; after that the FileDropBox remains pretty static. Maarten Veenstra shows how to change the FileDropBox's content at runtime.
   
Source for: Memory Mapped Files in Clarion
Date: 2005-11-18
Summary: Sometimes you need a secure way to communicate between applications, as Marty Honea discovered when he wanted a single login for multiple EXEs. After considering a variety of schemes, Marty found that Memory Mapped Files fit the bill perfectly.
   
Source for: A Tree in a Page Loaded Browse: The Sequel, Part 3
Date: 2005-11-11
Summary: Browse boxes formatted as trees are handy for all sorts of things. File loaded trees are easy; page loaded trees, however, can be a nightmare. In this series David Podger and Deon Canyon build on an earlier approach demonstrated by Ronald van Raaphorst. This final installment looks at cutting and pasting.
   
Source for: A Tree in a Page Loaded Browse: the Sequel, Part 2
Date: 2005-11-04
Summary: Browse boxes formatted as trees are handy for all sorts of things. File loaded trees are easy; page loaded trees, however, can be a nightmare. In this series David Podger and Deon Canyon build on an earlier approach demonstrated by Ronald van Raaphorst. Part 2 of 3.
   
Source for: Exporting APPs and DCTs to XML
Date: 2005-10-28
Summary: XML is everywhere these days; everywhere, that is, but in your DCTs and APPs. But as Harley Jones shows, exporting your APP or DCT to XML can be a great benefit, for documentation, and for other purposes. Part 1 of 2.
   
Source for: Internationalization Tools Standards: Learning from an ABC Calendar Workaround
Date: 2005-10-20
Summary: Anyone who has internationalized a large application knows that one of the more time consuming tasks is dealing with third party products which attack internationalization in ways that do not allow languages choices at run time. Even in a pure ABC context, creating multi-language applications is challenging but generally possible, although there is a notable exception in the ABC calendar classes. Phil Will shows how to prepare your code for translation, using the misbehaving calendar classes as an example.
   
Source for: Mixing Clarion With .NET, Part 4
Date: 2005-09-29
Summary: September's focus on .NET continues with Wade Hatler's series on using Clarion and .NET together. In this installment Wade shows how to how to pass string, date, time and decimal parameters from .NET to Clarion.
   
Source for: Mixing Clarion with .NET, Part 3
Date: 2005-09-21
Summary: September's focus on .NET continues with Wade Hatler's series on using Clarion and .NET together. In this installment Wade shows how to call Clarion procedures from inside .NET applications.
   
Source for: Mixing Clarion with .NET, Part 2
Date: 2005-09-15
Summary: Now that you know how to call methods in .NET, it's time to put some WinForms objects inside of Clarion windows. It's surprisingly easy once you know a few tricks, as Wade Hatler demonstrates.
   
Source for: Mixing Clarion with .NET, Part 1
Date: 2005-08-31
Summary: The .NET framework is extremely large, growing and very well supported. Right out of the box the framework has hundreds of classes that are well thought out and which integrate seamlessly with .NET applications. These classes cover a very wide range of the things you might want to do, once Clarion.NET arrives. But there's no need to wait. In the first article in this series, Wade Hatler looks at calling .NET classes from Clarion code.
   
Source for: Fetching A Web Page With WinInet
Date: 2005-08-23
Summary: There are a few different tools you can use to get a web page from a server, and one readily available solution is to use Windows' own WinInet DLL. Skip Williams shows how it's done.
   
Source for: Speeding Development With Defaults And Small Templates
Date: 2005-08-16
Summary: Faced with a conversion of a DOS application to Clarion 6.2, Phil Will came up with of two simple things to do with templates and the defaults file that saved a tremendous amount of time in development, and greatly eased application maintenance.
   
Source for: Using Local Classes Instead Of Local Routines
Date: 2005-08-11
Summary: Local classes are often touted as a replacement for procedure routines. But what are local classes, why do you need them, and what can you do with them? Nardus Swanevelder answers these questions, and shows how easy it is to use local classes.
   
Source for: Online Mapping And Routing In Clarion
Date: 2005-06-22
Summary: Online mapping is a useful and increasingly popular tool for personal and business use. Colin Wynn shows how easy it is to interface to MSN mapping and routing with a Clarion application.
   
Source for: A Multi-Threaded Queue Of Queues
Date: 2005-06-21
Summary: Queues make all kinds of data handling fast and easy. With Clarion 6, queue access gets a little more complicated, since queues by themselves are not thread safe. And what if you use queues of queues? Svetlana Zusman shows how to lock nested queues for thread safety and maximum efficiency.
   
Source for: Generic DLLs The Template Way
Date: 2005-05-26
Summary: A truly generic DLL can be difficult to achieve using the standard templates. Hand-coding the DLL, as Jeff Slarve recently described, is one option; another is to use a specialized template to manage the creation of the export file. Bjarne Havnen shows how it's done.
   
Source for: A Better DosFileLookup
Date: 2005-05-13
Summary: When some standard Clarion functionality doesn't meet your need, what do you do? First, you embed some code. Then, when you need that code elsewhere, you start thinking about how to avoid duplicating the embeds. As Dave Harms shows, often the easiest solution is to create a custom, derived ABC class, and tell the templates to use your class instead of the ABC original.
   
Source for: Modifying the Common Dialogs: How Hard Could It Be?
Date: 2005-05-12
Summary: Have you ever wanted to add a button or other control to one of the built-in common dialogs for opening a file, saving a file, or printing? Jim Kane thought it would be nice to add a multi-page TIFF preview button to the file open dialog. How hard could it be?
   
Source for: Version Control with CVS and Clarion 6.x, Part 2
Date: 2005-04-21
Summary: Recently, Nardus Swanevelder introduced the open source CVS version control system to ClarionMag readers. Now Bernie Grosperrin advances this topic, showing how to use CVS with Clarion 6.x. Part 2 of 2.
   
Source for: Version Control with CVS and Clarion 6.x
Date: 2005-04-15
Summary: Recently, Nardus Swanevelder introduced the open source CVS version control system to ClarionMag readers. Now Bernie Grosperrin advances this topic, showing how to use CVS with Clarion 6.x. Part 1 of 2.
   
Source for: Limit An App To A Single Instance: DDE Strikes Back
Date: 2005-04-12
Summary: In days of old, when programmers were bold and DDE was the ultimate tool, if one wished to limit one's application to a single instance, it was quite easy. But Microsoft has deprecated DDE, and has done its best to move programmers to other solutions. As a result, that old DDE instance-limiting code doesn't always work as expected. Unless you add a modern twist, as Steve Parker shows.
   
Source for: Compiling C with the Clarion IDE, Part 3: Naming and Mangling
Date: 2005-03-28
Summary: Ever find some C source on the Internet that does exactly what you need? So you rewrite and convert it to Clarion code, then try to get it to work again. Carl Barnes will show you how easy it is compile C modules with your Clarion code. One small change to the C header, create a Clarion include file and, Bob Z's your uncle, you're calling the C function. Part 3 of 3.
   
Source for: Compiling C with the Clarion IDE, Part 2: Calling C from Clarion
Date: 2005-03-22
Summary: Ever find some C source on the Internet that does exactly what you need? So you rewrite and convert it to Clarion code, then try to get it to work again. Carl Barnes will show you how easy it is compile C modules with your Clarion code. One small change to the C header, create a Clarion include file and, Bob Z's your uncle, you're calling the C function. Part 2 of 3.
   
Source for: Progress Bars for Queues: Using The ABC QueueProcessManagerClass
Date: 2005-03-18
Summary: What do you do if you have a queue to process, and you want to display a progress bar to the user? You can write your own code, or, as Bjarne Havnen shows, you can use the undocumented ABC QueueProcessManagerClass.
   
Source for: Compiling C with the Clarion IDE, Part 1: It's Easier Than You Think
Date: 2005-03-17
Summary: Ever find some C source on the Internet that does exactly what you need? So you rewrite and convert it to Clarion code, then try to get it to work again. Carl Barnes will show you how easy it is compile C modules with your Clarion code. One small change to the C header, create a Clarion include file and, Bob Z's your uncle, you're calling the C function. Part 1 of 3.
   
Source for: Enriching The User's Experience With RTF Displays
Date: 2005-03-11
Summary: Text is becoming more and more of a requirement for applications, and large text fields have never displayed comfortably within the Clarion list box. Stephen Bottomley shows how easy it is to use RTF to create a custom display format for your data.
   
Source for: Converting TPS Files To A New Layout Part 2
Date: 2005-03-04
Summary: No matter how hard you plan your database design; sooner or later you will want to change the layout of your application's TPS data files. In this second of two parts, Abe Jimenez describes the actual data conversion.
   
Source for: Converting TPS Files To A New Layout
Date: 2005-02-24
Summary: No matter how hard you plan your database design; sooner or later you will want to change the layout of your application's TPS data files. Clarion has a mechanism for converting files in the dictionary editor, but it doesn't work on files that contain BLOBs or arrays. It also doesn't help if your application is installed in multiple sites, where the Clarion dictionary editor is not available. If you make changes to the file's structure and then distribute your application, your end users will get that dreaded error 47. That is, unless you do what Abe Jimenez does.
   
Source for: When Edit-In-Place Bites Back Some More
Date: 2005-02-11
Summary: Henry Plotkin really thought he had a pretty clever solution to a problem when he submitted When Edit-In-Place Bites Back to Clarion Magazine. When a reader pointed out further problem with EIP and the use of the mouse, Henry went back to the drawing board.
   
Source for: Creating An Invoice Application Using C6.1 Legacy Edit-In-Place
Date: 2005-01-21
Summary: Invoicing is a common requirement for Clarion business applications. Bill Rollins shows how to create a useful edit-in-place invoice using Clarion 6.1 and the legacy (Clarion) templates.
   
Source for: Understanding Clarion Templates Part 6: Using #GROUPs
Date: 2005-01-20
Summary: Dave Harms continues his template writing series with an explanation of #GROUP structures, which are really template language procedures.
   
Source for: When Edit-In-Place Bites Back
Date: 2005-01-17
Summary: Users have a way of discovering problems even the most rigorous testing cannot uncover, as Henry Plotkin finds out.
   
Source for: Embedding Fonts In Clarion Apps
Date: 2005-01-14
Summary: Embedding resources into a program is common practice in Windows programming. Surely, Clarion must be able to use the Windows Resource file system to access a font stored away as a binary resource. But how does Clarion handle this? David Bratovich explains.
   
Source for: Mysteries of the iPod
Date: 2005-01-14
Summary: In honor of the new PlanetClarion podcasts, Vince Du Beau divulges some of the hidden information on the iPod, Apple's highly successful digital music player.
   
Source for: Using Arrays in Databases
Date: 2004-12-23
Summary: Arrays in databases? You can't in SQL and you shouldn't in TPS! But there are times when arrays really do make sense. Dermot Herron shows how to use OVER to get the benefits of arrays with non-arrayed file layouts.
   
Source for: Calling the Skype API
Date: 2004-12-22
Summary: By now you've probably heard of Skype, the free internet telephony service that makes the Planet Clarion podcast possible. But Skype is much more than just a free phone call. David Harms shows how to call the Skype API to manage calls, send instant messages, and much more.
   
Source for: A Copy/Paste Popup Menu
Date: 2004-12-10
Summary: Clarion entry controls may have support for Ctrl-C and Ctrl-V for copy and paste, but what do you do when a client asks for the Copy/Paste popup menu? If you're Nardus Swanevelder, you start writing some code.
   
Source for: An Introduction to Hand-Coding Reports
Date: 2004-12-09
Summary: Dermot Herron continues his series for the beginning Clarion programmer with a look at how to easily manage complex reports by using the report template and a little hand code.
   
Source for: Managing Report Page Breaks With The C6 Break Manager
Date: 2004-11-26
Summary: Geoff Bomford shows how to use the new BreakManagerClass to get control over report page breaks. This comrehensive article is a great introduction to this important new technology.
   
Source for: A Configurable Expression Editor, Part 2
Date: 2004-11-19
Summary: Since Clarion does not have a good integral tool for defining an expression at runtime, Tim Phillips went ahead and built one, using his Basic Editor as the foundation. In this second of two parts Tim shows how the code works.
   
Source for: A Configurable Expression Editor, Part 1
Date: 2004-11-05
Summary: Since Clarion does not have a good integral tool for defining an expression at runtime, Tim Phillips went ahead and built one, using his Basic Editor as the foundation. Part 1 of 2.
   
Source for: Using Clarion's Business Rules, Part 2
Date: 2004-10-29
Summary: In Part 2 of this series, Nardus Swanevelder explains the inner workings of the RulesManager class.
   
Source for: Critical Procedures: Synchronization for the Lazy
Date: 2004-10-29
Summary: To protect data that's shared across threads, you can use a Critical Section, but if you fail to release the Critical Secition when you're done with it, you have a Critical Problem. The solution: use a Critical Procedure instead.
   
Source for: Extending the FileManager Class: Shorthand Fetches
Date: 2004-10-29
Summary: One of the most commonly used commands in Clarion is GET, which can retrieve records from both files and queues. The ABC equivalent is the FileManager.Fetch method, which isn't necessarily easier to use. Mike Hanson shows how to make your fetches quick and easy.
   
Source for: Implementing a Critical Section: Fast and Effective
Date: 2004-10-21
Summary: The Critical Section is the construct most commonly used to protect reading and writing non-threaded, static data in multi-threaded applications. And using Critical Sections is easier than you think.
   
Source for: Using Clarion's Business Rules, Part 1
Date: 2004-10-21
Summary: Nardus Swanevelder begins a new series of articles explaining how to use Clarion's business rules capability to make your data validation flexible and configurable.
   
Source for: DevCon Pre-Conference Training: Day 3
Date: 2004-09-30
Summary: While Day 1 and 2 of the pre-conference training sessions focused on new functionality provided by C6, Day 3 focused on taking advantage of capabilities available to us since Clarion 4 introduced Object Oriented Programming (OOP) and the Application Building Classes (ABC).
   
Source for: Dynamic Table-Based Tagging
Date: 2004-09-17
Summary: Sometimes a simple tagging solution is the ideal solution, and sometimes you need something a bit more robust. When his users began requiring features not included in a readily available tagging class, Chris set out to create his own tagging functionality using a highly flexible, table-based approach.
   
Source for: Handling Nullable Fields in an ABC Application
Date: 2004-09-17
Summary: It's no secret that Clarion doesn't handle nullable fields very well. In keeping with the ideal of simplicity, Clarion considers the value of a Null string to be blank, and a Null number to be zero. And in most cases, this is fine, and can make your code easier to use and maintain. But there are occasions when you have a Nullable field that really needs to be Null.
   
Source for: Break Dancing With Clarion
Date: 2004-09-16
Summary: Clarion 6.1 has introduced some improvements to the report designer. These aren't the sort of changes that will, on their own, make you want to run out and upgrade to C6.1, but they are important advances nevertheless. In the first article in this review Geoff Bomford covers the use of pre-Clarion 6.1 techniques for performing some common report break tasks, and in the next article will discuss the use of the BreakMgr Class, a new tool in Clarion 6.1 for handling the same tasks a little better!
   
Source for: Generating A Unique Registration Code
Date: 2004-07-26
Summary: Registering software usually involves entering some sort of registration code. But how do you go about creating such a code to give to your customers, and then how do you validate in the customer's application? Vince Du Beau demonstrates a registration scheme using a product type code and a user name.
   
Source for: Recording Audio: An Introduction To OCXs, Part 3
Date: 2004-07-14
Summary: OCX technology has been around for years, but not that many Clarion developers use OCX components. Ben Brady shows how to use a readily-available OCX to record and encode audio. Part 3 of 3.
   
Source for: Recording Audio: An Introduction To OCXs, Part 2
Date: 2004-07-08
Summary: OCX technology has been around for years, but not that many Clarion developers use OCX components. Ben Brady shows how to use a readily-available OCX to record and encode audio. Part 2 of 3.
   
Source for: Recording Audio: An Introduction To OCXs, Part 1
Date: 2004-07-08
Summary: OCX technology has been around for years, but not that many Clarion developers use OCX components. Ben Brady shows how to use a readily-available OCX to record and encode audio. Part 1 of 3.
   
Source for: Migrate Your Topspeed Application To Firebird, Part 2
Date: 2004-06-07
Summary: Faced with a conversion from Topspeed to Firebird, Jimmy Rogers wrote an extensive template to automate the process as much as possible. Part 2 of 2.
   
Source for: AutoComplete In An On-Demand Drop Down Combo
Date: 2004-06-07
Summary: Why would you want to learn how to code AutoComplete into a Drop Down combo when a Drop Down Combo already does that? The big answer is speed. If you have a number of Drop Down Combos (DDCs) on a page, each referencing a file that has a growing number of records, then even just opening the window will become very slow. Stuart Andrews demonstrates his approach to coding on-demand drop down combos.
   
Source for: Migrate Your Topspeed Application To Firebird, Part 1
Date: 2004-05-27
Summary: Faced with a conversion from Topspeed to Firebird, Jimmy Rogers wrote an extensive template to automate the process as much as possible. Part 1 of 2.
   
Source for: Cryptography and Clarion: Using the MSCrypto API Part 2
Date: 2004-05-26
Summary: Cryptography is the study of mathematical techniques related to aspects of information security such as confidentiality, data integrity, entity authentication, and data origin authentication. Increasingly, cryptography is important to software developers, and with the US government having lifted restrictions on the export of strong encryption, a solution is now widely available to Windows developers. In this two-part article Ron Webb explains what cryptography is all about, and introduces a Clarion class wrapper for the MS Crypto API. Part 2 of 2.
   
Source for: Cryptography and Clarion: Using the MSCrypto API
Date: 2004-05-21
Summary: Cryptography is the study of mathematical techniques related to aspects of information security such as confidentiality, data integrity, entity authentication, and data origin authentication. Increasingly, cryptography is important to software developers, and with the US government having lifted restrictions on the export of strong encryption, a solution is now widely available to Windows developers. In this two-part article Ron Webb explains what cryptography is all about, and introduces a Clarion class wrapper for the MS Crypto API.
   
Source for: Understanding Clarion Templates Part 5: Enhancing Code Templates
Date: 2004-05-21
Summary: In this installment on code templates, David Harms shows how to properly display text in a template, and conditonally generate code.
   
Source for: Detecting Drive Types
Date: 2004-05-14
Summary: Rumors to the contrary, SneakerNet is not dead! Sometimes you still need to copy data to physical, removable media. As Andrew Guidroz shows, there are some API calls that can help.
   
Source for: Understanding Clarion Templates Part 4: Writing Code Templates
Date: 2004-05-11
Summary: David Harms continues his series on learning the template language with an introduction to writing code templates.
   
Source for: Generating MS SQL Server Side Triggers
Date: 2004-04-30
Summary: Although Ayo Ogundahunsi finds the new client side triggers bold and ingenious, he still prefers the traditional way of using server-side triggers. In this article he demonstrates how to use a custom template to create server side triggers for database auditing.
   
Source for: Burning COM: How To Write CDs in Windows XP With ICDBurn
Date: 2004-04-29
Summary: When Andrew Guidroz's article idea was made redundant by Mark Riffey's article on popping up the Windows XP CD burn wizard, Andrew decided to grab COM by the horns and figure out just how to use the ICDBurn COM interface in Clarion. He ended up with two examples, one using Jim Kane's COM classes, the other using SoftVelocity's COM classes.
   
Source for: A Hunka-Hunka Burnin' CD Data, or Two Steps Forward, One Step Back(up)
Date: 2004-04-15
Summary: An integrated backup system can be a great way to provide complete service to your customers. But what happens when your users want to back up to CD? Mark Riffey explains a technique that makes use of the Windows XP burn wizard.
   
Source for: System Tray Popup Windows
Date: 2004-03-31
Summary: Shortly after installing Outlook 2003 Jim Kane noticed small windows appearing in the tray area when a new email message came in. He found these very useful, so he set about creating the same kind of popup messages in Clarion.
   
Source for: Compiled Reports From Report Writer
Date: 2004-03-31
Summary: As far as Henry Plotkin is concerned, the best thing about Clarion Report Writer is the ability to set up the finished page without having to adjust the position of each individual band. The next best thing about Report Writer is that report testing is much faster. It does not require a compile-link cycle. It does not require minimizing Clarion, starting the application and navigating to the report. Wouldn't it be nice to be able to design reports in Report Writer, and then just copy them into a Clarion report procedure? Actually, it can be done, and fairly easily.
   
Source for: A Class Wrapper for Brice Schagane's Menu Buttons
Date: 2004-03-26
Summary: Nik Johnson gets his copy of Tips & Techniques and quickly discovers a solution to his screen real estate problem: Brice Schagane's menu button. For easier re-use, Nik shows how to convert Brice's code into a class.
   
Source for: Validating Credit Card Numbers
Date: 2004-03-02
Summary: Credit card processing is a common requirement in application development. And before you submit a credit card number to your bank for processing, it helps to make sure it's a well-formed number. Abe Jimenez explains the code you need to do the job.
   
Source for: How To Stop Trashing The Template Registry
Date: 2004-03-02
Summary: How many times have you run a second instance of Clarion, without turning on multi-user development, only to have your registry trashed? In this article Danie de Beer describes a utility by Mark Goldberg that makes trashed registries a thing of the past.
   
Source for: Template Styles in Clarion 6
Date: 2004-02-27
Summary: When Clarion 6 first became available to Early Access Program participants, there were many changes to the templates, but there were also some significant changes to the template language. Russ Eggen looks at how to use these changes to improve the appearance of your templates, while maintaining backward compatibility.
   
Source for: Creating Derived ABC Classes With a Template
Date: 2004-02-27
Summary: In this article Harley Jones explains some of the behind-the-scenes magic that Clarion performs on ABC windows and controls, and how you can do the same with custom templates.
   
Source for: Auto-Complete Files And URLs With SHAutoComplete
Date: 2004-02-26
Summary: Ever wonder how you can add an auto-complete feature like that used in Internet Explorer to your applications? Carl Barnes shows how to use IE's code, via the SHAutoComplete API function.
   
Source for: Browse Greenbars in Clarion 6
Date: 2004-02-05
Summary: Giving a presentation on Clarion 6 can be a tricky thing, when the topic everyone wants to know about, in this case greenbars, is the one thing you haven't prepared. Under intense pressure and close scrutiny, Carl Barnes and Steve Parker discovered just how this new feature works.
   
Source for: Porting to the C6 Threading Model: The AutoLog Example Part 2
Date: 2004-01-22
Summary: Clarion C6 has gone gold and so it's time to start getting serious about porting applications. In this series of articles Carl Barnes looks at porting some of the C55 example applications to C6. Part 2.
   
Source for: Porting to the C6 Threading Model: The AutoLog Example
Date: 2004-01-16
Summary: Clarion C6 has gone gold and so it's time to start getting serious about porting applications. In this series of articles Carl Barnes looks at porting some of the C55 example applications to C6.
   
Source for: Accessing Version Resource Information
Date: 2004-01-13
Summary: It's often useful to know the version of a particular EXE or DLL your customer is using, and Windows EXEs and DLLs do have a standard format for version information. There are tools readily available to put this information in your Clarion apps, and now Brian McGinnis demonstrates how to extract that information at runtime.
   
Source for: Save and Restore Window Size and Location
Date: 2003-12-31
Summary: Nardus Swanevelder goes on a template-writing quest to blend window size and location saving with the IceTips Cowboy SQL Templates and Ingasoftplus's Easy Resize and Split templates.
   
Source for: Creating Utilities For MS SQL 2000
Date: 2003-12-31
Summary: Clarion's PROP:SQL is an often under-appreciated language statement. As Bernie Grosperrin shows, you can use PROP:SQL for lots of things, including creating SQL utilities for MSSQL. This task is made even easier with Dan Pressnell's clever "Query from Queue" mechanism.
   
Source for: A Simple Versions And Annotations Template
Date: 2003-12-05
Summary: Recently Ronald van Raaphorst realized he needed some kind of annotation system for his Clarion app. The result was this template that lets a developer record changes in any procedure, and print an overview of all annotations per procedure or application.
   
Source for: NAME() Becomes Irrelevant
Date: 2003-12-04
Summary: NAME has been an important attribute of the FILE statement for a long time. In Clarion 6, however, there is a new feature that makes PROP:NAME irrelevant in many situations, as Henry Plotkin shows.
   
Source for: Moving Applications to Oracle: RI And AutoNumbering Part 2
Date: 2003-11-28
Summary: Jon Waterhouse takes a detailed look at the differences between relational integrity and autonumbering in Topspeed databases and Oracle databases. Although specifically about Oracle, this series also contains useful general information about converting to SQL. Part 2.
   
Source for: The Windows API: Downloading Files Part 3
Date: 2003-11-28
Summary: The Windows API offers numerous benefits to Clarion developers, including performance improvements and productivity gains from leveraging existing, reliable code. In this series Veronica Chapman demonstrates how to use the Windows API to connect to the internet and download (and optionally expand) files. Conclusion.
   
Source for: Moving Applications to Oracle: RI And AutoNumbering Part 1
Date: 2003-11-21
Summary: Jon Waterhouse takes a detailed look at the differences between relational integrity and autonumbering in Topspeed databases and Oracle databases. Although specifically about Oracle, this series also contains useful general information about converting to SQL. Part 1.
   
Source for: The Windows API: Downloading Files Part 2
Date: 2003-11-21
Summary: The Windows API offers numerous benefits to Clarion developers, including performance improvements and productivity gains from leveraging existing, reliable code. In this series Veronica Chapman demonstrates how to use the Windows API to connect to the internet and download (and optionally expand) files. Part 2 of 3.
   
Source for: The Windows API: Downloading Files Part 1
Date: 2003-11-14
Summary: The Windows API offers numerous benefits to Clarion developers, including performance improvements and productivity gains from leveraging existing, reliable code. In this series Veronica Chapman demonstrates how to use the Windows API to connect to the internet and download files. Part 1 of 3.
   
Source for: Data Structures and Algorithms Part XXIV - Floyd's All Pairs Algorithm
Date: 2003-10-30
Summary: Alison Neal discuss Floyd's All Pairs algorithm, which provides the shortest path between all pairs of nodes in a graph.
   
Source for: Trees, Recursion, and Many to Many Checkboxes
Date: 2003-10-17
Summary: Most of the data you deal with probably fits nicely into a parent/child, relational data structure. But sometimes you have data that works better as a self-join, where data in one table relates back to other data in the same table. Randy Long shows how to use trees, recursion, and many-to-many checkboxes to manage this kind of data.
   
Source for: Data Structures and Algorithms Part XXIII - Dijkstra's Shortest Path Algorithm
Date: 2003-10-06
Summary: Have you ever needed to work out the shortest path between two locations? Alison Neal shows how to do this in Clarion, using Dijkstra's Shortest Path Algorithm
   
Source for: Translation, Clarion Style: Selected Topics
Date: 2003-09-18
Summary: Nardus Swanevelder continued his translation series with a look at screen design issues, third party applications, and changing languages at runtime.
   
Source for: Translation, Clarion Style: Runtime Issues
Date: 2003-09-18
Summary: Nardus Swanevelderl complete the runtime translation discussion with examples of loading translation strings from a database, and applying this translation to a multi-DLL application.
   
Source for: Translation, Clarion Style: Currencies And Measurement
Date: 2003-09-12
Summary: Nardus Swanevelder continues his series on translation with a template to convert currencies and measurements, and a brief look at dynamically created text, controls, and windows.
   
Source for: A Basic Editor For Text Fields: Conclusion
Date: 2003-09-11
Summary: Clarion's TEXT control is versatile and useful, but has next to no word processing capabilities. But as Tim Phillips shows, it's relatively easy to add capabilities like search/replace, block reformatting, and more. Part 2 of 2.
   
Source for: A Basic Editor For Text Fields: Introduction
Date: 2003-09-04
Summary: Clarion's TEXT control is versatile and useful, but has next to no word processing capabilities. But as Tim Phillips shows, it's relatively easy to add capabilities like search/replace, block reformatting, and more. Part 1 of 2.
   
Source for: Translation, Clarion Style
Date: 2003-08-13
Summary: Ever wonder how multi-language support really works in Clarion? In part 2 of this series, Nardus Swanevelder shows how to translate standard Clarion messages.
   
Source for: Data Structures and Algorithms Part XXII - Critical Path Analysis
Date: 2003-08-13
Summary: Alison Neal's algorithms series resumes this week in Clarion Magazine, with a discussion of critical path analysis software.
   
Source for: Translation, Clarion Style
Date: 2003-08-07
Summary: Ever wonder how multi-language support really works in Clarion? In part 1 of this series, Nardus Swanevelder shows how to add basic translation capabilities to you applications.
   
Source for: Breaking Reports On Computed Fields
Date: 2003-07-17
Summary: Henry Plotkin is assigned a new report, "Open invoices, aged by date." Only the Invoice file contains fields for invoice number, date, amount, previous balance, payments and debits. No "open" flag. No "age." Henry ponders how to filter, order and group the report records without having those fields at hand.
   
Source for: String Flinging Part 2
Date: 2003-07-15
Summary: What uses most of the memory in typical Clarion applications? Strings, most probably. And you may not realize that you're wasting a lot of memory by how you handle those strings. Jim Gambon digs into strings and comes up with some memory- and time-saving tips and techniques. Part 2 of 2.
   
Source for: String Flinging Part 1
Date: 2003-07-11
Summary: What uses most of the memory in typical Clarion applications? Strings, most probably. And you may not realize that you're wasting a lot of memory by how you handle those strings. Jim Gambon digs into strings and comes up with some memory- and time-saving tips and techniques. Part 1 of 2.
   
Source for: Clarion, COM, Soap, and HTTP
Date: 2003-07-10
Summary: Recently Shane Vincent wanted to add a no-cost solution to the credit card authorization process. His solution involved a couple of open source COM components, Jim Kane's COM interface generator, and a couple of Clarion wrapper classes.
   
Source for: A String To CString Converter
Date: 2003-06-26
Summary: Sometimes you need to pass CSTRINGs to a function, and it's inconvenient to create variables for the purpose - you just want to pass in string literals. But Clarion (at least through version C6 EA4-5) all literal strings are STRINGs. So how do you do it? With a class, of course.
   
Source for: Creating XML Files With The Clarion 6 DOM Parser
Date: 2003-06-26
Summary: Clarion 6 ships with class wrappers for the CenterPoint XML library, which includes SAX and DOM parsers. Although there is as yet no documentation for the Clarion class wrappers, they're actually quite easy to use. David Harms shows how to use the DOM classes to write an RSS XML file.
   
Source for: How to Display An Image In A ListBox Header (Part 2)
Date: 2003-06-25
Summary: Have you ever wished that you could place an image on a listbox header? In this article Randy Rogers explains how to use subclassing to place little triangles in the header, like those used in Microsoft Outlook to display a column's sort order. Part 2 of 2.
   
Source for: How to Display An Image In A ListBox Header (Part 1)
Date: 2003-06-23
Summary: Have you ever wished that you could place an image on a listbox header? In this article Randy Rogers explain the first of two techniques (that is, hacks) that he uses to place little triangles in the header, like those used in Microsoft Outlook to display a column's sort order. Part 1 of 2.
   
Source for: Clarion Magazine's RSS Feeds
Date: 2003-06-20
Summary: Wondering what those new XML icons are on the ClarionMag home page? They're RSS feeds, and in combination with an RSS reader they make it possible for you to get notification of articles and news items when they appear on the web site. No more waiting for the weekly update emails!
   
Source for: Creating An XML RSS Web Site Summary With Clarion 6 (Part 2)
Date: 2003-06-13
Summary: Ever wonder how easy or difficult it is to work with XML? Consider the RSS specification, which is used to create summaries of items on a web site. In this second of two parts, David Harms looks in detail at the code.
   
Source for: Creating An XML RSS Web Site Summary With Clarion 6 (Part 1)
Date: 2003-06-06
Summary: Ever wonder how easy or difficult it is to work with XML? Consider the RSS specification, which is used to create summaries of items on a web site. With relatively little work, you can create RSS files in Clarion, using some of the new XML capability in Clarion 6. In this installment, David Harms looks at the RSS specification and presents some Clarion source. Part 1 of 2.
   
Source for: A Tree In A Page Loaded Browse
Date: 2003-05-30
Summary: Clarion has a template for building a tree list control (RelTree). One of the disadvantages of this control is that the maximum tree level is fixed by the number of files you use in it. In this article, Ronald van Raaphorst outlines a simple idea for a non-level-limited, page loaded tree, using a standard browse control.
   
Source for: Veronica's Short History Of The Windows Operating Systems (Part 2)
Date: 2003-05-28
Summary: It is true that the Clarion environment tends to, or tries to, hide as much of Microsoft's OS as possible. This is good for beginners, but bad for the experienced programmer. Sooner or later beginners (if they don't become discouraged) gain a certain amount of experience and want more. In this series, Veronica Chapman surveys the history of the Windows operating system(s), and provides an introduction to Clarion's Windows API capabilities, including a nifty example app and an updated LIBMaker. Part 2 of 2.
   
Source for: Finding Source With Enhanced Templates
Date: 2003-05-23
Summary: Although templates are wonderful they can also be the source of great frustration. Something like a small change in the dictionary can create havoc when you try to compile the program associated with that dictionary, and it can be very difficult to locate the offending source. As Steffen Rasmussen shows, some template modifications can make finding that problem source code a lot easier.
   
Source for: Veronica's Short History Of The Windows Operating Systems (Part 1)
Date: 2003-05-22
Summary: It is true that the Clarion environment tends to, or tries to, hide as much of Microsoft's OS as possible. This is good for beginners, but bad for the experienced programmer. Sooner or later beginners (if they don't become discouraged) gain a certain amount of experience and want more. In this series, Veronica Chapman surveys the history of the Windows operating system(s), and provides an introduction to Clarion's Windows API capabilities. Part 1 of 2.
   
Source for: Mutexes: Serializing File Access
Date: 2003-04-04
Summary: Steve Parker finishes up his look at Clarion 6 synchronization objects with the mutex. Part 2 of 2
   
Source for: A Naıve Look at The Mutex
Date: 2003-04-03
Summary: Steve Parker finishes up his look at Clarion 6 synchronization objects with the mutex. Part 1 of 2
   
Source for: Demystifying C6 Threading (Part 3)
Date: 2003-03-28
Summary: Mutexes, semaphores, critical sections, reader/writer locks; all of these things are part of Clarion 6, and they all have to do with the new support for unlocking Clarion threads so they run like real operating system threads. Should you care? If you write any embedded code, yes, you should. Should you worry? That all depends on what kind of embedded code you write. Part 3 of 3.
   
Source for: My First Function Library
Date: 2003-03-21
Summary: If you've never created a function library, Alan Telford wants to talk to you. You will make your first function library. And yes, it will be important to you! You will enjoy it! You will remember it for life!
   
Source for: Post-mortem Debugging: How I stopped fearing the GPF
Date: 2003-03-14
Summary: Sometimes, when you're testing that almost completed application, it crashes. No rhyme or reason, and inspection of the last code changes reveal nothing out of place. Re-run and it crashes again. Where do you go? To the debugger for a quick post mortem. Russ Eggen shows how to track down those tricky GPFs.
   
Source for: Menu Buttons In Clarion
Date: 2003-03-11
Summary: If you've ever used Intuit's Quicken software, you will have seen Menu Buttons in action. Instead of a standard menu bar across the top of the window, Quicken uses what appear to be flat, transparent buttons, which display a popup menu when clicked. Brice Schagane shows how to get the same effect in a Clarion application.
   
Source for: Debugging Queues With Excel
Date: 2003-02-27
Summary: Like a lot of Clarion programmers, Alan Telford thinks queues are the greatest thing since sliced bread. But it isn't always easy viewing queue data when you're tracking down a queue data-related bug. To solve this problem, Alan created a procedure that makes it easy to export queue data to Excel, which is an excellent tool for viewing tabular data.
   
Source for: Data Structures and Algorithms Part XVI - The Huffman Compression Algorithm (Part 2)
Date: 2003-02-25
Summary: In her latest installment, Alison Neal discusses the Huffman compression algorithm, which is the same compression algorithm that is used by PkZip. The algorithm yields approximately 40% compression for text files. The test application included with the article reduces the provided test file from 20kb to 12kb in size, and then decompresses it back to its original state. Part 2 of 2.
   
Source for: Data Structures and Algorithms Part XVI - The Huffman Compression Algorithm (Part 1)
Date: 2003-02-21
Summary: In her latest installment, Alison Neal discusses the Huffman compression algorithm, which is the same compression algorithm that is used by PkZip. The algorithm yields approximately 40% compression for text files. The test application included with the article reduces the provided test file from 20kb to 12kb in size, and then decompresses it back to its original state. Part 1 of 2.
   
Source for: Interfaces Everywhere
Date: 2003-02-03
Summary: Some time ago Jim Kane created the OLETCL class to use COM objects with a VB-like syntax. OLETCL relied on a quirk in Clarion's COM and thread handling, but with Clarion 6's new threading model OLETCL will no longer work. That prompted Jim to finish a COM interface generator he'd started many years earlier.
   
Source for: Data Structures and Algorithms Part XV - Priority Q
Date: 2003-01-30
Summary: In this second of two parts, Alison Neal continues her examination of traditional (i.e. not Clarion) Queues. This week's subject: the Priority Queue.
   
Source for: Getting Dynamic With Report Writer
Date: 2003-01-30
Summary: This action packed episode picks up where Ben Brady ("Integrating Clarion Report Writer Into Your Applications") leaves off. Ben showed how to integrate the Report Writer engine into standard Clarion apps. In this article, Dr. Parker shows how to add more flexibility to the process of using Report Writer from an app.
   
Source for: A Calculator Class And Template
Date: 2003-01-24
Summary: Nardus Swanevelder's search for a free XP-like Clarion calculator was fruitless, but he found some free Clarion 4 source code. Nardus shows he he converted that source into a class and templates.
   
Source for: Debug De Program With Debuger
Date: 2003-01-23
Summary: Looking for another way to debug your programs? Skip Williams' Debuger class (yes, that's how it's spelled) logs system messages, detects duplicate messages, and will even conditionally invoke the Clarion debugger.
   
Source for: Integrating The Clarion Report Writer Into Your Applications (Part 2)
Date: 2003-01-16
Summary: The Clarion Report Writer is a great tool for creating standalone or ad-hoc reports, and is not only for developers, but for end users armed with a copy of the Clarion Report Writer and enough technical savvy about your database schema to use the tool as well. And as Ben Brady shows, it's easy to integrate Report Writer reports into your application. Part 2 of 2.
   
Source for: Integrating The Clarion Report Writer Into Your Applications (Part 1)
Date: 2003-01-06
Summary: The Clarion Report Writer is a great tool for creating standalone or ad-hoc reports, and is not only for developers, but for end users armed with a copy of the Clarion Report Writer and enough technical savvy about your database schema to use the tool as well. And as Ben Brady shows, it's easy to integrate Report Writer reports into your application.
   
Source for: Calling A Clarion Application With PHP
Date: 2003-01-06
Summary: PHP is a hugely popular scripting language used mainly for web development; Clarion is a Windows language used mostly for business software development. What do they have to do with each other? In this article, Ville Vahtera shows how to create a Clarion application which can be executed from, and have its output captured by, PHP.
   
Source for: DNA for Clarion: Manipulating Browse Cells With A VLBPROC (Part 2)
Date: 2002-12-20
Summary: Virtual List Boxes (VLBs) are one of the least-understood and most under-appreciated features of the Clarion language. In this two-parter, Stephen Bottomley explains VLBs, and introduces a class that you can use standalone, or to control the display of an existing browse. Part 2 of 2.
   
Source for: Web Validation From Your Clarion App Using NetTalk
Date: 2002-12-20
Summary: Recently, Mark Riffey had a need to for one of my Clarion programs to access a SQL database, hosted on the web, in order to determine if the customer's access to a service had expired. It was a fairly simple task using CapeSoft NetTalk, as Mark demonstrates.
   
Source for: CLASSy ASCII File Importing
Date: 2002-12-20
Summary: Earlier this month Steve Parker wrote an article on importing ASCII files into a database using Konrad Byers' ASCII file class. In this article, Steve describes a class by Dave Harms that makes fixed record length ASCII importing configurable at runtime.
   
Source for: Data Structures and Algorithms Part XIII - Trie Hard
Date: 2002-12-19
Summary: In her last installment, Alison Neal introduced a data structure called the Trie, which is used for storing strings in computer memory. In this article Alison continues her discussion of the Trie, and covers some of the other methods that are contained in the Trie Class, namely the Search, Print and Kill methods.
   
Source for: DNA for Clarion: Manipulating Browse Cells With A VLBPROC (Part 1)
Date: 2002-12-19
Summary: Virtual List Boxes (VLBs) are one of the least-understood and most under-appreciated features of the Clarion language. In this two-parter, Stephen Bottomley explains VLBs, and introduces a class that you can use standalone, or to control the display of an existing browse. Part 1 of 2.
   
Source for: Parsing Strings In ASCII Files
Date: 2002-12-05
Summary: Konrad Byers' recent article on a class for accessing and processing ASCII files really spoke to Steve Parker. In this article, Dr. Parker combines that class with some string parsing code to extract field data from an ASCII file record.
   
Source for: Data Structures and Algorithms Part XII - Trie This
Date: 2002-12-04
Summary: In this article Alison Neal introduces a data structure known as the Trie, which is basically a type of general tree, containing words rather than numbers. The Trie is an immensely useful data structure when storing strings in memory. The Trie has been used for such things as computerized Boggle and Yahtzee games, and file compression algorithms.
   
Source for: Clarion SOAP Revisited
Date: 2002-11-28
Summary: The Simple Object Access Protocol (SOAP) has been covered before in Clarion Magazine, but only from the Clarion end. In this article, Radventure's Erik Pepping shows how to create the server in C# and the client in Clarion.
   
Source for: Determining Gender With Clarion (Part 2)
Date: 2002-11-19
Summary: Inspiration can come from the strangest sources. An automatic complaint letter generator sends Geoff Robinson on a quest to create a gender guessing function using regular expressions. Part 2 of 2.
   
Source for: Determining Gender With Clarion (Part 1)
Date: 2002-11-14
Summary: Inspiration can come from the strangest sources. An automatic complaint letter generator sends Geoff Robinson on a quest to create a gender guessing function using regular expressions. Part 1 of 2.
   
Source for: Quick COM Using A Windows Script Component
Date: 2002-11-13
Summary: Everyone knows that Clarion can do COM, but did you know that you can interface a Clarion program toCOM? Wayne Price shows how to use a Windows Script Component to create a Clarion program that's usable by any programming language that can call COM objects.
   
Source for: A Class For The ASCIIng
Date: 2002-11-08
Summary: ASCII files are commonplace in programming, but their use in Clarion is generally more complicated than in other languages because Clarion can only do ASCII file I/O via an ASCII file driver declared file. Declaring such a file can become quite a nuisance, and breaks Konrad Byers' golden rule of never having to program the same thing twice. Enter the any ASCII file class.
   
Source for: Data Structures and Algorithms Part XI - Binary Search Tree Indexing
Date: 2002-11-08
Summary: Have you ever wanted to key index a text file so that you can fetch a single record directly? In this article Alison Neal shows how you can do this using a Binary Search Tree.
   
Source for: Receiving Email With MAPI (Part 2)
Date: 2002-10-30
Summary: MAPI email has been discussed in previous Clarion Magazine articles, but for the most part these articles cover sending email. In this series, Konrad Byers shows how to receive email with MAPI. Part 2 of 2.
   
Source for: Data Structures And Algorithms Part X - Going Out Of Your Tree?
Date: 2002-10-24
Summary: In the previous installment in this series, Alison Neal discussed the AVL Tree or Height Balanced Tree; in this article Alison continues her discussion of the AVL Tree and shows how to delete an individual item while still maintaining the sub tree heights.
   
Source for: Receiving Email With MAPI (Part 1)
Date: 2002-10-23
Summary: MAPI email has been discussed in previous Clarion Magazine articles, but for the most part these articles cover sending email. In this two-part series, Konrad Byers shows how to receive email with MAPI.
   
Source for: Clarion Challenge Results: ContainsMatch
Date: 2002-10-17
Summary: We received a record number of entries for the Clarion Challenge to create a ContainsMatch function. Gordon Smith has analyzed and benchmarked the code, and provides illuminating commentary. And yes, we do have a winner.
   
Source for: How Not To Ignore The Form Template
Date: 2002-10-04
Summary: In the previous episode, Steve Parker began "ignoring" the Form template, having previously ignored the report and browse templates. He stated that while he ignores the Form templateıs prompts the most, he ignores the Form template the least. In this final installment in the series, Steve explores what really matters about forms.
   
Source for: A Template For Exporting Classes
Date: 2002-09-20
Summary: Lee White has previously written about creating a template wrapper for classes. That template worked fine, but only in single EXE applications. What about multi-DLL apps? This time around Lee shows how to create a wrapper that handles the tricky business of exporting, and handling exported, classes.
   
Source for: A Tool For Understanding Template Symbols
Date: 2002-09-19
Summary: To be an effective template programmer, you need to know what values various template symbols contain at code generation time. Steffen Rasmussen presents a code template that you insert at any embed point, and which prints out all (or selected) currently available template symbol values.
   
Source for: TopSpeed INI Files
Date: 2002-09-13
Summary: INI files are handy, but not always the best way to store initialization information in an already database-enabled application. As it turns out, it's not that difficult to use TPS (or other database files) as drop-in replacements for text INI files in ABC applications. In this article Tim Phillips explains how you can extend the ABC IniClass with just 25 lines of code, and drop in your own INI file handler.
   
Source for: OLE Drag & Drop
Date: 2002-09-06
Summary: If you want to drag a URL from Internet Explorer and drop it onto, say, a Clarion text box, regular drag and drop won't do the trick. You need OLE Drag and Drop. Clarion Magazine's resident master of all things OLE, Jim Kane, shows how it's done.
   
Source for: Data Structures and Algorithms Part VII - Up a Tree
Date: 2002-08-29
Summary: In this installment of this series on data structures and algorithms, Alison Neal talks about the Tree data structure (which is not the same thing as a Clarion tree control).
   
Source for: Adding Page Of Pages To A Clarion Report
Date: 2002-08-16
Summary: For many years now it has been difficult to add a Page of Pages variable to a Clarion report. It has also been difficult to print more than one copy of a report without clicking on the print/report button twice, or using the printer properties to specify multiple copies. Inspired by Bruce Johnson's ABC book, and some conversations at ETC III, Nardus Swanevelder finds a solution to both problems.
   
Source for: Class Wrapper Templates The Easy Way
Date: 2002-08-15
Summary: In earlier releases of ABC, class wrapper templates were difficult to create. After creating his first class, Lee White, inveterate hand coder and template writer, went searching for a way to create a template wrapper for that class. What he found was a pleasant surprise.
   
Source for: Finding Field Names
Date: 2002-08-14
Summary: Ever find yourself looking through generated file declarations for certain fields? Here's a quick template by Andrew Guidroz that will help.
   
Source for: Custom Queue Sorting
Date: 2002-07-24
Summary: Clarion queues have two basic sorting methods built in - numeric, and alphabetical. But there are times when neither of those will suffice. Gordon Smith shows how to implement a custom queue sorting procedure.
   
Source for: A Single Browse For Multiple Lookups
Date: 2002-07-05
Summary: There have been a few threads in the newsgroups lately regarding techniques for handling a multitude of lookup tables in an application. Randy Rogers recently faced this situation, and came up with an efficient solution.
   
Source for: Creating A Dynamic Option Box
Date: 2002-07-05
Summary: Creating an option box is straightforward: select the option box, populate the radio buttons, compile and run. But users often want changes to option boxes that require a recompile. Steffen Rasmussen offers up a dynamically configurable option box, based on a list control.
   
Source for: The RanDum Phrase Generator
Date: 2002-06-21
Summary: Hereıs a neat little program by Lee White that generates random phrases, suitable for security applications such as automatically generated passwords.
   
Source for: The Checkbox Class Performance Upgrade
Date: 2002-06-20
Summary: Last year David Harms wrote an article about using browse checkboxes to manage many-to-many relationships. Faced with using this code on a remote database via an Intenet connection, he found the peformance unacceptably slow. This redesigned class dramatically reduces network traffic.
   
Source for: Interfacing With An Interface
Date: 2002-06-12
Summary: Interfaces are becoming increasingly important in the evolution of ABC. In this article, Phil Will shows how to implement the WindowComponent interface to make the currently selected control more visible to the user.
   
Source for: Positioning List Box Totals
Date: 2002-06-11
Summary: Sometimes you'll want to place total fields below list boxes, and in some cases those totals need to be positioned exactly below a column. This is easy if the user doesn't resize any columns, but what if you do allow resizing? Brice Schagane shows how to align the total fields with the columns at runtime.
   
Source for: Data Structures and Algorithms Part II - The List
Date: 2002-05-17
Summary: How many times have you been asked to write a list? Lists are everywhere: there are shopping lists, to do lists, lists of people's contact details, and lists of appointments. The List is so pervasive and so valuable that many people have spent many years discovering how to effectively represent this structure in computer memory with the greatest efficiency.
   
Source for: Look Out, It's Outlook! (Part 2)
Date: 2002-05-14
Summary: The subject of interfacing with MS Outlook comes up regularly on the newsgroup. Mark Riffey takes a second look at his Outlook code, and discovers unexpected help in MS Word. Part 2 of 2.
   
Source for: Look Out, It's Outlook! (Part 1)
Date: 2002-05-09
Summary: The subject of interfacing with MS Outlook comes up regularly on the newsgroup. Mark Riffey takes a second look at his Outlook code, and discovers unexpected help in MS Word. Part 1 of 2.
   
Source for: Accessing TPS Files Via ASP
Date: 2002-05-08
Summary: In this article Brian Staff provides an introduction to Active Server Pages, or ASP, for Clarion developers. With ASP you can use the TopSpeed ODBC driver to display a TPS file (or any ODBC compliant data) in a browser.
   
Source for: Required Fields Times Two
Date: 2002-04-26
Summary: A lot has been written lately in Clarion Magazine about validating required fields. Carl Barnes validates the notion that there's no such thing as too much Clarion knowledge, and lays out his approach to required field handling.
   
Source for: It's an XML World!
Date: 2002-04-25
Summary: XML is everywhere, as Jim Kane is beginning to see. In this article Jim shows how to use the MS DOM XML parser to manage XML documents.
   
Source for: Data Structures and Algorithms Part I: The Dynamic Stack
Date: 2002-04-19
Summary: On the newsgroups it happens time and time again: a Clarion newbie asks: "How do I implement a Tree in Clarion?" or "How do I implement a List in Clarion?" These aren't questions about tree controls or list boxes; they're about established, standard data structures. Here is the first article in a series by Alison Neal outlining how to implement standard data structures and algorithms in Clarion.
   
Source for: OCX Controls: Web Browser, Media Player, and pcAnywhere
Date: 2002-04-11
Summary: OCXs are a quick and sometimes easy way to add a lot of functionality to your applications. Peter Rabolt shows how he used web browser, media player, and remote control OCXs to beef up one of his apps.
   
Source for: Secondary Forms (Part 2)
Date: 2002-03-20
Summary: Sometimes there are too many fields to place on a single window. Sometimes fields can be grouped according to a logical division of data types. Sometimes, spreading fields so that not all of them are displayed simultaneously makes the data easier to digest. Sometimes the user wants multiple screens and sometimes it just looks better to use multiple pages to display data.
   
Source for: Secondary Forms (Part 1)
Date: 2002-03-15
Summary: Sometimes there are too many fields to place on a single window. Sometimes fields can be grouped according to a logical division of data types. Sometimes, spreading fields so that not all of them are displayed simultaneously makes the data easier to digest. Sometimes the user wants multiple screens and sometimes it just looks better to use multiple pages to display data.
   
Source for: Using Real Icons In The Listbox Header - Part 2
Date: 2002-02-26
Summary: For quite some time Steffen Rasmussen has been working with the idea of sorting listboxes by clicking on the header, and showing the sort order with an icon. His previous solution (described in Clarion Magazine) used characters in the header to show sort orders; in this series, Steffen shows how to use real icons via buttons. Part 2 of 3.
   
Source for: Using Real Icons In The Listbox Header - Part 1
Date: 2002-02-22
Summary: For quite some time Steffen Rasmussen has been working with the idea of sorting listboxes by clicking on the header, and showing the sort order with an icon. His previous solution (described in Clarion Magazine) used characters in the header to show sort orders; in this series, Steffen shows how to use real icons via buttons. Part 1 of 3.
   
Source for: The CASE Statement Revisited
Date: 2002-02-19
Summary: When you have complex program logic, nested IF statements can easily get out of hand. Brian Staff finds another way using a non-traditional CASE statement syntax.
   
Source for: Running Totals: A Reader's Perspective
Date: 2002-02-14
Summary: Steffen Rasmussen revisits Steve Parker's article on Running Totals, and contributes a template.
   
Source for: Using KEYSTATE For Backdoors And Other Tricks
Date: 2002-02-01
Summary: The Clarion KEYSTATE function returns the status of the "shift type" keys (Shift, Ctrl, Alt), the lock keys (Caps Lock, Num Lock, Scroll Lock), and the Insert key (overwrite or insert). It might sound like KEYSTATE isnıt good for much more than displaying information on the status bar, but in fact this function is a great tool for detecting unusual keystroke combinations (including when the numeric keypad has been used), which you can use to implement hidden features in your applications.
   
Source for: Getting A Handle On The System Tray
Date: 2002-01-30
Summary: One main benefit of Windows programming is being able to have multiple applications open at once. The problem with this is that if you have ten programs active at once, you have ten programs cluttering up your task bar, and ten icons to Alt-Tab through to land on your desired application. So - the system tray to the rescue! This article by James Cooke (not Gordon Smith, as earlier indicated - my apologies James! ed.) covers the basic steps required for parking an app in the system tray, and responding to events on that icon.
   
Source for: Interfacing With C++ Part 2
Date: 2002-01-21
Summary: In this second of two parts, Gordon Smith concludes his demonstration of how Clarion interfaces and C++ abstract base classes can be freely interchanged between Clarion, TopSpeed C++ and Microsoft Visual C++.
   
Source for: Interfacing With C++ Part 1
Date: 2002-01-18
Summary: This article demonstrates how Clarion interfaces and C++ abstract base classes can be freely interchanged between Clarion, TopSpeed C++ and Microsoft Visual C++. Not only does this provide a convenient conduit for mixed language development, it also allows objects to be shared across languages. In practice it is possible to build a very powerful C++ library by simply wrapping existing or third party code within a Clarion compatible interface. Part 1 of 2.
   
Source for: Write A Word Processor In Five Minutes
Date: 2002-01-17
Summary: Inspired by a 30 page tutorial on creating a text editor in Delphi, Vince Du Beau decided to see how he could improve on the example in Clarion. The result: a word processor in five minutes.
   
Source for: Handling COM Events - Part 2
Date: 2002-01-16
Summary: The one area of COM that the Clarion OLE control is particularly weak in is receiving events. When the OLE control works, it works very well and is very simple to use. However, more often than not, it does not work, and in a case like that you'll need Jim Kane's OLE event code. Read on. Part 2 of 2.
   
Source for: Handling COM Events - Part 1
Date: 2002-01-11
Summary: The one area of COM that the Clarion OLE control is particularly weak in is receiving events. When the OLE control works, it works very well and is very simple to use. However, more often than not, it does not work, and in a case like that you'll need Jim Kane's OLE event code. Read on. Part 1 of 2.
   
Source for: The Clarion Advisor: Sizing Windows
Date: 2001-11-28
Summary: Clarion is a great tool for writing custom apps. And every once in a while, Andrew Guidroz II has a requirement from a customer for a window that is as unique as the individualıs desktop. But how to know what size to make the window?
   
Source for: Checkboxes For Many-to-Many Relationships: The Source Code
Date: 2001-11-15
Summary: There are a lot of ways to show many-to-many relationships between two tables, and some take more work on the part of the user than others. This week Dave Harms explores the inner workings of a derived browse class to manage these relationships.
   
Source for: Checkboxes For Many-to-Many Relationships
Date: 2001-11-09
Summary: There are a lot of ways to show many-to-many relationships between two tables, and some take more work on the part of the user than others. Dave Harms shows how to create a linking record between tables with a single mouse click.
   
Source for: Optimizing DLL Loading - Rebasing Your DLLs
Date: 2001-11-06
Summary: If you create DLLs with Clarion, then you'll definitely want to read this series of articles. By default, Clarion 32 bit DLLs load more slowly than they need to, and are not sharable between processes. In this installment Carl Barnes shows how to easily rebase your own application's DLLs.
   
Source for: Controlling Printers With DevMode (Part 2)
Date: 2001-10-30
Summary: A customer's request to save printer bin selections sent Jim Gambon off on an exploration of the printer DevMode structure. In this two part series Jim explains how to create a 16/32 bit DevMode that really works, and how to use it to get full control of your printers. Part 2.
   
Source for: Controlling Printers With DevMode (Part 1)
Date: 2001-10-24
Summary: A customer's request to save printer bin selections sent Jim Gambon off on an exploration of the printer DevMode structure. In this two part series Jim explains how to create a 16/32 bit DevMode that really works, and how to use it to get full control of your printers.
   
Source for: Report Redirection
Date: 2001-09-25
Summary: This week Steve Parker takes on report redirection. Although there are excellent third party products available (and Dr. Parker isn't shy about making recommendations), there's something to be learned by reinventing the wheel.
   
Source for: Designing Crosstab Reports In Clarion (Part 2)
Date: 2001-09-13
Summary: One of the more common and useful reports is the crosstab report, which can be defined as any report that summarizes data in a two dimensional grid, such as breaking down sales data into monthly or quarterly sales. Other report writing tools often supply a wizard to guide the user through the process of creating this type of report. Clarion, however leaves the programmer to his or her own devices to create this standard summary. Part 2 of 2.
   
Source for: Designing Crosstab Reports In Clarion (Part 1)
Date: 2001-09-11
Summary: One of the more common and useful reports is the crosstab report, which can be defined as any report that summarizes data in a two dimensional grid, such as breaking down sales data into monthly or quarterly sales. Other report writing tools often supply a wizard to guide the user through the process of creating this type of report. Clarion, however leaves the programmer to his or her own devices to create this standard summary. Part 1 of 2.
   
Source for: Normal Files, Normal Display
Date: 2001-09-10
Summary: One of the basic concepts of normalization is that every record in a file or row in a SQL table should be uniquely identified. Steve Parker addresses two aspects of unique IDs: the generic motivation for using them, and the difficulties they can present when displayed to the end user.
   
Source for: Finding A File Using Template Code
Date: 2001-08-31
Summary: The Clarion template language is more powerful than most developers realize. In this article Kevin Erskine hows how he wrote template code to locate and parse the Clarion redirection file so he could parse his own class includes at generation time.
   
Source for: Migrating The Inventory Application To SQL Server (Part 3)
Date: 2001-08-28
Summary: In this three part series, Ayo Ogundahunsi takes the Clarion example Inventory application from a flat file TPS database to a MS SQL database, focusing on portability, business rules, relational integrity, and Clarion as an interface tool.
   
Source for: Running Totals
Date: 2001-08-21
Summary: Running totals come in two flavors. The first is the constant updating of an account balance in real time, such as a running total in a checkbook application. The other kind is, well, the subject of this 100th article by Steve Parker.
   
Source for: Migrating The Inventory Application To SQL Server (Part 2)
Date: 2001-08-20
Summary: In this three part series, Ayo Ogundahunsi takes the Clarion example Inventory application from a flat file TPS database to a MS SQL database, focusing on portability, business rules, relational integrity, and Clarion as an interface tool.
   
Source for: Migrating The Inventory Application To SQL Server (Part 1)
Date: 2001-08-15
Summary: In this three part series, Ayo Ogundahunsi takes the Clarion example Inventory application from a flat file TPS database to a MS SQL database, focusing on portability, business rules, relational integrity, and Clarion as an interface tool.
   
Source for: Internal Help - An Alternative To Commercial Help Systems
Date: 2001-08-09
Summary: At its most basic, application Help is just a display of a specific block of text when a button is pressed. This is a lot like displaying the memo of a record upon demand, something that Clarion can do easily. That was the starting point for Tim Philips' integrated 'internal' help system.
   
Source for: When Clarion COM Will Not Do
Date: 2001-07-24
Summary: Jim Kane reviews some COM fundamentals, and then shows how you can take matters into your own hands and extend Clarionıs COM abilities for those times where Clarion's native COM will not do what you want.
   
Source for: Recovering Deleted Records
Date: 2001-07-19
Summary: Fans of the old Clarion (DAT) file format know that unless you use the RECLAIM attribute, deleted records still exist in the data file. That isn't the case for most other drivers. Here's how to make records recoverable, using two new methods in Clarion 5.5.
   
Source for: "Sometimes" Lookups
Date: 2001-07-06
Summary: Clarion's ability to validate data with lookups is great, but what happens when you want to only do the lookup sometimes? Steve Parker tells all.
   
Source for: Using MATCH In Filters and Regular Expressions
Date: 2001-07-03
Summary: Filters for reports and browses seem to get increasingly complicated over time. In this article Carl Barnes show a trick you can do with MATCH() that will let you create more powerful filters, and which do not require any more code than a simple INSTRING() but can search for multiple substrings.
   
Source for: Creating #AT Statements The Easy Way
Date: 2001-06-29
Summary: Writing templates can be tricky, especially when it comes to creating #AT statements that correspond to ABC virtual method embeds. Here's a template that makes that task easy.
   
Source for: Extending ABC's Edit In Place - Part 2
Date: 2001-06-22
Summary: Russ Eggen has heard it all when it comes to Edit In Place (EIP). Well, here's a dirty little secret: ABC's EIP features are fully functional. Part 2 of 2.
   
Source for: Extending ABC's Edit In Place - Part 1
Date: 2001-06-15
Summary: Russ Eggen has heard it all when it comes to Edit In Place (EIP). Well, here's a dirty little secret: ABC's EIP features are fully functional. Part 1 of 2.
   
Source for: Reading Tables With ADO
Date: 2001-05-21
Summary: Have you ever wanted to write a generalized utility to work with a data file which may exist on more than one backend database? Do you need a utility to handle a file when you don't have/or want a DCT layout? Have you ever wanted to use ADO (ActiveX Data Objects) in Clarion as a standard way of managing your data? Here's how to get started.
   
Source for: Creating ODBC Data Sources At Runtime
Date: 2001-05-09
Summary: One of the drivers that comes with Clarion is the ODBC driver. Although Clarion deals with most of the problems of translating your file access code (e.g. OPEN, CLOSE, NEXT) into calls to the particular ODBC driver that looks after your data file, there is one area where Clarion ignores a potentially useful set of features of the ODBC design. These are the administration functions, which are required before you can access any data source through ODBC.
   
Source for: Replicating IDLE: All Quiet on the Keyboard?
Date: 2001-05-03
Summary: Needing to have two inactivity timers running at the same time, Steve Parker goes in search of an IDLE equivalent.
   
Source for: Clarion and Multi-Edit: Together At Last
Date: 2001-04-24
Summary: Clarion's own source code editor, although functional, isn't as feature-rich as some other programmers' editors, like American Cybernetics' Multi-Edit. Multi-Edit integrates with any popular programming tools, and as Vince Du Beau explains, you can use Multi-Edit with Clarion too.
   
Source for: Web Splash Screens
Date: 2001-03-20
Summary: It's common for a Windows application to need to open a browser window to display a web page. The easy way to do that is by passing a URL to ShellExecute(), but as Carl Barnes shows there are a few tricks you can use to make ShellExecute even more productive.
   
Source for: The Clarion Challenge Results: Useless Tab Text
Date: 2001-03-14
Summary: Several weeks ago I tried to plumb the meaning of inverted text on sheet tabs, and in the process came up with a small but useless application that sent tabs scurrying around all four sides of a sheet. I posted my code and challenged ClarionMag readers to fix a glaring bug in the code, write the code more compactly, and finally to come up with a real application for inverted tab text.
   
Source for: COM: Getting Easier By The Minute
(Part 3 of 3)
Date: 2001-02-22
Summary: COM? Easy? Well, easier, at least. In this three-parter, Jim Kane, Clarion Magazine's resident guru of Microsoft component object technology, shows how to call COM objects with the new COM-compatible INTERFACE in Clarion 5.5. As Jim says, if VB programmers can use COM, so can you!
   
Source for: COM: Getting Easier By The Minute
(Part 2 of 3)
Date: 2001-02-13
Summary: Easy? Well, easier, at least. In this three-parter, Jim Kane, Clarion Magazine's resident guru of Microsoft component object technology, shows how to call COM objects with the new COM-compatible INTERFACE in Clarion 5.5. As Jim says, if VB programmers can use COM, so can you!
   
Source for: COM: Getting Easier By The Minute
(Part 1 of 3)
Date: 2001-02-06
Summary: COM? Easy? Well, easier, at least. In this three-parter, Jim Kane, Clarion Magazine's resident guru of Microsoft component object technology, shows how to call COM objects with the new COM-compatible INTERFACE in Clarion 5.5. As Jim says, if VB programmers can use COM, so can you!
   
Source for: Give It a Nudge: Adjusting Report Position at Runtime
Date: 2000-10-31
Summary: As good as printers now are, there are inevitable differences between brands and models that make it difficult to consistently print within the bounds of the printable area. Lee White and Steve Parker have the answer: Give that report a nudge.
   
Source for: An Introduction To Writing Templates: Part 2
Date: 2000-10-17
Summary: Writing templates is easier than you think; John Morter explains his borrow-and-adapt approach to becoming productive quickly. Part 2 of 2.
   
Source for: An Introduction To Writing Templates: Part 1
Date: 2000-10-10
Summary: Writing templates is easier than you think; John Morter explains his borrow-and-adapt approach to becoming productive quickly. Part 1 of 2.
   
Source for: The Nuts And Bolts Of Passing Parameters: Part 2
Date: 2000-09-15
Summary: Any time you divide a program up into procedures, you need a way for those procedures to communicate. In this two part article, James Cooke explores the many facets of passing parameters.
   
Source for: The Nuts And Bolts Of Passing Parameters: Part 1
Date: 2000-09-12
Summary: Any time you divide a program up into procedures, you need a way for those procedures to communicate. In this two part article, James Cooke explores the many facets of passing parameters.
   
Source for: Creating An MS OutLook-Style Menu In Clarion
Date: 2000-08-29
Summary: Microsoft Outlook uses an innovative menu style thatıs become quite popular. Now Steffen Rasmussen shows how to create the same style of menu in a Clarion application.
   
Source for: Five Rules for Managing Complexity: Part 1
Date: 2000-08-22
Summary: Tom Ruby kicks off a five part series on managing application complexity with a rule about repeating fields.
   
Source for: Please Mr. Postman: Calling External Functions By Address
Date: 2000-07-05
Summary: Steve Bottomley explains how to call an external procedure by address when the procedure isn't exported from the DLL.
   
Source for: Cloning List Boxes Part 2
Date: 2000-04-25
Summary: There are many occasions when it is useful to have list boxes that are clones of each other. Jon Waterhouse updates a previous Clarion Online article with a new template and generalized classes. Part 2 of 2.
   
Source for: Cloning List Boxes Part 1
Date: 2000-04-18
Summary: There are many occasions when it is useful to have list boxes that are clones of each other. Jon Waterhouse updates a previous Clarion Online article with a new template and generalized classes. Part 1 of 2.
   
Source for: Doodling Bitmaps
Date: 2000-04-04
Summary: Clarion does a reasonable job of handing graphics, but sometimes you need a bit more horsepower.
   
Source for: Subclassing With A Twist
Date: 2000-03-28
Summary: Subclassing doesn't always mean OOP - sometimes it means intercepting Windows messages to do things Clarion wouldn't otherwise let you do.
   
Source for: Edit-In-Place:Lights, Camera, Action...Take Two, Part Two!
Date: 2000-02-15
Summary: There's more than one way to add edit-in-place to a browse. James Cooke lays the groundwork for making a form look like EIP. Part 2 of 2.
   
Source for: Edit-In-Place:Lights, Camera, Action...Take Two!
Date: 2000-02-08
Summary: There's more than one way to add edit-in-place to a browse. James Cooke lays the groundwork for making a form look like EIP. Part 1 of 2.
   
Source for: Skeleton Basics III: Colors and Backgrounds
Date: 2000-01-25
Summary: When you think of customizing a web page, colors and background images are probably among the first things that come to mind. In his 75th Clarion article (not all for Clarion Magazine), Steve Parker explains how it's done.
   
Source for: WebBuilder Skeleton Basics II:ıLogos and Fonts
Date: 2000-01-18
Summary: In Part 2 of his weekly WebBuilder series Steve Parker explains how to control fonts and logo placement.
   
Source for: A Class Wrapper For Files
Date: 1999-12-21
Summary: Imagine you've been asked to write just one piece of cost estimating code that can be used on several quite different sets of files. Jim Kane shows how it's done.
   
Source for: Edit-In-Place CheckBoxes Done Right
Date: 1999-12-21
Summary: ABC has a lot of edit-in-place functionality, but EIP check boxes are a bit quirky. Pete Halsted shows how make your browse's checkboxes look and act they way they should.
   

Printer-friendly version