Reasons to Buy
  Features
  Pricing
  Pack Contents
  References
  Get Started
  Press
  Whats New
  Release Notes
  FAQ
  Y2K

ABC Version 5 Release Notes

Latest Release 5.3.2 - March 29, 2001:

History:

 

Enhanced Components in Release 5.3.2:

 

Component Description
TabcDBEffectsImage Published the Transparent property to allow images to be drawn over a background.

Added a new DataFieldCaption property. This allows a second field in the Datasource to supply a text caption to be drawn on top of the image.

Published the following caption formatting properties: Alignment, CaptionStyle, BiDiMode, ParentBiDiMode, Font, ParentFont, Layout and WordWrap.

Added methods to automatically scroll forward through all the images in a dataset:

procedure Play(Loop: Boolean); if Loop is true, the scrolling continues indefinitely, looping back to the beginning of the dataset.

procedure Stop; can be called to stop the animation.

Added an OnAnimateNext event. This occurs before scrolling to each record in the dataset and has a parameter to stop scrolling.

Note: the EffectPause value can be adjusted for the duration each image should remain before scrolling to the next record.

Note: the DataField property can be connected to a blob field or to a string field containing a file name to be loaded. 

Added a published FilePath string property which can be a path prefix for the string field containing the file name.

abcDBEffectsImage can be configured to load BMP, ICO, WMF, JPG, GIF and TIFF data automatically from blob fields. (GIF and TIFF formats require external TGraphic classes).

TabcDBDateTimePicker

Replaced the Kind property with DateTimeKind to allow dates and times to be edited in one control. Type TabcDateTimeKind = (adkDate, adkTime, adkDateTime);

Changed the data field updating to only update the date or time part (or both parts) of a TDateTimeField based on the DateTimeKind property, so that multiple edit controls can be connected for date and time portions of the field.

TabcButtonBar, TabcButtonPage and TabcButtonList Published the OnContextPopup event.

Added several new public methods to assist when creating, editing or deleting pages and list items at runtime:

procedure TabcButtonPage.Move(Down: Boolean); moves a page down or up in the abc ButtonBar. 

procedure TabcButtonListItem. Move(Down: Boolean); moves an item down or up in the abc ButtonList.

function TabcButtonList.AddItem(ACaption: string; AImageIndex: Integer; DoEdit: Boolean): TabcButtonListItem; appends a new item to the  abcButtonList. The DoEdit parameter invokes the inplace editor.

function TabcButtonBar.AddPage(ACaption: string; DoEdit, AppendPage: Boolean): TabcButtonPage; adds a new page to the abcButtonBar.

function TabcButtonBar.AddPageWithList(ACaption: string; DoEdit, AppendPage: Boolean): TabcButtonList; adds a new page and buttonlist to the abcButtonBar.

function TabcButtonBar.RemoveActivePage(Confirm: Boolean): Boolean; optionally displays a confirmation dialog and then deletes the active page of the abcButtonBar. Returns true if a page was deleted.

function TabcButtonList.RemoveActiveItem(Confirm: Boolean): Boolean; optionally displays a confirmation dialog and then deletes the active item of the abcButtonList. Returns true if an item was deleted.

TabcRichEdit, TabcDBRichEdit

Added left and top alignment of visible toolbars on the popup edit dialog.

TabcnpFilterExpression

Added property OnActivate: TNotifyEvent. This occurs whenever the Active property changes to True.

Added property OnDeactivate: TNotifyEvent. This occurs whenever the Active property changes to False.

Added property OnEdited: TNotifyEvent. This occurs after the filter has been edited using the popup dialog (and the user clicked Ok in the dialog).

Changed the Edit method from a procedure to a function with a boolean result.

TabcDBHelpManager Added a new method Show. this has the same effect as pressing F1.

Added a new method ShowDefaultTopic.

Added a new method EditDefaultTopic, to edit the DefaultTopic.

Added new methods to support custom help topics, other than form class names:

  ShowHelpTopic(const HelpTopic: string);

  EditHelpTopic(const HelpTopic: string);

Changed the use of the DefaultTopic property to show the default topic when ReadOnly=True and showing help and there is no help text stored for the active form. Previously it was only used when there was no active form.

 

Bugs Fixed in Release 5.3.2:

 

Component Description

Transition Effects used in TabcEffectsImage, TabcDBEffectsImage, TabcAnimationFrame, TabcPage and TabcFormPanel

Fixed a Windows 98 and Windows ME bug with transition effects on forms containing a TabcDock control. In some cases this caused the application to terminate with an AV in kernel32.dll.

Fixed alignment and sizing of some transition effects on the canvas; the following effects were changed: atfZoomIn, atfPourDown, atfPourRight, atfShape..., atfWipeClockwise, atfWipeAntiClockwise.

Fixed a bug causing a small memory leak with some effects.

Completed stress testing of transition effects and multiple thread interactions in a high performance graphics application. Modified the design for some runtime canvas locking, thread interaction and API call parameter issues.

TabcEffectsImage

Removed a blank item in the list used in the Delphi IDE EffectSelection editor dialog.

Fixed a transparent color masking problem with WMF files.

TabcAnimationFrame and TabcFormPanel

Fixed a bug not showing forms correctly when Transition.NoRedraw=True and Transition.Enabled=False.

TabcQuadSplit and other splitter components

Fixed bug causing proportional sizing (SplitHPercent, SplitHScaled; and SplitVPercent, SplitVScaled) to fail under some conditions when a form is loaded.

TabcDBRichEdit

Published the EditorTitle property.

Fixed bugs where Clear and OpenFile methods did not edit the underlying data field, causing changes not to be saved.

TabcCurrencyLabel

Fixed a typo in the string constants, "forteen" should be "fourteen".

TabcDBFixedGrid

Fixed a bug in Delphi 4 and 5 where fixed columns font color and titles are not painted correctly.

TabcMenuToolbar, TabcPopupMenu

Fixed a bug causing an access violation when a key is pressed while a PopupMenu or toolbar dropdown menu is showing.

Fixed a bug in auto line reduction causing menus to size incorrectly and to hide items at the bottom of the menu.

Fixed a rare bug where top level menu items were not disabled/enabled correctly when an OLE control modal dialog is shown and then closed.

Fixed code to initiate actions for top level menu items correctly during OnIdle.

Changed menu mouse interaction to only allow the left mouse button to select a menu item.

Changed help context processing and F1 key handling to always return a valid helpcontext for the nearest active TMenuItem and made the helpcontext mouse-sensitive on dropdown menus.

TabcDBEffectsImage

Fixed a bug loading graphic streams from blob fields. This effected the image transparency.

TabcDBDateTimePicker

Fixed a bug causing the control to edit a dataset at designtime.

Fixed a bug where the default date was not saved in a new record.

Fixed a display formatting problem in time fields.

TabcDBAutoEdit and TabcnpBlobEdit

Fixed a bug in the graphic field editor SaveAs action, causing graphic field data to be saved to a file with database (Paradox) graphic header information embedded, resulting in an invalid graphic file.

TabcButtonList

Fixed a bug when [ablKeepSelected] in Options, Items.Clear causes an index error.

Fixed a bug where the active item was not redrawn after a popup menu is shown and the mouse moves off the 
item.

TabcShapeForm

Fixed a bug causing a memory leak on Windows 9x.

TabcDBEditWin

Fixed a bug causing controls not to be created when loading a form in the IDE that uses a datasource from an inherited form.

TabcDBHelpManager

Fixed a bug where help text is not cleared from the help form before editing a different help topic.

Fixed a bug when editing help, the Save or Delete action would not work unless ReadOnly = False.

TabcNavPanel, TabcNavToolbar

Changed the storage of the Datasource property so it is not stored when AutoDatasource = True.

Changed designtime editing of Datasource and AutoDatasource, so that setting one property clears the other.

TabcnpDatasourceEdit

