Source Code Library Goes Gold!

Printer-friendly version

Advertisement

Articles Wanted

Write for Clarion Magazine

Clarion Magazine is looking for writers! If you have written some code of interest to Clarion developers, or have experience or expertise in a Clarion-related area, consider writing an article. You don't need prior writing experience, just a willingness to learn and share your knowledge with others.

Learn More

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 ema