MicroHelp's HighEdit. (custom control)
by Tom Campbell
A few years ago the notion of "software ICs" spread like wildfire through the computing intelligentsia. The thought was that you should be able to plug software components like text editors and spreadsheets together with the same sort of cleanly defined interface that engineers employ to create electronic products using integrated circuits. I chuckled to myself because the notion was clearly years, if not decades, away. Vendors could never get it together to create such a cooperative programming environment . . . or could they?
Visual Basic was already one of Microsoft's top-selling products. Its custom controls had provided developers with a means of extending the Visual Basic programming environment without having the source code to Visual Basic itself, and they were already selling like suntan oil at a nudist colony.
Visual Basic controls, custom or not, work like this. A floating tool palette like the one you see in a paint or draw program contains a selection of control icons. You click on an icon and "paint" the control onto the screen. Most controls, such as list boxes, edit fields, and command buttons, are visible. A few, such as timers, are not. A control has methods, properties, and events. A method is a subroutine unique to that control, such as Addltem in a list box. A property is a configuration variable that can be read or written to, such as BackColor and ForeColor. An event is a user-modifiable subroutine such as Click and KeyPressed that fires when some part of the control is activated. The genius of Visual Basic is that Microsoft opens up the custom control format and allows anyone to write custom controls that integrate Visual Basic applications quickly and easily. Just choose Add File from the File menu, choose the VBX file (internally, VBXs are DLLs) from [unkeyable]WINDOWS[unkeyable]SYSTEM, and voila--the icon for the new control is added to your tool palette for this project. Microsoft and all the vendors I'll cover in coming months allow you to distribute the VBXs to users free, so the custom controls can become part of any Visual Basic application you care to sell. You need only pay for the control when you buy it for development. (An accompanying LIC file, which you most certainly may not distribute, identifies your system as a development environment and gives you programmatical access to the VBX control.)
One of the most asked-for custom controls on CompuServe is a text box with a capacity greater than the 50K or so built into Windows and that supports multiple fonts. MicroHelp (4359 Shallowford Industrial Parkway, Marietta, GA 30066; 404-516-0898) has filled that need with the impressive HighEdit, a custom control that handles multiple fonts, multiple windows, colored text, search and replace, left and right margins, left-justified tabs, text-only support for the Windows Clipboard, superscripts, subscripts, word wrap, and importing and exporting of ASCII files. Files can be stored in industry-standard Rich Text Format (RTF) or a proprietary HED format. There's also support for "input fields," which allow you to add mail merge to your edit control. While the documentation on input fields is somewhat sparse, they can be used for many other things, such as macros that stop and ask the user for input, or an indexing scheme that uses invisible input fields to mark words to be indexed.
HighEdit maintains a superb balance between feature richness and flexibility. For example, there's a built-in toolbar that can't be customized, but you can easily disable it and supply your own, using standard Visual Basic techniques. Likewise, you can use HighEdit's handy built-in dialogs for font and color selection, file I/O, and search and replace, or you can use the Windows common dialogs.
The documentation for HighEdit is complete but not generous. There's no tutorial and little advice for structuring your program (for example, should you handle multiple windows within HighEdit or use MDI child windows?). Surprisingly, there was no mention of MicroHelp's other products, such as its SpellPro spelling checker, its Communications Library, or its Gizmos custom control pack, all of which can work seamlessly with HighEdit.
It seems to me that the comparison baseline for a product like this should be Write, which comes free with Windows. Here HighEdit has overlooked a few obvious features, such as undo, insertion of images via the Windows Clipboard, and decimal tabs. HighEdit is also quite slow compared to Write when loading files over about 100K. The reason for slow loads is usually that an editor is formatting the file internally as it loads, yet the HighEdit control still requires manual reformatting at times and doesn't paginate on the fly. I'd like to see those things changed. Tabs are also a bit awkward. Despite these shortcomings, HighEdit is a great way to get multiple fonts, big files, and mail merge into your next Visual Basic app with amazingly little work.