This component automatically set its parent NavPanel or NavToolbar AutoDatasource property to true. The behaviour is now changed to just display a warning at designtime only, without actually changing the parent's property.

TabcnpFilterExpression

Fixed a bug loading the Active and Filter properties at runtime.

TabcnpEmptyTable, TabcnpFilterActive, TabcnpRange, TabcnpFindKey, TabcnpQueryParams, TabcnpSQLStartTrans, TabcnpSQLCommit, TabcnpSQLRollback

Fixed a bug causing an access violation at designtime when the parent NavPanel.Datasource is assigned and one of these components is added to the NavPanel.

ABC 5 Demo Program

Modified this application to run when the BDE is not installed. Previously it would terminate with Runtime Error 217 due to an initialization error checking the installed BDE version. The application now runs with a warning and the database demos are disabled.

Apollo Dataset adapter classes in unit abcdaap

Fixed a bug in variant arrays of parameters, which caused the FindKey and FindNearest methods to fail.

 

Enhanced Components in Release 5.3.1:

 

Component Description
TabcEffectsImage, TabcDBEffectsImage

Transition effects have been redesigned to run in separate threads instead of in the main application thread. This improves the user interface response while transition effects are painting.

Added a new published property EffectPause: Word. This allows you to add a delay after a transition completes painting, and before the OnEffectEnd event occurs. The delay is in milliseconds and it occurs in the transition drawing thread, not the main application.

The ProcessMessages property used with transition effects is no longer required and has been removed.

The units abcufxa.pas and abcufxb.pas are no longer used. All transition effects are merged into one thread class in the abcufx.pas unit.

Transition Effects used in TabcAnimationFrame, TabcPage and TabcFormPanel

As with TabcEffectsImage, transition effects have been redesigned to run in separate threads instead of in the main application thread. These transitions are typically used in a synchronous mode, where other actions are needed on completion. They now automatically process messages while waiting for the thread to complete. The ProcessMessages property has been removed.

The transition effects capture of form and control images has been improved significantly. The utility functions in unit abcutilf.pas include a rewritten version of abcGetControlBitmap to work with most windows common controls, toolbars, richedit, scrollbars etc. There is also a new utility function abcCopyWindowFromDesktop which can be used to capture an image on screen.

TabcButtonBar, TabcButtonPage

Added a ButtonColor property to allow buttons to change from the default clBtnFace color.

Added a new boolean property ButtonEnabled to TabcButtonPage. This allows individual buttons on TabcButtonBar to be visible but disabled. Set this property to False to disable the button for the page. The disabled button is drawn grayed and cannot be selected or edited when disabled.

TabcButtonList

Added a new boolean property to list items. TabcButtonListItem.Enabled allows individual button items to be disabled. The default is to enable all items. Disabled items are drawn grayed and cannot be clicked, selected or edited. If the list item is linked to a TAction, the enabled property is also linked.

Added a new property GroupIndex: integer. This allows multiple button lists within the same parent control, or on the same abcButtonBar to only have one selected item. The GroupIndex only applies if it is non-zero and the Options property of the ButtonList includes [ablKeepSelected]. To use this property, set all the abcButtonLists to have the same non-zero GroupIndex and the ablKeepSelected value in the Options property.

Added a new property ScrollButtonStyle. TabcScrollButtonStyle = (asbDefault, asbFlat, asbRect). This allows flat style scroll buttons to be drawn in the button list.

Added a new Options value, ablHideCaptions. Adding this value to Options draws the buttons with the icon only and no caption.

Added a published property ItemSpace: Byte; This allows the vertical space between items to be changed. The default is 5 pixels.

Changed the updating of ActiveIndex and SelectedIndex properties to stop subsequent index changes while events are processing.

TabcMainMenu

Added functions to support manual merging of two or more main menus. The target menu must be connected to an abcMenuToolbar before merging. 

procedure Merge(Menu: TMainMenu); adds Menu items to the target, inserting them in GroupIndex order. The Menu argument must be a TMainMenu or descendant TabcMainMenu. Multiple menus can be merged by calling Merge for each menu. If the Menu argument is nil, all merged menus are removed.

procedure Unmerge(Menu: TMainMenu); removes Menu items from the target.

Note these functions are not required for merging MDI children - the active MDI child's menu is merged automatically.

TabcMenuToolbar

Added AutoLineReduction and AutoHotkeys features.

TabcAnimationFrame, TabcButtonBar

Added performance enhancements to skip animation delays when loading the control.

TabcPage used in TabcAnimationFrame

Added public FreeForm method to set the Form to nil and also free it.

TabcPicSpeedBtn, TabcToolbarButton and DB Navigator Buttons

Added a performance tuning option to reduce the use of GDI resources. This feature is most useful for applications running on Windows 95 or 98.

The options is set using a new global variable ABC_GLYPHS_SAVE_GDI: Boolean = False; in unit abcutilg.pas.

When this variable is set to true, abc graphic buttons will reduce GDI resource use by freeing image handles when not needed for creating button glyphs. Using this option, GDI resource use can be dramatically reduced, however there is a slight runtime performance decrease when changing button states. This option only affects buttons using a Picture or Bitmap property.  For Windows NT and 2000 development, use of the ImageList property is recommended.

To use this option you should set the global variable in the initialization section of one of your units, or in the project dpr file before any forms are created.

TabcCheckListBox

Added properties to change the painting of the selected item. 

property ShowSelectedItem: Boolean; default True; highlights the text and background color of selected items.

property ShowFocusRect: Boolean; default True; draws a focus rect around the selected item.

Setting both properties to false allows selected items to be drawn the same as unselected items.

TabcDBDateTimePicker

Changed default display formatting to make a zero datetime blank, instead of "12/30/1899".

Changed the default dropdown behaviour to make a zero date calendar page to Today, instead of December 1899. 

Added the DefaultDate property to specify a different calendar default to show for zero dates. (A DefaultDate value of zero is interpreted as Today).

Added several new properties to allow custom display formatting of dates and times:

The DateFormatString and DateFormatZero properties are used to define custom display formats for non-zero and zero values. 

When DateFormatString is empty, the default dfShort or dfLong or dtkTime format is set, using the Delphi date and time formatting variables in  SysUtils.

When DateFormatZero is empty, zero dates are displayed as blank.

The OnFormatDate event can also be used to inspect the display value and to supply a custom formatting string.

Refer to the latest Microsoft SDK documentation for complete description of formatting strings. The following is an extract from the SDK:

Date and time format elements will be replaced by the actual date and time. They are defined by the following groups of characters:

"d" The one- or two-digit day. 
"dd" The two-digit day. Single-digit day values are preceded by a zero. 
"ddd" The three-character weekday abbreviation. 
"dddd" The full weekday name. 
"h" The one- or two-digit hour in 12-hour format. 
"hh" The two-digit hour in 12-hour format. Single-digit values are preceded by a zero. 
"H" The one- or two-digit hour in 24-hour format. 
"HH" The two-digit hour in 24-hour format. Single-digit values are preceded by a zero. 
"m" The one- or two-digit minute. 
"mm" The two-digit minute. Single-digit values are preceded by a zero. 
"M" The one- or two-digit month number. 
"MM" The two-digit month number. Single-digit values are preceded by a zero. 
"MMM" The three-character month abbreviation. 
"MMMM" The full month name. 
"t" The one-letter AM/PM abbreviation (that is, AM is displayed as "A"). 
"tt" The two-letter AM/PM abbreviation (that is, AM is displayed as "AM"). 
"yy" The last two digits of the year (that is, 1996 would be displayed as "96"). 
"yyyy" The full year (that is, 1996 would be displayed as "1996"). 

To make the information more readable, you can add body text to the format string by enclosing it in single quotes. Spaces and punctuation marks do not need to be quoted. 

Note: Nonformat characters that are not delimited by single quotes will result in unpredictable display.

