ABC for Delphi


Version 4.2.4 - 26 June 1999


Enhanced Components in This Release:



ABC Menus

Added new animation option amnVSlideUp for popup menus to open upwards by default.  Added support for menu images larger than 16x16 default size.  Integrated TabcPopupMenu with TabcToolbarButton.DropdownMenu.  Added a new public property to TabcPopupMenu,  TrayIconMenu.  It should be set to True only for the popup menu shown from a tray icon application.

TabcToolbar, TabcToolWindow

Added CloseButtonWhenDocked property to allow the window to close when docked.  This defaults to false.  Added a ShowCaption property to allow the window to float without a caption or close button shown.  Added a LastDock property indicating the TabcDock the toolbar was last docked to.  When a toolbar is docked this property is synchronized with DockedTo, but when a toolbar changes to a floating state it points to the dock it was docked to last. Double-clicking a floating toolbar will restore it to the dock specified by LastDock, and at the same position it previously was docked at. This property overrides and is meant to be a replacement for DefaultDock. If you want, you can have it not use the new LastDock property by setting the UseLastDock property to False.


Optimised page activation to minimize flicker when animating to a new page.


Added two new component editors.  New Page with List adds a new page and a TabcButtonList on the page. Select Active Page selects the current page of the button bar in the designer, which is useful when it has client aligned controls covering it.


Added two new events for mouse movement over items.  OnActivateItem occurs when the mouse moves over an item.  OnSelectItem occurs on mouse down on an item.  OnClickItem occurs after OnSelectItem, on mouseup on the selected item.


This is the collection item class for the button list.  Added a published Link property of type TComponent.  We used this property in the abc demo program to link the item to the animation frame page to be displayed in the OnClickItem event of the button list.

Demo Program ABC4.DPR

Added new samples for abc menu controls and TabcButtonList.  Implemented ButtonList components and other enhancements.

Bug Fixes in This Release:



Global Screen and Application Events Fixed bug causing event handler to operate at designtime and fixed call to original event if there is one.
Effects Image components Fixed bug causing GDI memory leak.
TabcButtonBar Fixed bug causing active page change event when loading.
TabcBackground Fixed resizing problem when client aligned and loading.
TabcBusy Fixed bug where message fonts were not saved if the only property changed was the font charset or color.
TabcNavPanel Modified instantiation of global notifier object.
TabcShapeForm Removed action setting owner form border style to bsNone.
TabcBiSplit, etc. Renumbered global cursors.
TabcFormPanel Fixed bug when setting the Form property to nil.
ABC Toolbars Fixed....
ABC Menus Changed menu Title options to only paint on first level popup menu.  Fixed SystemFont property to respond Windows settings changes at runtime and resize top level items.  Fixed bug executing ActionList items.   Fixed color bug in gradient painting on menu titles.
Various other units Tidied up finalization of units when unloading packages.
JPEG registration unit for DB Images Removed debug code.
ABC4 Demo Project Added missing files needed for trial version testing.

Version 4.2.3 - 9 May 1999

Enhanced Components in This Release:



GReplace Tool

Added several requested features:  find only without replace; no editing or copy of unchanged files; output count of replacements and list of changed files.

Bug Fixes in This Release:



Various Forms Fixed build path problem affecting packages built for Delphi 3 and C++ Builder 3.  Fixes backward compatibility problem in various property editor DFM files (Effects Image Chooser, Memo and Graphic popup editors, Rich Edit form, etc) affecting Delphi 2, Delphi 3 and C++ Builder 3 only.

Version 4.2.2 - 7 May 1999

Bug Fixes in This Release:



TabcVersionLabel Fixed bug causing version information to fail to read when using runtime packages.
TabcEffectsImage Fixed bug in Delphi 3 causing image changes to fail to load.
TabcToolbar Fixed bugs when saving registry settings and quiting while painting the toolbar.
Various Forms Fixed backward compatibility problem in various property editor DFM files (Effects Image Chooser, Memo and Graphic popup editors, Rich Edit form) affecting Delphi 2 and Delphi 3.

Version 4.2.1 - 22 April 1999

Enhanced Components in This Release:



Effects Image and DB Effects Image

Added published transparent property to reveal the background behind the image, when the picture size doesn't fill the whole control. Default is false. Note when transparent is true, a side effect is that image transitions occur after clearing the previous picture.

Bug Fixes in This Release:



ABC Menus

