it-partners Home   |  Site Map
 Corporate
       Reviews

Australian Developer Magazine, September 2003

Software Review
Andrew Parsons

itGrid 1.5.1

itGrid is one of those handy little programming gadgets you wish you’d found six months ago. In fact, in my case, when I started looking over the latest version released by it-partners I wished I’d found it only a fortnight before and saved myself some heartache! itGrid is an ActiveX component used to replace the existing Windows standard ListView and FlexGrid controls.


Figure 1 Subtotal functions can be used automatically without any complicated code being needed

It is arguably the smallest grid component currently available to COM developers and is certainly the fastest in my experience. What’s interesting is that the itGrid control itself was created in Visual Basic 6 – the performance they’ve managed to get out of this component would make even the best native C programmer envious.

Of course, the itGrid control doesn’t just stop at replacing the existing functionality of the FlexGrid control provided by Microsoft, even though that would be plenty considering the pitiful performance exhibited by that particular component.

In addition to the standard loading and sorting features, itGrid can also perform subtotalling functions, grouping of ranges of cells, individualised formatting and styles per cell and provides easy to use OwnerDraw functionality.

Loading data into the grid is blazingly fast. Our tests showed that regardless of which method you choose to use to insert the data into the grid, it’s as fast as anything else we’ve used. 5000 record database tables can be loaded in less than a tenth of a second, while doing it manually by adding each item individually is not much slower – and certainly beats the speed at which the standard controls can be filled even when they’re databound.

itGrid can sort its contents in a similar manner to FlexGrid but that doesn’t really do it justice. The sorting routines used in the itGrid component have been heavily optimised, and regardless of what kind of data is being sorted, the speed at which the control does so is incredible. Sorting a grid of 10,000 rows only takes hundredths of a second for strings, currency values and date types (and even less for the more basic variable types such as ints and longs).


Figure 2 A thousand fonts, all loaded and displayable in only a couple of seconds

In conjunction with this great performance for sorting columns, you can also get great benefits out of the inbuilt find function. This method uses internal indexing to speed up searches and alleviates the need to roll your own search code.

The data in your grid can be automatically subtotalled using a variety of standard subtotal functions such as Average, Count and Standard Deviation. All of these functions can automatically insert additional rows (which can then be formatted individually to distinguish them) to show the calculated information. Aggregating the data can be performed as well to programmatically get to these same results for use in other parts of your program.


Figure 3 The demo code shows some impressive performance when sorting

A nice feature inherited from Excel is the ability to freeze a set of cells. This allows the end-user to scroll the rest of the data while leaving those frozen areas in view. This area can also be formatted differently to show the user that it is different or simply marked with a separator line.

XML can be easily formatted using the itGrid control, retaining the hierarchical nature of the data while formatting it into a more human-readable appearance. There’s nothing particularly fancy about the technique as it simply reads in an XML document and parses it, adding child nodes as it goes but it does serve to illustrate the component’s ability to handle tree-view information.

If you’ve looked at itGrid before, you’ll be pleasantly surprised with some of the new features that come with this latest version. In particular, the performance improvements in TextMatrix and releasing data make the old version (which was already impressively fast) look like a snail.


Figure 4 Provide a human-readable form of XML with only a few lines of code

itGrid still does not have property pages for design time use. While it-partners has put forward an eloquent argument in their documentation against the use of property pages, and so deciding to force their own philosophy on the developers who use their components, it would have been far better if they had provided property pages for those developers used to defining their components in a visual way.

Wait, there’s more

itGrid also doubles as a replacement of the standard ComboBox too. It provides a major supercharge to the whole ComboBox paradigm by allowing the developer to easily add in OwnerDraw code to customise each entry on the fly, or alternatively use column styles such as ImageList-based which were previously difficult to implement with standard components.