For example, to display the current date with the format "Today is: 04:22:31 Tuesday Mar 23, 1996", the format string is "'Today is: 'hh':'m':'s dddd MMM dd', 'yyyy". To include a single quote in your body text, use two consecutive single quotes. For example, "'Don''t forget' MMM dd',' yyyy" produces output that looks like: Don't forget Mar 23, 1996. It is not necessary to use quotes with the comma, so "'Don''t forget' MMM dd, yyyy" is also valid, and produces the same output.

TabcButtonList Added a new event OnUnselectItem. This occurs when the selected item changes, immediately before the OnSelectItem event; and it also occurs when the SelectedItem is cleared.

Enhanced the behaviour of the arrow keys. They now activate an item (i.e. raised, like mouseover) instead of selecting it (lowered). They now wrap in a loop from the last item to the first item.

Added Enter and Space key handling to click the active item. This causes the active item to be selected. The OnSelectItem and OnClick events will occur.

Added Esc key handling to clear the selected item (when ablKeepSelected is included in Options). The OnUnselectItem event occurs.

 

Bugs Fixed in Release 5.3.1:

 

Component Description

Dataset Adapter Classes

Modified code that selects a dataset adapter class to support descendant dataset classes as well as the registered dataset class.

TabcDBTreeView

Fixed bug in Options.adtClearOnCollapse - this option value did not function at all.

TabcBusy

Fixed bug causing form sizing errors with large text messages and using the autosize feature.

TabcnpInsert

Fixed bug causing the button not to be disabled when the dataset state changes to dsInsert (i.e. when the button is clicked).

TabcnpIndexCombo

Fixed bug causing an access violation under some conditions when populating the index items, and when switching between datasets.

TabcQuadSplit and other splitter components

Fixed bug causing proportional sizing (SplitHPercent, SplitHScaled; and SplitVPercent, SplitVScaled) to fail under some conditions when a form is loaded.

TabcMenuToolbar

Fixed bugs in key processing for arrow keys and Alt+arrow keys, also for selecting MDI children from the Window menu. Improved response of F1 key. Improved speed when loading.

Changed drawing for maximized MDI children to not show the child system menu when the child BorderIcons does not include biSystemMenu. Also show the correct icon for different child forms.

Changed Hints to show on disabled menu items.

Fixed bug moving mouse over disabled menu items.

Fixed bug where MainMenu property could not be changed at runtime.

Fixed bug when the menu is on a docked form or a subform, where arrow key or mouse move does not automatically drop down the next menu.

TabcMainMenu

Changed menu updating, to automatically update the abcMenuToolbar when menu items are changed, either by setting menu item properties or links to Actions.

TabcPopupMenu and TabcMenuToolbar

Changed display of submenus to call Action.Update for any linked menu item Actions before the submenu is shown.

TabcPopupMenu

Fixed bug causing an access violation when a toolbar button's popup menu is showing when the form is closed with a mouse click.

TabcMenuImages

Fixed bug when adding items at runtime.

TabcToolbar

Added published Font and ParentFont properties. These properties are not used by the toolbar, but can be used by child controls.

TabcButtonList

Fixed bug where FrameBottomColor and FrameTopColor did not repaint when changed.

TabcButtonBar

Fixed bug changing ActivePage while form containing the ButtonBar is showing.

TabcButtonPage

Fixed bug not hiding page when Page.ButtonVisible is set to false.

TabcPage used in TabcAnimationFrame

Fixed bug where setting FormLoaded to False recreates the handle of the abcPage; causing autocreate option to fail to create a form the next time the page is shown.

TabcRichEdit

Fixed bug causing word wrapping not to adjust when the control is resized by small increments.

Resource leaks

Fixed some small resource leaks in TabcSplash, TabcFontComboBox and TabcLauncher.

TabcTransitionEffect type

The effect value "atfShapeStarBust" has been renamed as "atfShapeStarBurst".

All Setup Programs

Our setup programs used a WISE Installer script function 'If Module Loaded in Memory' which is incompatible with the notebook touchpad manager program "SynTpEnh.exe", used on Dell Inspirion and possibly some other notebook computers. The setup scripts have been modified to work around this problem, by removing this check. You must make sure that Delphi or C++ Builder are not running when you run the setup programs, otherwise the setup will not complete.

Release 5.3.0

This release was replaced with 5.3.1, due to a version labelling error on some files.
 

Enhanced Components in Release 5.2.2:

 

Component Description
TabcButtonBar Added a new value abbShowFocus to the Options property.

Set this option to show a focus rectangle around the button on the active page, whenever the ButtonBar or a child has focus.

This is not a default value; the default options are [abbAnimate, abbHotTrack, abbDragTrack, abbInPlaceEdit].

TabcButtonList Added a new event OnUnselectItem. This occurs when the selected item changes, immediately before the OnSelectItem event; and it also occurs when the SelectedItem is cleared.

Enhanced the behaviour of the arrow keys. They now activate an item (i.e. raised, like mouseover) instead of selecting it (lowered). They now wrap in a loop from the last item to the first item.

Added Enter and Space key handling to click the active item. This causes the active item to be selected. The OnSelectItem and OnClick events will occur.

Added Esc key handling to clear the selected item (when ablKeepSelected is included in Options). The OnUnselectItem event occurs.

 

Bugs Fixed in Release 5.2.2:

 

Component Description
TabcButtonBar Fixed bug causing control to process Ctrl+Tab keystrokes when it is not focused.
TabcButtonList Fixed bug causing OnClick event to occur twice when an item is clicked.
TabcMenuToolbar Fixed bug causing errors changing the BarSize property at designtime.
 

Enhanced Components in Release 5.2.1:

 

Component Description
TabcBackground, TabcMDIBackground, and other components using TabcGradient object Added several gradient drawing options for better performance, including support for windows API GradientFill on Windows 98 and 2000. This is controlled by two new properties, DrawMethod and DrawBuffered.

Property DrawMethod: TabcGradientDrawMethod = (agdDraw, agdStretch, agdWinAPI). Value agdDraw implements drawing using Windows graphics commands. Value agdStretch uses the agdDraw method internally and draws using StretchBlt from a small internal buffer. agdWinAPI draws using the windows GradientFill command. If the platform is not Windows 98 or 2000, this defaults to the agdDraw method.

The default value is agdDraw.

Property DrawBuffered: Boolean. If true, the gradient fill is cached in an internal buffer. Initial drawing or resizing the gradient fill is slower. Redrawing at the same size is often faster and can reduce screen flicker. If you are using DrawDirections ddRLDiagonal or ddCenter and the agdDraw method, it is recommended you set DrawBuffered to true. This property is always true for DrawMethod agdStretch.

The default value is False.

Performance Optimisation: We found in testing that performance depended on the operating system, video card, color depth, size of the gradient fill, the draw direction and draw steps. In most cases DrawMethod=agdDraw and DrawBuffered=False gives best performance, especially using draw direction ddVertical. When using DrawMethod=agdDraw, the draw directions ddCenter and ddRLDiagonal will cause the screen to flicker unless DrawBuffered=True.

TabcWelcomeTips Added modeless display and progress bar options to this dialog.

The default display of the dialog is now modeless, so it can display while the application main form continues to load. The dialog can be controlled by two new properties: StayOnTop: boolean (defaults to True), and ShowModal: boolean (defaults to False).

Added an optional progress bar and message at the bottom of the Welcome dialog, to use with the modeless display. To display the progress bar, set the ShowProgress property to True. The progress message is set by the CaptionProgress property. To adjust the divisions of the progress bar, use the ProgressMax, ProgressMin, ProgressPos and ProgressStep properties. The following public methods can also be used to adjust the progress position and message while the dialog is showing: procedure StepBy(Delta: integer); procedure StepIt; procedure StepByMsg(Delta: integer; Msg: string); procedure StepItMsg(Delta: integer; Msg: string);