Modifications for runtime operation of menu toolbars in MDI applications: Fix bug causing GPF on destroy; Fix bug causing shortcut keys to fail when MDI Child showing; Remove flicker on MDI menu merging; Fix range check error; Removed internal class TabcPopupMenuForm from affecting the Screen.ActiveForm and OnActiveFormChange events.  Fixed Font, ParentFont and SystemFont properties changes.  Added new animation styles in Options.OpenAnimation and CloseAnimation.  Removed TabcSystemMenu.AllowAdjust property.  Added BackTiled property to Options, for use with Background bitmap.   Changed menu item height and width sizing to fit larger font sizes.

TabcEffectsImage Fix bug in the animation Stop method to ensure drawing is stopped correctly. In some cases this caused images to be skipped on subsequent animations.
TabcButtonListItem Fixed bug in Assign method causing Tag Property to be lost when item dragged to another buttonlist.
TabcToolbar Fixed bug setting DragHandle property when not docked.

Version 4.2.0 - 7 April 1999

New Version Support:

The ABC Pro version now supports C++ Builder version 4.

New Components in This Release:



Animated Toolbar Menus

New animated bitmap menus are now available on floating toolbars, the system menu and popup menus. Features include the ability to add or hide items on the system menu, a wide variety of painting styles, animation and sound effects. Bitmaps can be added for menu items or as a background. There are five new components on the ABC Toolbar palette: TabcMainMenu, TabcPopupMenu, TabcSystemMenu, TabcMenuToolbar and TabcMenuImages. Supports Delphi 2 and higher. Toolbar menus support MDI merging and maximized child icons in Microsoft Office style.

Button List Control complements the ABC Button Bar

TabcButtonList is an enhanced Outlook-style control for use with the TabcButtonBar. It implements a single column of buttons in large icon or list view style. Automatic drag/drop, in place editing and flyover hints are also implemented. This control is on the ABC Panels page.

Automatic Shaped Forms from Bitmaps

TabcShapeForm is a graphic control that will automatically shape a form into a bitmap edge outline. You can use this to develop special purpose custom forms and splash screens, or for eye-catching presentation. This component is on the ABC Controls tab. To use this you need to supply a suitable bitmap with an identifiable outline using a transparent color or color range.

Animation Dialog

TabcBusy is a dialog component to display a popup form or a modal dialog for a long running operation. The popup display can appear similar to the Windows Explorer file copy progress dialog. Numerous options configure storage and display of custom AVI files; dialog size, caption, label, progress and button visibility. Show and Hide methods control visibility of the actual form. A range of custom AVI files drawn by a professional animator are also included. This component appears on the ABC Utils page.

Enhanced Components in This Release:



Effects Image and DB Effects Image

Animation methods using an ImageList/ImageIndex are now supported. Several new notification events have been added. Support for JPEG images has now been completed. The DB blob storage interface will now automatically detect graphic types from a stream and optionally support Paradox graphic headers in TGraphicFields.  To detect graphic types in BLOBS, all custom graphic formats including JPEG need to be registered in the abcgreg unit, using this procedure: abcRegisterGraphicFileFormat(const AExtension, ADescription: string; const AGraphicClass: TGraphicClass);


Added datamodule support and improved methods for loading/reloading tree levels.


Added support for ShellExecute functions, including the ability to open or print multiple files and use shell extension verbs. Uses the LaunchType and ShellParams properties. Files to launch are specified in the ShellParams.FileName or ShellParams.FileNames properties.


Added new windows style flat checkbox glyph; Added published DisabledItems property; Added public Disabled[Index] property; Added several public methods to set/inspect disabled items state; Added published DisabledItemsGrayed property.


Added accelerator char processing for controls contained inside a page of the button bar as well as for the page captions. Note the page caption accelerators take precedence over the controls inside a page. REMOVED the HotTrack property, replaced with an item in the new Options property. Also added inplace editing of button captions and highlight font color option for active page button.


Added an AllowFloat property to prevent the user from dragging toolbars off the dock area.

Shell Utility Functions

Added 3 utility functions using ShellExecute: abcExploreFolder, abcExecuteFile, abcPrintFile in abcUtil.pas

File Version Information

Added several utility functions in abcVersn.pas to read file version information. function abcGetFileVersion(const AFileName: TFileName): string returns the standard 'FileVersion' string; function abcGetFileVersionKey(const AFileName: TFileName; const AKeyValue: string): string returns an arbitrary single string; function abcGetFileVersionKeys(const AFileName: TFileName; const AKeyValues, AResultStrings: TStrings): Boolean returns a list of keys, or false if there is no version info in the file.

Exception Components Log Files

