The information here is related to Delphi6, all of which was previously on my old website.
NOTE: All of the fixes available in this unofficial patch were incorporated into the D7 shipping code base.
EditPATCH: Extensive ActionBands Update (Delphi 6.02)
Posted: April 16th, 2002
This update also incorporates all of the ActionBands fixes posted to this website as of April 16, 2002
This file update applies specifically to the ActionBands feature of Delphi 6.0 available in the Professional and Enterprise level products. If you do not use the ActionBands features of VCL then this update is unnecessary.
- Addressed issues of aligned ActionBands not sizing correctly
- Published Canvas property on TActionToolbar
- Improved some of the drawing logic to make it easier to inherit new ActionBands and implement custom drawing styles.
- Fixed problems enabling the menu button that appears at the end of the TActionToolBar
- Fixed logic that determines if there are linked actionlists
- Fixed hints so that they now show shortcuts if that feature is enabled from the Customize dialog
- Added a drag separator button to the Customize dialog to make it easy to create separators
- Fixed the OnPaint event of TCustomActionBar so that it now fires
- Fixed hotkey '&' stripping logic
- Fixed problems with the ChangesAllowed property where items would stay disabled after using the customize dialog.
- Improved drag/drop logic on TCustomActionBar
- Fix a problem where actionbars were not invalidated after items were removed which caused a painting problem if the actionbar had a background bitmap set
- Made the drawbackground logic easier to implement custom handling in a descendant class
- Fixed design item selection logic
- Made TCustomActionPopupMenu.PositionPopup virtual so descendants can control the position of popup menus.
- Changed TCustomActionMainMenuBar to gray items when the application does not have focus (new feature in W2K)
- Improved the menu handling logic for multi-form applications
- Fixed a problem in menu expansion logic for items with submenus
- Simplified menu processing logic
- Fixes for menu item selection logic for improved IDE designtime support
- Improved keyboard handling of menus in IDE designtime
- Moved some of the menu style logic down into StdActnMenus to make descendant menu classes eaiser to write
- Simplified TCustomMenuItem painting logic leaving more flexibility for individual menu styles
- Added Before/After customize events to TCustomizeActionBars action
- Fixed a problem where ActionBands were not repainted after being disconnected from the ActionManager particularly when there is a background bitmap
- Made TCustomActionManager.GetActionxxx method virtual to improve extensibility
- Fixed a problem where calling TCustomActionManager.ResetActionbar didn't refresh an actionbar correctly
- Fixed control painting for large icon ActionItem controls on an ActionBar with a background image
- Fixed problems where menus didn't display correct for large font sizes.
- Changed TActionMainMenuBar to appear greyed when the application loses focus to be consistent with W2K/XP
- Fixed a problem where menu items were not resetting usage data correctly upon being selected
- Changed TCustomizeActionBar action to make the Customize dialog a sub component providing design-time access to its properties
Download:
ActionBands UpdateEditUPDATE: Updated ISAPIThreadPool unit (Delphi 5/6)
Posted: March 3rd, 2002
This is an update to the ISAPIThreadPool.pas unit which was originally included with Delphi 6.0. It further enhances the version included with Delphi 6.02 so we recommend downloading it even if you have the update. To use this unit it must appear in the uses clause of your DPR _after_ the unit ISAPIApp.
This unit is exclusively for use on Microsoft IIS web servers and is not utilized under Netscape servers. If you are running you web application on a non-Microsoft IIS compatible web server you should remove this unit altogether from your DPR.
The changes are as follow:
- Now provides real thread pooling support for high traffic web applications
- Moved FThreads to protected section of TISAPIThreadPool for access in decendant classes
- Added Handle property which provides access to the handle of the IOCompletionPort.
- Added a critical section to protect the intialization of the IOCompletionPort
- Changed call to CoInitialize to use the CoInitFlags variable
- Other minor code cleanup issues
Download:
ISAPIThreadPool UnitEditFIXES: Post Delphi 6.02 ActionBand Fixes (Delphi 6 only Pro and above)
Posted: February 26th, 2002
These are fixes I am providing post Delphi 6.02 for ActionBands since they weren't found/fixed in time for the update. Most of these items are not major bugs but rather small fixes to several areas of ActionBands.
- Shortcuts in ActionBand Hints
- ActionBand OnPaint Event not Firing
- Fixes for TActionClientItem.ChangesAllowed property
- Graying TActionMainMenuBar Items
- Disabled TActionMainMenuBar Items can be Selected
- Using ShortCut Keys for Hidden Menu Items
- Improved menu Selection logic for disabled Items
Fix information: ActionBandBugFixes
!!!!EXPERT: Compiler Message Helper (for use with Delphi 6.0x)
Updated: February 14 2002 - Originally posted: September 18th 2001
Now including support for French!
This Delphi package expert provides additional information on compiler messages. If you are having problems upgrading components, property editors or appliations to Delphi 6 this expert can help save valuable time by providing additional information on how to resolve various compiler messages.
This expert is not the same as the one included with the Extreme Toys
Download:
Compiler Message Helper...EditDEMO: Comprehensive Action demo (Delphi 6.0 only)
Posted: January 8st 2002
This is a demo of nearly all of the actions included with Delphi 6.0. The application uses actions throughout and demonstrates usage of many of the new action classes now included in Delphi. The demo illustrates the Edit, Search, Format, Internet, List, Tab and Dialog actions. It also includes demos of the new AutoCheck and GroupIndex properties of actions as well as the new SecondaryShortCuts property.
Download:
Actions Demo!!!!DEMO: Application to demonstrate using new "List" actions (Delphi 6.0 only)
Posted: January 2st 2002
Here is a demo application that illustrates how to use the new List oriented actions included with Delphi 6.0
Download:
List Actions DemoEditCOMPONENT: TActionManagerHelper (Delphi 6.0 only)
Posted: December 1st 2001
I've created an ActionManager helper component that will assist you working with ActionBands. It has several methods to ease finding, adding and removing ActionBand items dynamically at runtime. Included in the download is a demo application illustrating how to use this component.
I recommend against writing code where you are refering to the ActionBars.Items arrays of the TActionManager or any of it's subcollections because if you allow your users to customize the ActionBands there is potential for them to delete the item you're referring to which would result in an AV in your code. The ActionManagers.Actionbars property has an IterateClients method which should be the mechanism used to locate items. The ActionManagerHelper component wraps this method making it easier to use. Eventually this functionality will be included in Delphi itself.
In addition to the component (which you'll need to manually install) I've posted a demo app that shows how to use the various methods provided.
Download:
TActionManagerHelperEditSEE Delphi 6.0 Update 2 FIXES: ActionBand Source Fixes (6 total) (Delphi 6.0 only)
Posted: October 18th 2001 - Updated November 19th 2001
All of these fixes are included in Delphi 6.02
These are various source code fixes for the Delphi 6.0 ActionBand components and will be incorporated into a future update of Delphi. In order to allow us to issue source code fixes like this we've intentionally left ActionBands out of runtime packages in our version 6.0 products. Therefore you can still use these fixes in your application even if it is compiled to use runtime packages.
All of the issues mentioned here will be fixed in Update 2 (for which I cannot give a timeframe).
NOTE: Unfortunately, I cannot post complete updated units since ActionBands are not included in all versions of Delphi 6.0.
Bug Fixes:
HorzMargin Fix |
SetDesignMode Fix |
Multi-Form MainMenu Fix |
Manual Streaming Fix |
Button Drawing Fix |
Slide Menu Animation Fix (Nov. 11) |
Delete Item Fix (Nov. 19)
EditDEMO: ActionBands - Using Large Icons (Delphi 6.0 only)
Posted: October 23rd 2001
This demo is an example of using the LinkedActionList property of the TActionManager component which is included in the Professional and Enterprise versions of Delphi 6.0. It also illustrates how to use large icons on ActionToolBands.
Download:
ActionBand Large Icons Demo!!!!COMPONENTS: XP and Encarta-style ActionBand Menus and Toolbars (Delphi 6.0 only)
Posted: October 16th 2001
This download includes ActionBand components which support Windows XP and Encarta style menus and toolbars.
Download:
XP and Encarta Style ActionBandsEditDEMO: Illustrating GraphUtil.pas functions (Delphi 6.0 only)
Posted: October 10th 2001
Demonstration of calling some of the routines in the GraphUtil unit in Delphi 6.0. These routines support color dithering.
Download:
ColorFader demoEditDEMO: Using the alCustom Align style in Delphi 6.0 (Delphi 6.0 only)
Posted: October 10th 2001
This download includes two different examples of using the new alCustom align style introduced in Delphi 6.0. The alCustom align style is very powerful and can dramatically cut down on the number of nested panels required to layout complex forms.
Download:
Align demoEditDEMO: MRU ActionBands (requires Delphi 6.0 with update 1)
Posted: September 25th 2001
This application demonstrates one method of implementing a MRU (Most Recently Used) menu item. ActionBands are quite flexible and provide built-in storage making MRU menus very easy to implement.
Download:
ActionBands MRU demoEditFIX: Updated TThread.Synchronize (for Delphi 6.0)
Posted: September 13th 2001
This is a source code fix for TThread.Synchronize. This fix is included with Delphi 6.0 update 1.
View Fix