Note the progress bar cannot be adjusted when ShowModal=True.

 

Bugs Fixed in Release 5.2.1:

 

Component Description
TabcBackground, TabcMDIBackground, and other components using TabcGradient object Redesigned background drawing to work around performance problems and errors with some display settings and video cards (particularly Matrox g200).
TabcWelcomeTips Fixed bug causing "File not found" error messages to appear when showing the Welcome dialog.
 

Enhanced Components in Release 5.2.0:

 

Component Description
TabcAnimationFrame pages - TabcPage component Added a new FormActions option, afaShowExisting to allow loading forms automatically created by Delphi. This means the FormName property of the panel will be synchronized with the form unit variable of the same name. Added events to modify the behaviour when the Form or FormName properties are changed. The OnCloseQuery event of the loaded form occurs before the form changes. A new OnFormChanging event is called, allowing you to cancel the change. A new OnFormChange event occurs after the form changes. Changed the transition behaviour to show the transition when the form changes.
TabcBackground and TabcMDIBackground Optimised gradient painting performance using TabcGradient object. Changed the MDIBackground painting to allow scroll bars on the MDI main form, using the new ShowScrollBars property.
TabcBusy Added a WordWrap property to allow Message1 and Message2 text to wrap within the busy dialog box. The DlgWidth can be used to specify width, or the width can be autosized to the AVI width.
TabcCheckListBox Added a new public property AsInteger to allow the checked state of all items to be set or read as an integer value. The integer is converted to/from binary digits where 1=checked and 0=unchecked.
TabcFormPanel Added a new FormActions option, afaShowExisting to allow loading forms automatically created by Delphi. This means the FormName property of the panel will be synchronized with the form unit variable of the same name. Added events to modify the behaviour when the Form or FormName properties are changed. The OnCloseQuery event of the loaded form occurs before the form changes. A new OnChanging event is called, allowing you to cancel the change. A new OnChange event occurs after the form changes.
TabcMDITiledImage Changed painting to allow scroll bars on the MDI main form, using the new ShowScrollBars property.
TabcMenuOptions in abc menu components Added a MinWidth property to allow a minimum width for a menu.
TabcMenuToolbar Added a published BarSize property of type TabcMenuToolbarSize = (amsOffice, amsDelphi); The default value is amsOffice which creates smaller buttons and toolbar. The amsDelphi option creates slightly larger buttons and toolbar.
TabcTrayIcon Added a public method ShowForm to show the form owning the component. This should be used instead of TForm.Show when the form can be hidden on minimize.
TabcSingleInstance Changed the way this component terminates applications. Previously the component always called the Halt procedure, which has been found to cause errors unloading DLLs. Added a TerminateBy property to allow the method of program termination to change depending on your requirements. TabcTerminateMethod = (atmAppTerminate, atmExitProcess, atmHalt, atmTerminateProcess); The default uses Application.Terminate. Added optional detection of multiple instances of an application, for instance if you want to allow 2 or 3 instances of the application to run. To use this feature set the MultipleInstances property to True and use the OnPreviousInstance event to decide whether to terminate this instance. OnPreviousInstance uses the following event type: TabcHaltEvent = procedure (Sender: TObject; PreviousInstances: Integer; var HaltThisInstance: Boolean) of object;
TabcVersionLabel Modified the behaviour of the TabStop property. If this is set to zero, no tab expansion is used in the label formatting.
TabcWelcomeTips Added a published property SharedTipFileName: TFileName. This can be used to specify a shared file in a LAN environment, so that Tip text can be stored and updated in one place, while each user maintains their own settings for the tip sequence number. The shared file is expected to be in ini file format, containing a [TIP TEXT] section, with items Tip1=, Tip2=, etc.
interface change in units abcexctl and abctileb Moved the declaration of TabcDrawDirection to unit abctileb.
abcutilg Added function abcScreenPixelFormat: TPixelFormat; this returns the monitor resolution as type TPixelFormat.
abcutilg Added a global variable ABC_TRANS_COLOR = RGB(255,128,255) (Pink) This variable is used for masking images and text in TabcEffectsImage and other components. You can set this variable to a different value in your project if you need to use this color.
abcutilw Added function abcNetworkIsConnected: boolean. Returns true if Windows API can find any network connection.
 

Bugs Fixed in Release 5.2.0:

 

Component Description
TabcAnimationFrame Fixed bug causing animation to fail with an exception when the AnimationSteps = 0.
TabcButtonBar Fixed a bug activating a page when the active page is removed from the button bar.
TabcButtonList and TabcButtonBar Changed the list activation method when an accelerator (Alt+) key is selected.
TabcCheckListBox Fixed a rare bug causing recursion when the checked status of an item is changed during the OnCheck event.
TabcDBEditLabel Fixed bug causing Delphi IDE to crash when Enabled is set to False.
TabcDBEditWin Changed the focus method used to select the first edit control.
TabcDirectoryDialog Changed internal windows API calls for network detection. Added labels to the dialog form for translation requirements.
TabcEffectsImage Changed accelerator key handling to ensure Alt key is also pressed.
TabcFormNotebook, TabcFormTabbedNotebook Fixed a bug causing an access violation while destroying the form containing the notebook.
TabcMenuToolbar Fixed a bug causing a bitmap and icon handle resource leak when maximizing MDI child forms.
TabcNavPanel, TabcNavToolbar Added code to remove datasource, datafield and active form change notifications when the application is terminating.
TabcPageSetupDialog Added a workaround for a bug in Windows 95, setting the hide network button option.
TabcPicBtn, TabcPicSpeedBtn Added code to stop internal object references when destroying the button. This bug caused an access violation when shutting down some programs.
TabcPictureGroup Changed accelerator key handling to ensure Alt key is also pressed.
TabcShapeButton Changed accelerator key handling to ensure Alt key is also pressed.
ABC splitter controls Fixed a bug when a second splitter is placed inside the first. This caused application load errors (division by zero) and the Delphi 5 IDE to crash.
TabcToolbarButton Changed accelerator key handling to ensure Alt key is also pressed.
TabcTrayIcon Fixed icon sizing bug causing component to fail in Delphi 4.
ABC forms in Delphi 3 Some Delphi 3 forms were saved with Delphi 5 properties causing errors when loading the form. Forms have now been tested and corrected for Delphi 3.
 

New Components in Release 5.1.0:

 

Component Description
TabcDBDateTimePicker This is a data bound version of the Windows/Delphi date time picker. It adds DataSource, DataField and DataFieldCheckBox properties. To use the control, connect the DataSource and then connect the DataField to a DateTime field in your datasource. The Kind property determines whether a date or time is displayed. The DataFieldCheckbox property is an optional connection to a boolean field on the datasource. If this field is connected the control displays a checkbox to select a valid date. See the Demo\DBDate directory for a sample project.
TabcDBMonthCalendar This is a data bound version of the Windows/Delphi month calendar. It adds DataSource, DataField and DataFieldEndDate properties. To use the control, connect the DataSource and then connect the DataField to a DateTime field in your datasource. If the DataFieldEndDate is connected, the calendar allows range selection instead of a single date. See the Demo\DBDate directory for a sample project.
TabcTrayIcon This is a component to link an icon, form, popup menu and tooltip hint to the Windows system tray. It lets you hide the application from the task bar and hide the form when minimized. The icon can be animated using an imagelist. On Windows 95/98 the application can be hidden from the Ctrl+Alt+Del process list. If IE4 is installed the application can detect TaskBarCreated messages and recreate its icon. If IE4 is not installed the component can monitor the taskbar using a timer and recreate its icon, for instance if a new user logs on. This component can be used in a service application on Windows NT. See the Demo\Tray directory for sample projects for normal and service applications.
TabcRichEffectsImage This is an extension of the TabcEffectsImage. It allows you to display a rich text multiline caption on top of the image.
TabcNavFormLink This component is used with the DB Navigator components. It is used to register each form on which you want to detect active datasource or active field changes. This replaces the need to code the NavPanelNotifier.AddForm and RemoveForm methods in your application. Forms which already contain an abcNavPanel or abcNavToolbar are now registered automatically and do not need this component.
New Dataset Adapters The dataset adapter layer has been updated to add third party dataset adapters for DBISAM, ASTA, CodeBase Components. These adapters and sample projects are found in the Adapters\3rdParty directories. The Apollo dataset adapter has been updated for Apollo 5.02 release.
 

