Two years ago, I was involved in the creation of a whizzy program to record manufacturing figures. At one point, it was decided the bundled Visual Basic grid should be used. That's where the trouble began.
Midway during development, one picky user decided that typing in a customer ID wasn't very user friendly... how about adding a combo box containing customer names?
Oh great, time to spend half-an-hour typing even more code to figure out which row the user is on and calculate the position of the customer combo box. Then comes the trouble of identifying when the user has finished working with the combo to make it 'disappear' from the grid.
And do you think that silenced the lil' user people? Oh no. Then they complained that when they scrolled down the grid, the combo box they were working with still stayed somewhere on the screen.
Twenty-four hours and five API calls later, I decided it was time to scrap the standard Visual Basic grid. Sure, it might've been better than my previous solution of text box arrays (DOH!)... but it was time for a change.
In this article, I'll be taking a look at the market-leading development grids, most of which promise you the world and guarantee to make problems like mine a thing of the past.
Let's see how they got on...
Wednesday 4th February, 7pm
The VSFlexGrid Pro package arrived this evening just minutes after I returned from my weekly radio stint. A grumpy, tired parcel guy threw the box through my office window and sped off.
Thirty seconds later and my excited hands held the VSFlexGrid Pro package from Videosoft, along with a note from the public relations officer requesting a good review. Or else.
The first thing that struck me about this program is that it actually ships with a manual... a practice which seems to be getting less common in modern day computing. But having a nearby reference guide, even a 350-page slightly-difficult-to-understand one is always useful.
Installation of VSFlexGrid Pro is undertaken via three floppy disks and eats just over 5MB of hard disk space. And it doesn't just ship with the controls - a host of impressive VB samples are bundled alongside. And for the more adventurous, slightly scary C++ demos were included... but that isn't my scene.
Aesthetically speaking, the grid isn't up to much as soon as you slap it on a form. But a few clicks of the mouse button later and you can have the Explorer feel, background images and direct database binding err, at least that's what the manual blurb says.
The first example I spied certainly made my eyes twinkle. The grid boasts an incredibly simple 'array binding' feature in one line of code, you can bind a two-dimensional array direct to a grid. All changes made in the grid are reflected immediately in the array, and vice versa. Cooool!
Next up, I checked out its very simple conditional formatting and aggregates example meaning you can easy add sub totals, averages and all the usual Access-like aggregate functions direct to your application.
With a few extra lines of code, such information can be turned into hierarchical totals, allowing you to create decision-support-type applications. And in-built save/load/print features could also allow you user to save statistics for later viewing.
Although I initially experienced a few problems with direct binding to a database, they were soon obliterated... and I figured out how to link the grid direct to a DAO/ADO data control or a coded recordset.
With reference to the problem I mentioned in the introduction where I needed to select a customer from a list, yet insert the customer ID into the database VSFlexGrid Pro handles it with absolute ease, damn it.
One 'BuildComboList' function later, and the list is in place. Adding date pickers and notelets to fields is also as simple.
Another feature overlooked by developers of the built-in VB grids, is a 'Wallpaper' property the ability to tile an image in the background of your grid. And VSFlexGrid Pro ships with a few for your pleasure though some are certainly more useful than others. For example, don't try the New York skyline graphic the partially black background completely camouflages your text!
Other features such as being able to add your own customised scroll-tips (such as those in Word or Access) certainly make a lasting, positive impression.
The package also ships with VSFlexString, a string manipulation control with no visual interface. It's just a nice extra that allows you to perform complex string searches and provides Soundex capabilities.
For those who don't know, Soundex is a system whereby words are assigned a 'phonetic code' based on its physical pronunciation, allowing you to add 'fuzzy' searching options to your application. So 'James' and 'Jaymz' produce the same code J52.
However the system seems to rely on the first letter of the word being absolutely correct 'cause 'Karl' and 'Carl' produce different codes. Still, you can't have everything and this isn't really a flaw in the package, but rather the Soundex algorithm originally invented back in 1918.
Nevertheless, this grid package is certainly impressive. Fairly easy to get to grips with and boasting more features than you can wave a very large stick at... VSFlexGrid Pro has already won my heart.
On the downside, there's the price. It costs #185 / $248 which ain't pocket money for the individual, small-time developer. But for professional consultants and organisations, it's peanuts.
Oh well, time to leave the office. Wonder when the next package will arrive...
You can download a demo of VSFlexGrid Pro from www.videosoft.com
Order VSFlexGrid Pro from ComponentSource
Monday 7th February, 5pm
As I gazed thoughtfully into my monitor, Jane rushed across the office to answer my mobile which was apparently ringing, though I never heard it.
"Good afternoon, Karl Moores' phone, how may I help?", she spoke in that dainty English accent.
"It's Marge 'ere from down t'road". Jane mimed the name... oh. That Marge. "We've got yer parcel, some geezer just left it outside our door".
Well, that's what you get from not giving the parcel company a building number. It seems the Mega Worldwide Delivery Corporation decided it should be delivered to the first construction on the lane... and not ours. And hey, let's just forget about a signature or anything.
Fifteen minutes letter and yet another grid was in my grubby lil' hands. This time it was the True DBGrid Pro 6.0, from well-known component group Apex.
And it's apparently "the world's most popular" grid. Actually, they claim all their products are "the world's most popular". Hmmm, suspicious.
Nonetheless, two minutes later it was installed on my machine and I was ready to get going.
Strangely enough, this package also contains a pretty good manual beating the previous one by another 150 pages. Perhaps they're not going out of fashion after all.
From the outset, you're exposed to classy art pictures of all types. Even the setup hosts a picture of Van Gogh's Plain of Auvers, though for what reason I'm quite unsure.
But still, setup was easy and took almost 12MB. In addition to the controls, this package also bundles with VB5/VB6 examples five in all.
Yet in all honesty none are particularly striking nor easy-to-follow not really what you'd expect from Apex.
On the positive side, a set of twenty-three tutorial projects (yes, twenty-three) are included alongside the online help, in a bid to get you familiar with the controls. They start with a simple ADO control bound grid, have a quick fling with unbound data somewhere in the middle and finish with a very (very) groovy sample that allows you to graphically group data.
Whilst playing with the tutorials, I must admit to getting slightly frustrated with the actual grid. Often when trying to move cells with the keyboard, the light cell-focus border temporarily disappeared. Also, when moving from one column to a different column in a later row, a strange 'flash' became very annoying.
Perhaps I'm just being picky, but for #195 / $310 I'd expect a little better.
Still, the grid does contain a lot of neat features. Such as it's great built-in support for graphics, an Excel-type split-bar and the ability to highlight entire rows dependant on criteria.
You can also allow the user to select option buttons within a cell or display "cell tips" the same as ToolTips, but relative to each cell. Yet none of this jazz is demonstrated in the samples nor tutorials, meaning you have to delve into the 500-page manual or online help to figure out such functionality exists.
One nice feature I noticed was the way in which the grid automatically displays a larger box for text that doesn't quite fit in its cell. But then it spoils itself by losing the boxes' border if the user temporarily switches focus to another application. Ho-humm.
The Print Preview feature of the grid didn't quite receive my thumbs-up; it looked cheap and tacky, with poor icons and menu commands such as 'Print Some Pages'.
Another way to get information out of the grid is to export it direct to a HTML file, which seemed to work well. All formatting was preserved and you have the option of appending data to an existing HTML file, which is pretty cool.
Remember the problem I highlighted in my introduction? I needed to display a combo box of customer names and for the customer ID to be inserted into the database. Well, thankfully True DBGrid Pro 6.0 does support such combo box-like selections via its own rather sticky DropDown control.
And if you're wanting for a user to select from a list box, the tutorial demonstrates code similar to that I wrote over two years ago. And that was exceptionally dodgy.
Hmm, it's about time to sum up True DBGrid Pro 6.0.
Well, it has a few really unique features and an exceptional manual - yet lacks decent working examples. And most developers hate fishing around in manuals for nitty-bitty lines of code. Still, the grid does ship is a rather neat, futuristic CD holder... ahem.
A good job, Apex. But perhaps perhaps not good enough.
I wonder what'll arrive next?
You can download a demo of True DBGrid Pro 6.0 from www.apexsc.com.
Order True DBGrid Pro 6.0 from ComponentSource
Friday 11th February
Finally, the key to Sheridan's much talked about component package arrived in my Inbox. Five minutes later and I'd installed the lot, to the tune of 13MB hard disk space.
And how interesting a 16-bit version of the control can also be installed, jolly useful if you're developing with VB4 and below.
The first thing I discovered about the Data Widgets is that despite the apparent random nature of the bundled samples and the difference in Visual Basic versions used to create these, they're certainly well commented and easy to follow. Ideal for developers wishing to get to grips with basics of the controls.
"Controls?", I hear you cry. "Plural?"
That's right. This isn't just a grid, full stop. Rather, it's an entire suite of controls aimed at improving your database applications.
But let's start off with the data grid. It's no Mona Lisa, but it does the trick.
It's not as comprehensive as the others I've looked at so far, but it's much simpler. For example, let's say I had a list of customer orders in my pretty lil' grid with one line of code I could add a little ellipsis button to the corner of the cell for the user to click on and, say, get more information about the order.
You get all the other standard grid frills such as alternate row back colouring and simple check box abilities. Support for DAO/RDO/ADO is included.
Still, the Data Widgets package isn't as overly furnished in the grid department as others. But it's the other bundled controls that make this kit an attractive investment.
See, you also get controls such as the database combo, which can be used alongside the grid or as an independent component. Just add it to your form, specify the various data sources and you're up and running. You can stick to your initial database schema solving my initial problem - without having sticky code lying around the joint.
And that's just the case with the bundled option button control too. Previously you would have to individually evaluate the database field value and select the appropriate option button then perform the reverse when you needed to save the information. With this control, you really can throw all that horrid code straight out the window.
You'll also find a couple of interesting extras in the package the Data Widget command button and record navigator.
The first looks almost like a regular command button and binds direct to a data control. It has a DatabaseAction property that determines what it does when clicked for example, it may move to the end of the current recordset. Or perhaps refresh the records. Or whatever.
And the latter record navigator is a juicier version of the Data control navigation front-end. It allows simple navigation alongside built-in searching facilities and bookmarking whatnots. Whilst simple, this is the type of tool that could save you hours, and certainly impress your boss.
In summary, you'll find Sheridan's Data Widgets to be a superb collection of useful, time-saving tools. The shipped grid should cater to the requirements of most and the extra data controls will undoubtedly come in handy!
And at #135 / $203, it won't send the bank manager into a state of unconsciousness. Perhaps just a light faint.
You can download a demo of Data Widgets from www.shersoft.com.
Order Data Widgets from ComponentSource
In addition to the above, I've also taken a brief peek at the following packages.
Spread 3.0 Farpoint
#175 / $235 www.fpoint.com
Whilst more for those would need to implement spreadsheet-type functionality in their applications, this package is certainly impressive. You can imagine it as a mini version of Excel, packed into a cute control.
It supports all the usual open and save activities, as well as basic Excel-like formulae.
It will even read and write to Excel spreadsheets. Or rather, it claims to the demo provided wouldn't even open my personal accounts. And trust me, they ain't nothing fancy.
Some of the samples were quite impressive, though a few hard-coded paths made instant running a definite no-no.
More of interest to those reading this review will be its ability to directly bind to DAO/RDO/ADO data sources with absolutely no code. It also automatically recognises field types and cleverly changes the cell format according. For example, my True/False field was automatically replaced with a groovy red check box, as opposed to its raw database 0 or 1 value. In addition, if Spread spots a date, it automatically pops up a calendar for selection ease.
Spread includes a lot of neat features like that. I think, perhaps, that this cell-level formatting is one of its best features. You could, for example, set minimum and maximum numbers on each individual cell, column or row. Or you could present a combo box for item selection.
A few other impressive features included a "pointer" within the grid that moves as you type, particularly useful with masked strings and decimals. You can even changes the way simple text cells work convert the text to password characters, multi-line format, upper case, lower case, police case. It's all there.
Exporting, print previewing and graphics support is also bundled.
Oh, and for all those 16-bit developers out there you still have hope. Spread 3.0 supports Windows 3.1, no probs... something that's getting pretty difficult to find in a 32-bit world.
Quick Conclusion: Easy to use, but certainly not a traditional "grid". More a spreadsheet with graphical frills and without the Microsoft copyright. Powerful and with a whopping great manual to prove it.
Order Spread 3.0 from ComponentSource
ActiveX Component Suite - ProtoView
#415 / $635 - www.protoview.com
It's rather a pity the people at ProtoView treat me like a one-legged beggar on the prowl for freebies when I requested an evaluation copy of their ActiveX Component Suite. Why? 'Cause their product isn't all that bad. And this could've been a pleasant, unbiased review.
Still, being the soul of integrity, I shall try my best...
The ActiveX Component Suite checks in at around #x and comes with a whopping great handful of samples which is good, 'cause the documentation is pretty sparse. To be more exact, there isn't any.
Still, if the list of properties and methods laboriously categorised in the HTML help aren't to your liking, you might fancy checking out the large set of bundled samples, some of which I found particularly unstable. Still, they managed to showcase the four main components of the suite heck, even if for a mere few seconds before the blue screen of death.
Top of the list and rather relevant to this review, we find the DataTable control. Easy-to-setup with a nice set of property pages, this grid supports much of the standard stuff we've uncovered so far. Support for checkboxes within cells, alternate row colouring and direct database binding support are all there.
You'll find the occasional neat feature too such as pointers highlighting the row over which your mouse hovers but really, it's nothing special.
Also included, you'll find the Data Explorer for building groovy Outlook-style applications. The third ScheduleX component is a diary-like scheduling thing (yawn). And then we have TreeViewX, a revamped version of Microsoft's own TreeView control.
So there we have it - a total of four main components, with a few masked-edit-type controls thrown in for good taste.
Quick Conclusion: Not a bad set of tools, all in all. It certainly should meet the needs of the average developer particularly those wishing to adopt an Office-style interface. Still, my overall experience with the company behind it all certainly wasn't the greatest. A word of advice to ProtoView... get yourselves a public relations company in order to avoid future journalistic clashes!
Order ActiveX Component Suite from ComponentSource
So, we've taken a geek peak at five of the top grids currently on the market:
- VSFlexGrid Pro
- True DBGrid Pro 6.0
- Data Widgets
- ActiveX Component Suite
Now for the moment of truth. Which package got the official thumbs up?
Well, without a shadow of a doubt, I can personally commend Videosoft's VSFlexGrid Pro. Easy-to-use, relatively inexpensive and with more prominent features than Sherlock Holmes with a bad case of measles, this is undoubtedly the clear winner.
And I'm not just saying that 'cause the nice folk at Videosoft have lined my pockets with gold. I wish they would (hint, hint)...
Coming in at second place, I'd rank Sheridan's Data Widgets as a good, all-round solution for database development. Whilst certainly not as feature-rich as VSFlexGrid Pro, it certainly the cheapest of them all. And remember that this package doesn't just ship with a grid but a host of other groovy controls, too!
Now if only these products were around a couple of years ago - it could've saved me one or twenty-two sleepless nights...