Added new public method to TabcAppException and TabcExcepLog, allowing general access to write exceptions or other information to the log. AppendLogMessage(Sender: TObject; E: Exception; ExtraInfo: TStrings). Any of the parameters can be nil. The ExtraInfo parameter is appended to the standard log format as comma separated values. This method is also published in TabcDBAppException and TabcDBQryAppException with a slight variation in behaviour. Because the log table or query structure has no way of knowing how to map the ExtraInfo strings to table fields, the ExtraInfo argument is passed to a public property called ExtraLogInfo. The BeforePost event of the exception handler (and dataset) must then be used to map any values in ExtraLogInfo to table fields or query parameters.


Added a new public method HaltIfRunning. This allows the component to be created in the .dpr file, without needing to be loaded in a form.

TabcFormNotebook, TabcFormTabbedNotebook

Added new ActiveForm string property. This sets the active page of the notebook to the corresponding string in the Forms property.

TabcnpState and TabcDBState

Add a global boolean variable, abc_UseTableComponentNames in unit abcutild.pas. Set this var to true to make all db state labels show component names, instead of using the TableName property of a TTable.

TabcToolbar and related components

Improved ActiveX support and other minor enhancements.

TabcEffectsImage, TabcDBEffectsImage (Details)

Added new events OnEffectStep: TabcCancelEvent and OnEffectEnd: TNotifyEvent, also added drawing termination when image is invsible or disabled

TabcEffectsImage (Details)

Added ImageList and ImageIndex properties to automatically load images from a list.

Added Animation methods to use in conjunction with the ImageList:

procedure Play(Loop: Boolean);

procedure PlayRange(FromIndex, ToIndex: Integer; Loop: Boolean);

procedure PlaySelection(const Selection: array of Integer; Loop: Boolean);

procedure Stop;

property OnAnimateNext: TabcCancelEvent;

Hint Controls Redesigned the TabcHintBar control and TabcDBHintManager component to work cooperatively.

Implemented two new global singleton objects, TabcApplicationEvents and TabcScreenEvents which allow many components to share notifications of the TApplication and TScreen events.

Bug Fixes in This Release:



TabcToolbar, TabcToolWindow

Fixed bug causing incorrect setting of the DragHandle property.


Fixed autoselect bug in Windows 95.  Fixed bug causing text position to differ from a regular TEdit. Fixed the blinking caret to show as 1 pixel width with small font sizes. Fixed autoselect behaviour when mouse clicking into the control.


Changed form sizing behaviour to adjust the form size when Enabled is set to true and force form to resize correctly.

TabcPicSpeedBtn, TabcPicBtn and TabcButtonBar

Bug with mouse enter and mouse leave events not occuring with some button styles. Also causing the HotTrack property of TabcButtonBar to fail.


Fixed bug setting key states on Windows NT/Windows 98.

Install programs

Fixed bugs not linking help files


Fixed bug causing form to be marked as modified when first loaded in the IDE. Fixed bug causing onchange and change events to occur when loading.

TabcNavToolbar and TabcNavPanel

Fixed AutoField detect problem when the active control is a GroupButton on a DBRadioGroup.


FixedColor property was not working.


Fixed bug setting the ActivePage property. When this property changed the form was not shown for the page.

Outstanding Issues in This Release:




When using this control as a DockSite in Delphi 4, docking exhibits inconsistent sizing behaviour on first and subsequent docks. This appears to be a Delphi problem in the Dock Manager. For best results set all margins to the same value before using docking on this control.

Problems with Video Cards

Several customers have reported problems using various S3, Virge and Matrox video cards. Problems can range from minor graphics errors to the Delphi IDE refusing to load. This problem should be fixed in Delphi 4 Update Pack 3.

Delphi 4 Packages

We have received one report of a Delphi Internal Error P327 when compiling the ABC packages; using the German version of Delphi 4. (Internal errors are a Delphi compiler problem). A possible workaround is to set the ImplicitBuild and RangeChecks compiler flags on for each package, or to use the project group in the /Source/D4Group directory.


For this component to operate, every form in the application must have a non-zero value. This is a feature (albeit of questionable value) of Delphi's TForm class. One way to overcome this is to create all forms from a common ancestor and set the HelpContext property in code. Also if you have forms in the application that have no active control, set the KeyFirstParentForm property of TabcHelpManager to false. KeyFirstParentForm is used mainly for embedded subforms.

TabcLRNotebook controls

Delphi 4 version has problems with duplicate tabs and arrow key scrolling between tabs. Errors require a fix in the Delphi ancestor class. Please contact us for a copy of the patch to the Delphi 4 source.


Click option to toggle key state is not working on Windows NT.