Enhanced Components in Release 5.1.0:

 

Component Description
TabcDBTreeView Added a new public method SyncNodeToSource(Dataset: TDataset) to synchronize the tree view selected item with scrolling in a dataset. This method can be called from the OnScroll event of the dataset.

Added new public methods to synchronize data updates with tree view display. The new methods are:

function SelectNodeContaining(aBookmark: TBookmarkStr; aTreeLevel: integer): Boolean;
function LocateNodeWithBookmark(aBookmark: TBookmarkStr; aTreeLevel: integer): TTreeNode;
function AddNodeWithBookmark(aBookmark: TBookmarkStr; aTreeLevel: integer): TTreeNode;
function UpdateNodeWithBookmark(oldBookmark, newBookmark: TBookmarkStr; aTreeLevel: integer): Boolean;
function DeleteNodeWithBookmark(aBookmark: TBookmarkStr; aTreeLevel: integer): Boolean;

Added two new demo programs to illustrate methods of synchronizing tree view data with table updates. These are in the \demo\dbtree directory. There are two demos - one for Paradox and one for other databases.

Note these methods do not seem to work with Paradox tables, because the Paradox table bookmarks change after any add/change/delete on the table. For Paradox, the tree level must be reloaded after update. See the demo programs for details.

TabcEffectsImage Added a Caption, Font and related properties to display text on top of the image. The caption can be displayed in various raised, embossed or shadowed styles using the CaptionStyle property.

The Transparent property has been enhanced to support partialy transparent images, using the bottom left pixel of the picture to determine the transparent color.

New public properties and methods have been added to allow you to change the EffectSelection list elements at runtime:

procedure AddSelectedEffect(Effect: TabcTransitionEffect);
procedure RemoveSelectedEffect(Effect: TabcTransitionEffect);
function IsEffectSelected(Effect: TabcTransitionEffect): Boolean;
property EffectSelCount: Integer;
property EffectSel[Index: Integer]: TabcTransitionEffect;

TabcButtonList Added new actions for the user to copy and delete items. ablAllowDragCopy value in Options lets the user copy items on drag drop when the Ctrl key is pressed when dropping. ablAllowDelete and ablConfirmDelete values in Options let the user delete selected items using the delete key. Associated with these actions are several new events: OnCopyItem and OnDeleteItem occur before the action and allow the action to be cancelled. AfterCopyItem occurs once a new item has been created allowing you to modify the copy.

Added a new event OnDblClickItem to detect double clicks on items in the list.

TabcNavPanel and TabcNavToolbar Changed the AutoField and AutoDatasource properties behaviour. Previously active field changes would only be detected if AutoDatasource and AutoField were both set. Now it is possible to fix the datasource setting AutoDatasource = false and still receive field change notifications using AutoField = true.

Changed the registration of forms with the NavPanelNotifier so that forms containing a NavPanel or NavToolbar are automatically registered. This default can be turned off using the new RegisterForm property.

TabcnpFilterExpression, TabcDBFilter - Filter Expression Dialogs Modified filter expression dialogs to append an asterisk to the search text when using partial compare on a string field. This is required by the BDE when wanting to filter all records starting with a value.
TabcAnimationFrame pages - TabcPage component Changed the behaviour on page change of the animation frame to reduce resource use. The window handle of the abcPage is now destroyed after changing pages. The afaDestroy option in the FormActions property now causes an embedded form to be destroyed immediately after the page change, instead of when the abcPage is destroyed.
TabcRichEdit Moved the string constant declarations for the popup menu items to resourcestrings in the abcconst unit to allow translation. The popup editor form can be translated using form inheritance and registering the descendant class.
 

Bugs Fixed in Release 5.1.0:

 

Component Description
TabcPictureGroup Removed error causing access violation when Picture property is empty and PicAlignment is right aligned.
TabcBusy Fixed bug causing a temporary file to be created and not deleted each time the progress dialog is shown when the AVI resource is embedded in the component data.

Fixed a bug causing the DlgLeft property not to be set.

TabcButtonList, TabcButtonBar, TabcButtonPage Fixed bug in TabcButtonBar when the page index changes rapidly in response to fast clicking on buttons. This error caused buttons and pages to temporarily disappear from the screen. Now subsequent page index changes are ignored until all controls have been updated to reflect the first change.  Modified handling of accelerator characters to activate the page containing the shortcut when an Alt+ key is pressed for a button list item.

Fixed bug aligning child controls on a TButtonPage using their anchors property. This caused some controls to disappear at runtime.

Removed a bug in TabcButtonList setting its Align property to alNone when not in a TabcButtonBar.

all ABC Menu components Fixed a bug causing menus to size incorrectly on Windows 2000.

Fixed a bug causing menu sizing problems with invisible items in a menu.

Corrected the Fullsize property default to allow menu toolbars to be less than full width (note - this property is ignored on MDI menus, due to the right aligned MDI buttons).

TabcPopupMenu and TabcSingleInstance Fixed bug in TabcPopupMenu that caused a GPF (Runtime error 216) when terminating a second instance of the application using TabcSingleInstance.  This error was reported in Delphi 3.
TabcEffectsImage Bug fixed that causes painting problems or IDE crash when changing the picture data.  This applies to Delphi 3 only, problem did not occur on other versions.
TabcShapeButton Bug fixed that caused a painting problem when two buttons share the same ImageList and one of the buttons is disabled.
TabcToggleBtn Fixed bug causing HintUp and HintDown to display incorrectly when using a group of buttons.
TabcCustomPicSpeedBtn and descendants Changed button painting for the down pattern when used in a group.
TabcHelpManager Changed the Edit method to ensure a help context is edited. Changed the operation of the ReadOnly property so that the read only help display can always be used and the Edit method can then be called to display in edit mode.
TabcEditLabel Fixed a bug in the Enabled property causing the Delphi 5 IDE to crash when the value is changed.
TabcDirectoryDialog Fixed a bug causing the Network button not to display a network connection dialog.
C++ Builder Compiles Removed a code declaration for the abcDegToRad constant that caused compiler warnings and problems using precompiled headers.
TabcToolbarButton Fixed a bug causing an access violation if the DropDownMenu property of the button changes during the click event (e.g. if the toolbar is destroyed during the click event).
 

Enhanced Components in Release 5.0.3:

 

Component Description
User Guide Document The user guide has been revised and expanded to match the latest product features. New 150 page PDF document - this manual is now published in Adobe Acrobat PDF format, replacing the RTF version.  You will need a copy of Adobe Acrobat Reader to view the document. It is formatted for easy navigation and printing.
New Demo Programs \ANIMFRAM contains a new demo illustrating page transition effects and form embedding in a TabcAnimationFrame.

\BTNBAR shows how to add pages, button lists and items to a TabcButtonBar at runtime.

\DSAPPEXC shows how to use the TabcDSAppException component, use the Delphi Interbase components and ABC Dataset Adapter class.

\MDITABS demonstrates the TabcMDITabs component.

\TITLEGRD demonstrates the TabcTitleGradient component.

Transition Effects Property and Component Editor This has been modified for easier use and registered with all components using TabcTransition, in addition to the EffectsImage components.
Transition Effects Property and Component Editor This has been modified for easier use and registered with all components using TabcTransition (AnimationFrame+Page, FormPanel), in addition to the EffectsImage components.
Delphi 4 - Update Pack 3 We have updated our Delphi build environment to use only the latest Update Pack 3 and menu addon files. (affects Delphi 4 users only).
 

