We have four winners this month. The entries were so good in both the Delphi games and the Delphi Component Editor area that we have decided to give awards to both the first and second place winners. There was one winner in the C++ games area. All five of these winners can take their pick of a pro version of Delphi 5, CBuilder 5, or JBuilder 3.0. You can download the source to all these components from this page.
The entries in this area were consistently excellent. The top two entries were both so good that I am not going to try to pick a winner between them, and instead I'll say that Robert Clark and Andrew Twiddle will tie for the first place entry.
Download Robert Clark's submission OmniProp.zip
Robert Clark provider the ability to see all the properties of an embedded component, as shown in Figure1. This is a powerful technique, which required some very clever advanced VCL programming. He allows you to add several customized variations to this technology, such as the ability to limit the number of properties shown, and the ability to place them in various different order. Special credit goes to Robert for his entertaining tutorial for his components, which appears in OmniTest.pas.
Figure 1: An ImageList has been added as a subcomponent to this Delphi TDrawGrid. Note that Robert's excellent code allows you to see all the subproperties of the child component.
Andrew Tweddle submitted RADCmpEd.zip
Andrew Tweddle also provided an entry that allows you to do wondrous things with Delphi. First, he provides a set of tools for helping you to automatically create property and component editors. Then he goes on to create a component editor that will allow you to automatically apply a set of properties to a particular component. For instance, it is very common to drop a TPanel on a form, and then perform a set of standard actions on the TPanel, such as blanking out the component name, setting the Align property to alTop, and changing the inner and outer bevels. Andrew's component editor allows you to create custom scripts for TPanel components that will automatically perform all this actions. One of the dialogs seen in the process of applying these scripts is shown in Figure 2. Andrew's technology can be easily applied to any component, and is accessible via menus that are integrated into the Delphi environment.
Figure 2: One of the dialogs you see when automatically applying a personalized list of attributes to a component.
As I said earlier, all of the entries in this area were quite remarkable. However, I think a special mention should go out to Anthony walker, for his excellent ImageProperty editor. His tool provides a simple way to keep libraries of images that you can easily pop into image lists. This can smooth your way when you are engaged in the long, and frustrating process of searching all over your hard disks for bitmaps to place in your image lists.
As in the property editor section, there are two winners this month. All the entries were good, but these two stand out.
StephenWilliams mazer.zip (If a res file is missing, just delete the reference to it.)
The winner in the Delphi game area was Stephen Williams, for his excellent 3D-like maze. This maze allows you to pick the number of columns and rows you to display. Furthermore, you can have multiple layers, and then climb up and down between the layers when searching through the maze. A final attribute of this entry is the ability to save the mazes to disk.

Figure 3: The excellent maze generator from Stephen Williams provides several advanced options and an attractive display.
Download Sergey Prilutsky's submission spmaze.zip.
Second Place in the game contest goes to Sergey Prilutsky. His maze has a nice graphical display and a scrollable background. The program comes with several reusable components, and the ability to display the solution to the maze.

Figure 4: Sergey's maze allows you to scroll the background back and forth, and view the path that leads to exit.
Download Wim Libaers entry here: wimlibaers.zip
In the C++ arena, there was only one entry, Wim Libaers. Fortunately he submitted a good program that was deserving of an award. Wim, of course, can have his pick of a pro verison of C++Builder, JBuilder, or Delphi. Wim's entry compiles with Borland C++ 5.02.