
Last month I discussed the state of component-based application development and introduced the offerings of Crescent Software, one of the most visible vendors of components for Visual Basic (VB) developers. This month I describe the offerings of another leading component vendor in the VB marketplace, Sheridan Software Systems Inc. I also introduce Vision StoryBoard, a tool for documenting VB projects, whose availability makes VB the tool of choice for many custom applications. Finally, I preview early releases of three new components you can use to incorporate some of this year's most fashionable application and user interface trends in your own applications.
As Microsoft was readying VB 1.0 in 1991, Sheridan Software saw an opportunity and began building tools and components for developers who would be producing applications with it. Quickly aligning itself with Microsoft as a strategic partner, Sheridan Software was among the first companies to produce components for Microsoft on an OEM basis. Sheridan Software also forged an ISV and Solution Partner relationship with Microsoft. As a company, Sheridan Software strives to be the technology leader in the custom controls business, and the company aims to leverage that leadership into a commanding market position.
With the introduction of VB 4.0 and the conversion of the controls standard from VBX to OCX (and now ActiveX) controls, Sheridan Software has spent the past year retooling and extending its product line. Since January, it has re-released its flagship VBAssist kit of VB IDE (Integrated Development Environment) enhancements and its DataWidget, Designer Widget, and Calendar Widget component kits. These new versions of the component kits include both 16- and 32-bit OCX controls. At the same time, Sheridan Software has extended its product line with two new products. The first, sp_Assist, provides tools to manage SQL Server databases, automate the development of code for database operations, and partition database logic between VB and SQL procedures. The second product, ClassAssist, lets developers create and maintain hierarchies of objects that they can use in their VB applications and includes a set of objects that Sheridan Software calls WinOblets, which encapsulate Windows API functions so that developers can call them using syntax similar to that of standard VB object references.
When I last reviewed some of the Sheridan Software offerings in my August 1995 column, VBAssist impressed me as an extremely useful adjunct to the VB design environment, and the Sheridan Software Data Grid struck me as the most flexible and easiest to use of the third-party grid components I had investigated. Sheridan Software has had some problems with the introduction of VBAssist 4.0, which the company admitted were the result of rushing the product to market. VBAssist is now in its second major maintenance release, which addresses many of the problems that were evident initially. Compatible with 16- and 32-bit VB, VBAssist actually becomes an integral part of VB itself, both visually and functionally. It extends VB's functionality by attaching an additional toolbar to the main VB window. Version 4.0 adds several useful new features, including the ability to create and maintain a library of reusable template control sets and forms, and the ability to maintain resources in an RES file included in a VB project. Unfortunately, I cannot wholeheartedly recommend version 4.0 of VBAssist. On the one hand, VB itself has caught up by providing tools that address some of the deficiencies that VBAssist originally addressed, such as the ability to create default data-entry forms. On the other hand, my system has chronic instability problems when VBAssist is loaded and other third-party products are open in my VB workspace, and my system experiences performance problems (the VB design environment will appear to freeze) when any of VBAssist's child windows are open.
On the other hand, the new Data Widgets collection gives greater leverage to developers using VB for database applications. I am looking forward to getting a lot of use out of these six controls, which include a data navigation control that replaces VB's native data control; a data-oriented command button that executes any one of the recordset navigation commands associated with VB's data control; an option group control that binds to a data field; and grid, combo box, and list box controls that provide flexible display capabilities as well as performance enhancements for large data sets.
The grid control offers a plethora of properties that control myriad aspects of its appearance, in a somewhat unconventionally designed yet very usable tab dialog. The first panel that you see displays an outline control of the dozens of properties that are applicable to the grid object itself. You can also define style sets here, which are named sets of display attributes including foreground and background color, font, alignment, and picture. The second panel lets you define groups of columns that share common attributes and lets you set display properties applicable to those groups. The third panel lets you define which columns should be displayed on the grid, what groups they belong to, and their column-specific display attributes. On the fourth panel, you assign the style sets that you defined on the first panel to specific columns or groups of columns. Of course, you can set all of the properties of the grid in method code, but using the property dialog is a good way to become familiar with the wide range of properties that are available.
Taken together with the ability to specify groups of columns that share attributes, this style set feature is extremely useful and gives you much more control over display attributes than any other grid with which I have worked. Another feature that I love is the ability to have a single record occupy multiple rows in the grid. Sheridan Software's is not the only one of this year's crop of grids to incorporate this feature, but it does make it very easy to format a grid so that it displays all of the columns of interest without forcing the user to scroll the grid horizontally to see them. Sheridan Software's grid control operates in bound mode, in which case you must also use VB's data control in unbound mode or in AddItem mode. In unbound mode Sheridan Software's grid control creates a row buffer object with an entry for as many columns as the grid contains when it initializes. You populate the grid by filling the row buffer with data from a data object, array, or set of variables. In AddItem mode you assign values to rows using the AddItem method with a delimited string of column values as the argument. This mode lets you use the grid as a multicolumn list box.
Data Widget's combo and list box controls behave in a manner very similar to the grid. The enhanced data control offers functionality that extends the capabilities of the native VB data control. When using VB's data control, you drop it on a form and set its database property to the name of the Jet or ODBC database that you are using and its Recordsource property to the name of a table or query in the database or to a SQL select string. You can then bind data-aware controls to that dataset by setting their datasource property to the name you gave the data control and their Datafield property to the name of the field with which you want to associate the control. Sheridan Software's enhanced data control binds to the VB data control in just this fashion. When using the Sheridan Software control, you set the VB data control's visible property to false, so that only the Sheridan Software version appears at runtime. It then provides the navigational functions of the native control and adds buttons for navigating by page and by bookmark, adding and deleting records to the dataset, and displaying a nice dialog that lets the user search for the contents of any columns bound to the data control. The enhanced data control does a particularly good job of exposing the Jet engine's ability to maintain a collection of bookmarks; it's much easier to manage bookmarks with the Jet engine than to write the equivalent code.
sp_Assist manages the create, retrieve, update, and delete logic necessary to develop client/server applications with VB and Microsoft SQL Server. Based on the server repository, sp_Assist builds a local project repository of the code that it generates to create server objects such as tables, indexes, triggers, and stored procedures, and to perform all of the standard data management operations: inserts, updates, selects, and deletes. The program offers dialogs that provide extensive control over many aspects of the generation process. sp_Assist supports many of the VB database access modalities and partitioning options. It will generate everything from stored procedures and VB calling stubs to complete client-side DAO or RDO command strings.
In addition to code generation, management, and debugging, sp_Assist provides a stored procedure editor that lets you drag and drop keywords from a key words list. It also has a form-based environment for executing commands against the server, including executing stored procedures interactively. It presents result sets in a data table that offers complete control over presentation and format. sp_Assist offers a variety of productivity features; the one that excites me the most is its ability to perform global search-and-replace operations against the code in your project library. This feature greatly facilitates your ability to respond to changes in database schema or user requirements.
Vision Software's StoryBoard is an extremely innovative product that crosses the boundaries of such functions as collecting application requirements, performing functional design tasks, creating prototypes as slide presentations, and building help files. By assembling these capabilities into a common framework, StoryBoard points to what could be the ideal documenting solution for rapid application development projects. Its Specmaker component hooks tightly into the VB design environment. As you select different objects on a VB form, the Specmaker window displays information about the selected object and presents edit boxes for entry of requirements, functional description, design information, user documentation, and testing notes. (See Figure 1.) As a developer, you can specify what documentation categories you want to maintain for each type of control that you employ. Specmaker lets you document your project interactively and iteratively, as you are working on it. Because it's only a click away from your design environment, it makes it very easy to maintain project documentation.
StoryBoard offers a wide range of output options and excels in creating RTF documents that include specific categories of documentation. It presents this documentation in a tabular format that summarizes a project's forms and controls, and in tables that display the documentation categories you select. These capabilities make it easy to produce requirements documents, implementation documents, and test plans. Using the Slideshow feature, you can create slides in which you can annotate the forms in your project with text, graphics, and call-outs, and then run through the slides in the order a user might encounter the forms. This is a great way to animate the first cut of forms for a project and to review their design with your client. As you near the completion of your project, StoryBoard generates complete Windows help files (as well as the intermediate RTF files) based on the help IDs and help text that you entered during the development of your project.
Lest I leave the impression that this product is the ultimate in application documentation, let me point out the downsides to StoryBoard's tight connection to VB forms. Obviously, it cannot be used with any other development environment. There are no facilities for recording application requirements and functional design decisions made prior to starting to layout VB forms, and StoryBoard lacks the ability to document other application components such as program and class modules. Finally, there is a performance impact on the VB design environment. As you click from object to object on the VB form surface, there is a noticeable lag as StoryBoard works to synchronize itself. When StoryBoard is finished synchronizing itself, it has an annoying habit of giving itself focus, so if you really want focus to stay on the form, you're out of luck. Based on my conversations with Vision Software marketing personnel, the company is planning to address this problem.
An inquiring mind combined with good relationships with tool vendors enables me to keep abreast of interesting developments in the controls marketplace. I am particularly interested in those that provide innovative ways to work with data, and I recently learned about three data-oriented controls that represent new, rather than better, mousetraps. They are InfoSleuth from ObjectArts, DynamiCube from Data Dynamics Ltd., and InterAct from ProtoView Development Corp. InfoSleuth is a data-oriented outline control that distinguishes itself by its tight association with a predefined data structure. DynamiCube puts a multidimensional data analysis tool right inside your application. InterAct provides a diagramming surface that developers can embed in their applications.
The outline metaphor has always attracted me as a way to present multiple levels of structured data, in a format in which the user can collapse the view at the desired level of summarization and drill down to details where necessary. The problem with most outline controls is that they are not data oriented and require a significant amount of code to make them work with data effectively. First, you must populate them with multilevel data. Next, you must provide a way for users to add, edit, and delete node contents, and if you want to have a fairly friendly application, to move nodes around as well. The code you must write to detect such events, respond to them, and record any changes back to the source tables can be quite tricky.
InfoSleuth (see Figure 2) is designed to make most of these tasks automatic. Rather than the AddItem method associated with the outline control that ships with VB, InfoSleuth provides AddChild and AddSibling methods that explicitly assign an item to a level of the outline. Once assigned, InfoSleuth stores the outline in a table ("Sleuth_Index") into which it encodes the parent-child hierarchy. Each record represents a node in the outline, and has a parent ID, a level ID, and a sequence number to assign its order within the level. In addition, there are pointers to records in a state table, a style table, and a resource table. At design time, you set InfoSleuth's properties to specify the InfoSleuth database from which the control should obtain data and resources, the resources to assign to the various data elements being displayed, the contents of the right-mouse menu that should be invoked when various nodes are selected, and style information to apply to the nodes. When VB displays a form containing the InfoSleuth control, it builds the outline from the information in the Sleuth_Index table you specify. You can add to or update the outline with the AddSibling and AddChild methods. ObjectArts representatives told me that the shipping version of the control would include sample code to move data from an existing transaction database into the outline.
DynamiCube provides the analytical power of many desktop data-analysis packages in a programmable control. (See Figure 3.) You specify a data source, which can be a table, stored query, or select statement, on the property dialog's data tab. The control resolves the query you specified at design time and lists the available fields in the Layout tab. Here you can drag the name of the field that contains the dependent variable that you want to analyze into the data area, and you can drag the names of the fields that contain independent variables (for example, city, state, demographic status, and account category) into row and column areas. In the Fields tab you can specify custom display preferences for each field. Finally, the control provides properties for setting typical display characteristics, such as the alignment and visual effects to apply to rows and columns, and the colors and fonts to apply to each element of the control.
At runtime, this control really shines. Provided that you enabled this level of flexibility at design time, the user can drag independent variables from the row display to the column display, drag them around to change the level of aggregation, and expand and collapse aggregates for any specific category value (for example, expanding the rows that display detail sales in the northwest region while displaying the southeast region at the aggregate level). You can also turn specific data points on and off. An important feature of the control is its speed. Obviously, the purpose of an analysis tool is to slice and dice large amounts of data; indeed, the analytical work is increasingly moving from the desktop to application servers or custom databases designed to optimize such activity. While the traffic impact of performing complex SQL queries can be significant, the demonstrations I have seen support the developer's claim that this control is surprisingly fast and lightweight.
The final control I want to introduce is InterAct. ProtoView sent me a late pre-release version of the control without documentation. It's so different from anything else I have seen that I want to share what I have been able to understand in exploring its capabilities. A development company that has been around for quite a while, ProtoView cut its teeth on a rapid application development tool (ProtoGen+) with form, menu, and logic designers that generate C and C++ code for application development projects. Last year, ProtoView introduced a help authoring tool and branched out into controls, which they have supplied as DLLs, VBXs, or OCXs to let developers use them with a wide range of development tools.
InterAct displays information in a graphical format - as a modifiable diagram. Users can move, resize, or change the appearance of objects (called entities), and they can draw lines between objects to establish relations. The application in which you embed InterAct is alerted to every user action in the diagram, allowing the application to respond to these events. In addition, InterAct exports a full API, which you can customize to suit your application requirements. InterAct supplies a complement of built-in dialogs and menus that it can display to allow the user to specify what classes of objects can be created, what rules control interclass relationships, and what display characteristics different classes of objects and relationships should have. InterAct also provides support for saving or reading diagrams to disk, cutting and pasting information to the Windows clipboard, and printing diagrams. The sample application that comes with InterAct is a developer-oriented diagramming surface for creating data models. Other types of diagrams that you might let users create are business process diagrams, data flow diagrams, and organization charts.
I've just begun to scratch the surface of the controls and tools available for extending today's development environments. In the course of this two-part survey, my focus has been on contrasting the offerings of a few companies that are competing for the volume controls business with the offerings of developers who have set out to solve specific problems. While the former offer a wide range of useful products that complement and extend stock development products such as VB and PowerBuilder, the latter (in many cases) have been able to develop more specialized products that just might be the sizzle that makes your application a real winner. I emphasized the use of these products in the context of VB 4.0, which presents the primary target for most third-party tools developers, and the use of these tools in data-oriented applications. The problem with data-oriented controls that are geared to VB development is that much of their functionality derives from being bound to VB's data control, so their functionality is diminished on other platforms. It's worth noting that ProtoView is one development company that has gone to great lengths to ensure that its controls work well in C++ and Delphi, as well as VB; its grid does not present as elegant an interface as Sheridan Software's but it is as powerful and it makes that power available across all of the platforms it supports.
Other categories of controls include graphics manipulation, multimedia components, telephony and communications tools, version management, and security enhancements. The first place I look to find out what's out there is Carl & Gary's Visual Basic Home Page (http://www.apexsc.com/vb/), which Apex Software sponsors. Apex is itself a leading developer of controls (they developed the grid control that ships with VB and Oracle Objects for OLE) and it just introduced a must-have power tool (VBA Companion) for those of us who spend too much time collecting controls and not enough time using them. VBA Companion is an OLE object browser for Microsoft Windows and Windows NT - think of it as a File Manager for OLE objects. When it loads, it scans the system registry for installed objects and lists them in a tree structure. When you select a control, it displays the properties and methods supporting that control. The fact that it runs as an independent application only compounds its usefulness. You can download an evaluation copy and use it to guide your hunt for the toolset that best supports your development style and application requirements.
* Data Dynamics Ltd., 2600 Tiller Ln., Columbus, OH 43231; 614-895-3142 or fax 614-899-2943; http://www.datadynamics.com; email: tim@coil.com.
* ObjectArts Inc., One London Place, 255 Queens Ave., Ste. 2500, London, Ontario, Canada, N6A 5R8; 519-663-9738 or fax 519-663-5797; http://www.objectarts.com.
* ProtoView Development Corp., 2540 Route 130, Cranbury, NJ 08512; 609-655-5000 or fax 609-655-5353; http://www.protoview.com; email: info@protoview.com.
* Sheridan Software Systems Inc., 35 Pinelawn Rd., Ste. 206E, Melville, NY 11747; 516-753-0985 or fax 516-753-3661; http://www.shersoft.com; email: sales@shersoft.com.
* Vision Software Tools Inc., 2101 Webster St., 8th Fl., Oakland, CA 94612; 510-238-4100 or fax 510-238-4101; http://www.vision-soft.com; email: sales@vision-soft.com.