Bugs Fixed in Release 5.0.3:

 

Component Description
Resource allocation errors Removed several minor resource allocation / memory leak problems affecting the following units: abcbar, abcedge, abcedtdr, abcedtop, abcedtsv, abclabel, abcmem, abcmopts, abcpage, abcrched, abcshapf, abcspla, abctileb, abctimag, abcutil.
TabcAnimationFrame, TabcPage Fixed IDE bug causing the project to be modified when opening a form containing these components.
TabcButtonBar, TabcButtonPage Fixed button click error while using the inplace editor on another button caption.
TabcButtonList Fixed bug causing an access violation when TabcButtonList is deleted in the form designer.  Fixed edit method to scroll item into view before editing.
TabcDBAppException, TabcDSAppException Fixed inheritance error causing exception message/log events to occur twice.
TabcRotLabel Fixed bounds adjustment bug causing label position to move when using the AutoSize and RotateCenter properties.
TabcTitleGradient Fixed window caption painting errors on MDI main forms and when the enabled property was false.
Transition effect selection list editor Fixed error where the remove and remove all buttons added duplicates to the available items list.
Attached Label components Fixed error causing attached labels not to show when components are first created in the IDE.
 

Enhanced Components in Release 5.0.2:

 

Component Description
TabcDBRecordCount Added caption painting design change for use in a DBControlGrid.  This label can now be inserted in a control grid to show the record number of each cell in the grid.
TabcDBCurrencyLabel Added caption painting design change for use in a DBControlGrid.  This label can now be inserted in a control grid to show the currency text for each cell in the grid.
TabcButtonList Added a new value for the Options property: ablHideAccelChars.  This allows an & character to be included in the caption, but not displayed or underlined when painting the caption.  The enumerated type values are now TabcButtonListOption = (ablAccelChars, ablAcceptItems, ablAllowDrag, ablInplaceEdit, ablKeepSelected, ablWordWrap, ablFlyoutHints, ablHideAccelChars);  The two values albAccelChars and ablHideAccelChars are mutually exclusive.
 

Bugs Fixed in Release 5.0.2:

 

Component Description
TabcCurrencyLabel and TabcDBCurrencyLabel Fixed bug causing values to be incorrectly translated, for instance twenty showed as thirty, thousands showed as millions.
TabcRichEdit Added code to save the formatted text in the IDE when the window handle is recreated.  Previously the formatted text was lost whenever a property such as scrollbars changed.
 

Architecture Changes in Version 5:

 

Component Description
Companion Edition We have added a free "Lite" version of ABC, which is built as one runtime package and one designtime package, and requires the BDE.  This has larger packages than the licensed versions of ABC and is an unoptimised build.
Runtime and IDE packages In the Runtime and Pro versions we have restructured ABC Packages to allow separation of BDE and other database functionality.  BDE, MIDAS, ADO and InterBase support are provided in design and runtime packages separated from the core data controls.   See below for full details of packages.
Dataset Adapter Framework Some ABC data access components and data controls use various BDE or Table - style methods for filters, index selection, navigation and database transactions.  We have implemented an object-oriented dataset adapter layer to give our controls a consistent interface and allow various features to be enabled, disabled or mapped differently to different TDataset classes.  We have included components and packages for BDE, ADO, MIDAS and InterBase Express interfaces.  We have also included source code for common third party databases.  An ABC dataset adapter unit must be added to your project when using any of the ABC DB Navigator, Data Controls or Data Access Controls.  See below for further details.
Version Support ABC Version 5 no longer supports Delphi 1 or 2, or C++ Builder 1.  ABC Version 4 is available for these platforms.
 

New Delphi 5 IDE and Runtime Features:

 

Area Description
ABC Component Browser We have added a new menu item to the Delphi IDE: Help | Browse ABC Components. This opens a dialog which responds to application hint events as you move the mouse across the component palette.  The dialog displays a short description of each component, similar to what you might see in other third-party components' About or Version properties.  This ABC feature has no runtime overhead.  The dialog can also open Help on the last browsed component; launch the ABC 5 Demo application by clicking the Explore button; or link to our web site.  [Not supported in Delphi 3 or C++ Builder 3]
ABC Property Category We have added a new Object Inspector property category to identify those component properties which are unique or significantly modified in ABC components.
Frames support in the IDE We have modified several property and component editors to disable control creation in TFrame instances.  We have modified some controls that previously expected to be placed on a form so they can be used on Frames as well.  We have identified some components, such as TMDIBackground which are expected to be used on an MDI Main Form only.  These components will raise an appropriate exception in the IDE if they are not placed on an MDI Main Form.
ImageIndex property editor We have written an owner-draw property editor for imagelist indexes.   This supports controls where the ImageList and ImageIndex values are defined as properties of the one control, as well as the Delphi case where the Images property belongs to the Parent control.
Frames support at runtime Container controls which allow runtime creation of TForm classes can now also create TFrame instances as well.  This includes TabcPage used with TabcAnimationFrame; TabcFormPanel and TabcFormNotebook.
Splitter Controls component editor We have added a new "Flat Style" option to set all the Pane and border properties needed to give the splitter a flat appearance on all outside edges, with sunken panes.
 

New Components in Release 5.0.1:

 

Component Description
TabcDSAppException This is an open TDataset version of the database exception message and logging component TDBAppException.  This component uses two properties MsgDataSource and LogDataSource to link to the required datasets.  Note:  the datasets are expected to contain particular fields, see TabcDBAppException for details.
TabcTitleGradient This component can be placed on a form to alter the painting of its Title Bar.  Options include gradient effects, different fonts for main/child form parts of the caption and owner draw extension.  Options also allow choice of custom or system fonts and colors, plus disabling of the component on low (256) color systems or on Windows version 5 and higher systems.
TabcMDITabs This is a tab control that can show buttons or tabs.  It is placed on an MDI Main Form.  The tabs are generated automatically at runtime for each MDI Child form.  When a button is clicked the appropriate child form is activated.  The Options property lets you choose whether to show the child form's Caption and/or Icon on the tab control.  If you change the child form captions in your code, after creating the form, call the RefreshTabs method to update the tab labels.
TabcBDEAdapterReg This is a helper component to register the ABC BDE dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application and you are accessing BDE TTable, TQuery or TStoredProc components.
TabcADOAdapterReg This is a helper component to register the ABC ADO dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application together with ADO dataset components. (Used with Delphi 5, Enterprise version or ADO add-ons).
TabcClientAdapterReg This is a helper component to register the ABC Client dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application and you are accessing MIDAS TClientDataset components. (Enterprise versions only).
TabcIBAdapterReg This is a helper component to register the ABC InterBase Express dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application and you are accessing IB Express components. (Used with Delphi 5, Enterprise version).
TabcTransition This is a new persistent class to allow flexible bitmap transition effects to be painted to a canvas, using a source bitmap, or by capturing the painting of a form or window.  It is now published in several ABC controls.  The published properties of this object have the same effect as the same properties in TabcEffectsImage.
 

Enhanced Components in Release 5.0.1:

 

