Skip over navigation

Menu Speed Button Components

Specialised speed buttons relating to popup menus


Version 1.1
Released 15 Aug 2007
Platforms Win32
Framework IDE
Compatibilty Delphi 4 & later


Development of Menu Speed Button Components is frozen.

These components were originally written back in 2001 to get round a well known display problem that Delphi's tool button control had with some display drivers (as on an old Dell machine of mine). I used speed buttons to avoid having to use tool buttons, and needed a button that supported drop down menus, so wrote these components.

Now that those driver problems are long gone the original justification has disappeared. These days I use standard tool buttons and action bars. Furthermore, the design of the menu speed button components doesn't lend itself to the easy application of themes from Windows XP onwards. As a result I never developed the components further.

The final release was issued as v1.1 on 15th August 2007, adding a new feature requested by a user. At the same time I licensed the code under the Mozilla Public License.

Given the above, and the fact that the components have not been tested on modern Delphis, the components could cause more problems than they solve. For that reason I strongly advise that you do not install these components.

Having said all that, if you want to take on development or simply want to take a look at the code please go ahead.

There is no support available for Menu Speed Button Components. Please do not report any bugs or request new features.


This unit contains a set of three speed button components derived from Delphi's TSpeedButton. The buttons either display associated pop-up menus or link together to form connected button / menu button pairs. The speed buttons are designed for use on toolbars, but have other uses. The components are discussed below.



TPJMenuSpeedButton example

When this speed button is clicked it displays an associated pop-up menu.

A TPopupMenu component is associated with this speed button using the ActiveMenu property. The menu is displayed adjacent to the button. The button can be configured to stay down while the menu is displayed or to return to the up position as soon as it is released.

The example shown depicts TPJMenuSpeedButton displaying a menu after being clicked. The button has been configured to stay down while the menu is displayed.


TPJLinkedSpeedButton example

This speed button can link to and control a slave button that itself controls a pop-up menu.

The button acts like a normal speed button until a TPJLinkedMenuSpeedButton (see below) is linked using the MenuButton property. The TPJLinkedSpeedButton then takes over control of the menu button, with both buttons being depressed together, both being enabled or disabled together and both being moved together.

You can configure the button to automatically trigger any the default menu item of the active menu of the linked speed button.

To understand more about this component please read about TPJLinkedMenuSpeedButton below.

The example shown depicts a linked pair of buttons with the TPJLinkedSpeedButton being clicked and causing the linked menu button to also be depressed.


TPJLinkedMenuSpeedButton example

This component functions like a TPJMenuSpeedButton but can be linked to, and controlled by, a TPJLinkedSpeedButton. By default this button is narrow and displays a down arrow glyph. The button "sticks" to the right hand side of the controlling button and moves with it.

This button is designed for those situations where a dual-action button is required: either the main button is clicked to initiate a default action or the attached menu button is clicked to choose from a menu.

The example shown depicts a linked pair of buttons with the TPJLinkedMenuSpeedButton being clicked and displaying its menu. By setting a property you can align the menu under the TPJLinkedSpeedButton instead.

Help file

These components are supplied with an OpenHelp compatible help file that works with the Delphi 4 to 7 IDE. The help file will not integrate with Delphi 2005 and later, but can be used as a stand-alone help file.

Note that WinHelp is not available, and does not work, with Windows 10.

Demo project

A demo project is also provided in the download.

Get The Code

The source code of Menu Speed Button Components is archived on Google Drive.

You can download it as


Remember, you are strongly advised not to install these components.

Information about how to install the components can be found in the ReadMe.htm file included in the download zip file.


The Menu Speed Button Components are open source. They are copyright © 2001-2007 by Peter Johnson. The source code is made available under the terms of the Mozilla Public License v1.1. All relevant trademarks are acknowledged.