Skip over navigation

Menu Speed Button Components

Specialised speed buttons relating to popup menus


Version 1.1
Released 2007-08-15
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.

WinHelp is an optional download for Windows Vista through to Windows 8.1 and can't be installed at all on Windows 10 and later.

Demo project

A demo project is also provided in the download.

Get The Code

The Menu Speed Button Components source code is archived in the ddab-archive/menusb repository on GitHub. The read-me file of that project explains how to get source code and the final release.


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

Information about how to install the component can be found in ReadMe.htm in the archived Git repository.


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.