Component Description
TabcFormPanel Added FormActions property to control which TForm events to execute when a form is inserted or removed from the panel.  Added Transition property to allow bitmapped transition effects when a form is loaded into the panel.  Published the Transparent property.  For Delphi 5 only:  modified the control to allow Frame classes to be inserted as well as forms.   The FormName property can reference a TFrame descendant class.  The public Form property changes from type TForm to type TScrollingWinControl to accomodate this change.
TabcAnimationFrame Added Transition property to allow bitmapped transition effects when the active page changes.  These effects work on most forms, although we have noticed that Rich Edit controls will not paint offscreen. See also TabcPage.
TabcPage Added ParentTransition property to use the parent animation frame transition effect and added a Transition property for the page.  Added FormActions property to control which TForm events to execute when the page changes.  For Delphi 5 only:   modified the control to allow Frame classes to be inserted into a page as well as forms.  The FormName property can reference a TFrame descendant class.  The public Form property changes from type TForm to type TScrollingWinControl to accomodate this change.
TabcFormNotebook, TabcFormTabbedNotebook For Delphi 5 only:  modified the control to allow Frame classes to be inserted into a page as well as forms.  The Forms property can also reference TFrame descendant classes.  The public FormObjects property changes from type TForm to type TScrollingWinControl to accomodate this change.
TabcSplash Added new properties to allow a shaped form splash screen. (as shown in the latest ABC demo application).  Set ShapeForm to true to shape the form using a color mask on the border of the splash screen bitmap.  Set ShapeTolerance to allow a color range for the transparent color (useful for JPG and high resolution images).
TabcButtonList Modified the Items collection item class TabcButtonListItem to support Actions.  The new Action property controls the Caption and ImageIndex of the item in the buttonlist and the Action.OnExecute is called when the item is clicked.
ABC Toolbars Added OnCloseQuery, OnMouseDown, OnMouseMove, OnMouseUp events to TabcToolbar/TabcToolWindow.  Added DropdownArrowWidth property to TabcToolbarButton to allow the arrow width on a dropdown combo style button to be changed.
TabcDBHintManager The HintTable property is now a TDataset, not TTable.  When using this component, include the appropriate ABC dataset adapter unit in your application, or add one of the TabcXXXAdapterReg components.
TabcDBHelpManager The HelpTable property is now a TDataset, not TTable.  When using this component, include the appropriate ABC dataset adapter unit in your application, or add one of the TabcXXXAdapterReg components.  Added a new DefaultTopic property which can be used to supply a topic key when the search key is not found.
ABC DB Navigator Controls These now use the open dataset adapter framework.  When using any of these components, include the appropriate ABC dataset adapter unit in your application, or add one of the TabcXXXAdapterReg components.
ABC Data Controls These now use the open dataset adapter framework.  When using any of these components, include the appropriate ABC dataset adapter unit in your application, or add one of the TabcXXXAdapterReg components.  Note: the controls on the ABC BDE palette page do not require the adapter unit.
TabcFormHook Added new protected properties and methods to allow descendant classes to subclass an MDI client window as well as the form window.
TabcFormMessageHook Added a new AfterMessage event.
ABC Splitter Controls Added a new SplitMoveStyle property.  This replaces the MoveImmediate boolean property and also adds a range of dark to light color options for the lines painted when dragging the splitter.  Adds type TabcSplitMoveStyle = (amsBlack, amsDark, amsMedium, amsMediumLight, amsLight, amsNoLine, amsImmediate).

Changed the SplitBevel property type to allow more appearance options.  Added new published Bevel properties for the contained Pane controls TabcSplitPane and TabcScrollingSplitPane.  These allow a wider range of appearance options, including the popular flat look.  (Use the component editor to apply the Flat Style setting).

TabcSingleInstance Added a new ClosePrevious property.  When set to True, launching a new instance of the application will keep the new instance and close the previous instance, instead of the default behaviour to close the new instance.
New Utility Functions in abcUtilf.pas function abcReplaceAllCount(
  const SubStr, ReplaceStr, S: string; var ResultStr: string;
  MatchCase: Boolean; WholeWordsOnly: Boolean): Integer;
{Replaces all occurences of SubStr in ReplaceStr and returns count of replacements made}

function abcShorten(var str: string; i: Integer): Integer;
{Removes i chars from end of string and returns length of result}

New Utility Functions in abcUtilg.pas procedure abcDrawExpandBox(Canvas: TCanvas; R: TRect; Expanded: Boolean);
{Draws a 3D button with a + Expanded false or - Expanded true}
New Utility Functions in abcUtilm.pas Added variant type conversion functions to convert variants, varrecs and arrays.

function abcVarRecToVariant(const Value: TVarRec): Variant;
{convert a TVarRec into a variant}

function abcConstArrayToVariantArray(const Values: array of const): Variant;
{convert a constant array into a variant array}

type
abcVarRecArray = array of TVarRec;

function abcVariantToVarRecArray(const Value: Variant): abcVarRecArray;
{convert a constant array into a variant array}

function abcVariantToVarRec(const Value: Variant): TVarRec;

GReplace Tool Added support for Delphi 5 text DFM files and simplified the warning messages. 

The source code of this tool is now available in the Pro Version of ABC.

 

New Dataset Adapter Framework:

Some ABC data access components and data controls use various BDE or Table - style methods for filters, index selection, navigation and database transactions.  We have implemented an object-oriented dataset adapter layer to give our controls a consistent interface and allow various features to be enabled, disabled or mapped differently to different TDataset classes.

The performance overhead of this adapter layer has been tested and is minimal in comparison to database access speeds.  In a test, the speed difference was 50 nS per call and the code size addition was 34 kB.

Dataset adapter classes are used with most ABC DB Navigator, Data Control and Data Access components.  To use them in your project you need to add the appopriate dataset adapter unit to your project.  There are several TabcXXXAdapterReg components on the palette which can also do this for you.   When the correct unit is added, the unit itself will contain self-registering code to initialise the right adapter classes for your datasets. 

From the user perspective, the adapter classes are transparent.  All you need to do is add the correct adapter unit or adapter registration component to your project.

 

Dataset Adapter Units in ABC Version 5:

 

Unit Description
AbcdaBDE Adapter unit for BDE access.  Includes adapter classes for TBDEDataset, TTable, TQuery and TStoredProc.
AbcdaADO Adapter unit for ADO access.  Includes adapter classes for TADODataset, TADOTable, TADOQuery and TADOStoredProc.
AbcdaCLI Adapter unit for MIDAS.  Includes adapter class for TClientDataset.
AdbdaIB Adapter unit for InterBase IB Express.  Includes adapter classes for TIBTable, TIBQuery and TIBStoredProc.
Abcda Base unit for adapter class descendants.
 

Helper components for registering adapter units:

 

Component Description
TabcBDEAdapterReg This is a helper component to register the ABC BDE dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application and you are accessing BDE TTable, TQuery or TStoredProc components.
TabcADOAdapterReg This is a helper component to register the ABC ADO dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application together with ADO dataset components. (Used with Delphi 5, Enterprise version or ADO add-ons).
TabcClientAdapterReg This is a helper component to register the ABC Client dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application and you are accessing MIDAS TClientDataset components. (Enterprise versions only).
TabcIBAdapterReg This is a helper component to register the ABC InterBase Express dataset adapter classes at runtime.  It has no properties and a single instance only is required.  Use this component where you ABC Data Controls, DB Navigator Controls or Data Access components in your application and you are accessing IB Express components. (Used with Delphi 5, Enterprise version).
 

Third Party Dataset Adapter Units in ABC Version 5:

These units are included as source code, with test projects in the \ABC5\Adapters\3rdParty subdirectories.  You should copy the appropriate unit and add it to your project when required.  NOTE: these adapters are developed to a Delphi 4 trial version release from each vendor.

 

Unit Description
AbcdaFF Adapter unit for TurboPower Flash Filer.  Includes class TabcffTableAdapter for the TffTable dataset.
AbcdaADS Adapter unit for Advantage Server.  Includes classes TabcAdsTableAdapter for TadsTable and TabcAdsQueryAdapter for TadsQuery.
AbcdaTA Adapter unit for Titan Access.  Includes classes TabcTaTableAdapter, TabcTaQueryAdapter and TabcTaStoredProc adapter for TtaTable, TtaQuery and TtaStoredProc.
AdbdaOE Adapter unit for ODBC Express.  Includes classes TabcOEDatasetAdapter and TabcOEQueryAdapter for classes ToeDataset and ToeQuery.  Note: due to SQL based datasets, there is limited support for methods such as FindKey and Filters.
AbcdaAP Adapter unit for Apollo datasets.  Includes class TabcApolloDatasetAdapter for class TApolloDataset.
 