Like the grid aspects, the itCombo features some incredibly tight coding in its sorting and loading routines. Being able to fill a list of fonts all drawn in their own font face is a nice example of what this kind of control can do, and to do it as fast as it does (especially with the large number of fonts I had installed on the test system) is even more impressive. I had to actually drill down into their sample code to verify that they were indeed preloading the entire list because the speed at which it works felt like it surely was being done in owner-drawn virtual mode. Basically, it features the same performance characteristics as the grid itself, so depending on your needs, this may well be enough to sell you on this component.


Figure 5 The help file comes with live examples of what itGrid can do

Documentation

Too few software companies show pride in their work by providing good, clear documentation. it-partners is definitely one of those few. The help file comes with a simple navigational menu that lets you get to the important information quickly and easily. There’s no need to use the search engine to find out what’s new in the latest version, or to discover just what you’re licenced to use it for.

The most relevant section is the Programmers Reference which breaks down into the standard sections for controls such as this. Each property, method and event is detailed enough for you to understand how it can be used, but not so verbosely that you feel overwhelmed with needless information. It might have been nice to have a few more related links between the various functions, but overall it’s easy enough to navigate.

The Classes section is nice as most companies don’t detail that particular aspect of their control, leaving it to the end-developer to determine how to use a specific class, or even going to the extent of hiding their classes so that programmers have to define their own objects to achieve something that should be straightforward.

The bonus in the documentation is the last two sections. Further Reading takes you on a tour of commonly asked questions, giving the reader a concise explanation of how particular features work and what impact they have on various properties and methods. They even go to the extent of recommending various Win32 API calls that would be useful in certain situations. The last section, entitled Examples, provides a live demonstration of some of itGrid’s capabilities. You can test its loading and sorting performance, check out an example of visually presenting XML data and even play a simple game of Minesweeper. All these and more are created using itGrid controls embedded in the HTML Help documentation and highlight how it could be used in an Internet Explorer-based solution.

Where else can it go?

Of course, there are a large number of VB developers who have moved to .NET. Don’t let that stop you. itGrid works fine through the COM Interop layer, and it-partners has promised a .NET version sometime soon. The performance of the itGrid compares favourably even through the COM Interop, so you can always start with the COM version of the control in your project now and then upgrade later knowing that you’ll get even better performance when it’s a native .NET component.

itGrid will also run in the likes of Access and Excel thanks to their ability to house COM objects. Perhaps more impressively though, itGrid can also work in Outlook (one of the most badly designed Microsoft applications from a developer’s internal perspective I have ever come across) and gives you the scope to create Outlook like interfaces so your own addins can blend with the main application’s interface.

It’s support doesn’t stop there either. it-partners have had it digitally signed and signed for scripting too, which means you’ll be able to host it in Internet Explorer-based web applications. One example of the scope this gives a developer is in the very help file that accompanies the product. As mentioned above, the last section of the help file is comprised of live demonstrations of various features of the control itself – all running within the standard HTML Help interface without a security warning to be seen or beep to be heard.

As is standard with most of these controls, the basic licence gives you the ability to create standard end-user solutions using the control, but not developer-oriented components. Basically, you can create internal controls for your own use but you cannot then distribute that to other developers for their own use.

Primarily, it is intended for use by Visual Basic 6 developers, but any language or development environment that can host ActiveX controls can consume itGrid, including Access, Excel and even Internet Explorer. If you’ve been looking for a replacement for the ListView control there really is nothing stopping you taking this component home. In fact, even if you have been happy with the Microsoft standard controls, you may well want to examine their performance and compare it against that of itGrid. You may well be surprised at the difference.

Summary

PRICE: AUD $899
COMPANY: it-partners
WEBSITE: www.it-partners.com
IN BRIEF: While slightly more expensive than its competitors, the price is accompanied by a surprisingly fast and lightweight control that will add power to almost any Windows-based application.
SYSTEM REQUIREMENTS: VB6 or other COM-enabled language environment.
PROS: Super small footprint, fast sorting and loading mechanisms, highly customisable
CONS: Only available in ActiveX form, so non-COM enabled languages are left out in the cold

First printed in Australian Developer Magazine's September 2003 edition. CLICK HERE to visit Australian Developer Magazine Magazine.

^ top