Dataset Adapter Information For Component Developers and Advanced Users:

The adapters are lightweight, transient TObject descendants with a base class of TabcDatasetAdapter.  They are created and destroyed by ABC components at runtime to interface to a TDataset.  A class factory allows descendant classes of TabcDatasetAdapter to be mapped to different TDataset descendant classes and allows a component to create the adapter class for a TDataset descendant at runtime.

The key to the adapter framework is the classes in unit abcda.pas.  There is a base class TabcDatasetAdapter from which all dataset adapters descend.  It has various public and protected properties and methods to describe the capabilities of the dataset and to pass through dataset access calls. 

If you want to create adapters for other TDataset descendants, refer to the source code in the \ABC5\Adapter\ subdirectories for examples.

 

Issues Converting From ABC Version 4:

 

Area Description
Database Applications An ABC dataset adapter unit must be added to your project when using any of the ABC DB Navigator, Data Controls or Data Access Controls.  For the BDE, drop a TabcBDEAdapterReg component onto the main form of your application, or use the Acbdabde unit in your project (add to project or to another unit's uses statement).
TabcDirectoryDialog, TabcDirectoryEdit Replaced enumerated type TDirectoryOption with the following to avoid a naming conflict with a Delphi 5 property.  The values which were doXXX are now adrXXX.

TabcDirectoryOption = (adrCreate, adrCreatePrompt, adrExistPrompt, adrNoChangeDrive,
adrHideDrive, adrHideNetConnect, adrNoValidate, adrPathMustExist, adrPathNotExist,
adrShowHelp, adrUpdateHistory);

TabcDirectoryOptions = set of TabcDirectoryOption;

Controls using ImageList index properties. The type of these properties has been redeclared from Integer to TImageIndex, which is also an integer type.  For versions prior to Delphi 4, TImageIndex is also declared in the relevant unit.  This is a note only, the change should not effect existing code.
String Resources All numbered string resources have been replaced with relocatable resourcestring definitions.  This enhances compatibility with third party products.   This should not effect any existing code, unless you have translated strings.
DB Filter components Filters have been restructured to work with the dataset adapter framework.   Some minor changes in execution and in public properties result.  These should not affect most, if any applications.
ABC Splitter Controls The new SplitMoveStyle property replaces the MoveImmediate boolean property.   This will affect your property settings if you have splitter controls with MoveImmediate set to true (not the default setting). you should edit the DFM file for these forms and set the SplitMoveStyle to amsImmediate.  Note the legacy property MoveImmediate may be removed in a future release.

The SplitBevel property has been changed from type TBevelStyle to TBevelCut to allow more property choices.  This could effect existing forms with these controls if you have any non-default values.

The pane controls TabcsplitPane and TabcScrollingSplitPane now have published Bevel properties.  This should not affect existing code, but allows more style options, including the popular flat appearance.   (Flat Style can be applied using the component editor).

TabcFormPanel, TabcFormNotebook, TabcFormTabbedNotebook, TabcPage The type declaration for the OnCreateForm and OnDestroyForm events has changed, in Delphi 5 only, not for prior versions of Delphi.  This will effect any of your code that uses these events.  In Delphi 5 the event procedure parameter of type TForm is replaced with type TScrollingWinControl, to support TFrame classes.

{$IFDEF DELPHI5}
  TabcFormNotifyEvent = procedure (Sender: TObject; const Form: TScrollingWinControl) of object;
{$ELSE}
  TabcFormNotifyEvent = procedure (Sender: TObject; const Form: TForm) of object;
{$ENDIF}
 

 

New Packages in ABC Version 5:

 

Runtime Package Description
Installation: All runtime packages (.BPL files) are version stamped and installed into the Windows System directory.
Numbering: 50 = Delphi 5; 45 = C++ Builder 4; 40 = Delphi 4; 35 = C++ Builder 3; 30 = Delphi 3.
ABC50; ABC40; ABC30; etc Runtime base components and controls that are not data-aware.
ABCDB50; ABCDB40; ABCDB30; etc Runtime data-aware components and controls that use TDataset and TDatasource interfaces (DB.pas).  Also includes the base classes for ABC dataset adapters.
ABCDBD50; ABCDBD40; ABCDBD30; etc Runtime data-aware components and controls that require the BDE (DBTables.pas).  Also includes ABC BDE dataset adapter classes.
ABCDAD50 Delphi 5 only Runtime dataset adapter classes for ADO datasets.  This requires Delphi 5 Enterprise or ADO add-on.
ABCDCL50; ABCDCL40; ABCDCL30; ABCDCL45 Runtime dataset adapter classes for MIDAS client datasets.  This requires Delphi/C++ Builder Enterprise Edition.  There is also source code in the Pro version for ABCDCL35 if needed for C++ Builder 3.
ABCDIB50   Delphi 5 only Runtime dataset adapter classes for InterBase IB Express datasets.  This requires Delphi Enterprise Edition.
IDE Package Description
Installation: All IDE packages use the same names across different Delphi versions.   They install into \abc5\delphi5, \abc5\delphi4, etc. directories.
dclABCxx IDE Shared Property Editors.  This package is required by all other IDE packages and must be installed first.
dclABC_a Toolbars & Menus
dclABC_b DB Navigator Controls
dclABC_c Data Controls
dclABC_d Data Access
dclABC_e Containers
dclABC_f Controls
dclABC_g Dialogs
dclABC_h Multimedia
dclABC_i Buttons
dclABC_j Labels
dclABC_k Utilities
dclABC_l Attached Label Controls
dclABC_m DB Attached Label Controls
dclABCad ADO Dataset Adapter (adapter registration helper component only).    This requires Delphi 5 Enterprise Edition or ADO addon.
dclABCbd BDE - ONLY components and controls, plus adapter registration helper component.
dclABCcl MIDAS Client Dataset Adapter (adapter registration helper component only).     This requires Delphi or C++ Builder Enterprise Edition.
dclABCib IB Express Dataset Adapter (adapter registration helper component only).     This requires Delphi 5 Enterprise Edition.
Companion Edition Description
ABCC50; ABCC45; ABCC40 Single runtime package only.  Unoptimised build with 4 MB + package.   Note this cannot be loaded by an application at the same time as the full version runtime packages.
dclABCC Single IDE package.
 

Bugs Fixed in Release 5.0.1:

 

Area Description
TabcRichEdit Fixed print margins to accurately format output according to the Printer page size and alignment.
TabcSplitPane Fixed bug causing BevelOuter property value bvLowered to be deleted.
TabcEffectsImage Fixed bugs loading images from TImageList, that occured in Delphi 3 only.
TabcKeyState Fixed bug where key states could not be set on Windows NT.
TabcMenuToolbar Added fix for infrequent Windows error occuring when closing an application on Windows 98 only.
TabcSystemMenu Fixed IDE bug where an Access Violation occured when dropping this component onto a datamodule.
TabcDBRangeEdit, TabcnpRangeEdit Fixed bug causing access violation when typing an open-ended range e.g. " A-" into the edit box.  This was a string allocation problem due to changes in the long string type, in Delphi 4.
TabcnpBookmarkMenu Fixed bug causing bookmark items to be added to the menu with a blank caption.  This was a string allocation problem due to changes in the long string type, in Delphi 4.
TabcnpFindReplace Adjusted the find dialog popup position to account for screen position of the button, so the dialog won't pop up off screen.
Packages Tidied up various unit finalization issues which caused access violations in some cases when packages where uninstalled from the IDE.
Companion Edition Packages Removed compiler dependency on VCLMID50 and other Delphi Enterprise packages causing compile errors with Delphi Professional.

 

 

 

  2000 Objective Software Technology Pty Limited