Я предполагаю, что вы имеете в виду кнопку, которая при нажатии нажимает на меню.
Вы также можете просто вручную кодировать нажатие кнопки, чтобы раскрыть под ним TPopupMenu.
Пример : Отбросьте что-нибудь с TClickEvent (возможно, TButton) и TPopupMenu в вашей форме. Добавьте несколько пунктов меню. Затем добавьте следующий обработчик события OnClick:
procedure TForm86.Button1Click(Sender: TObject);
var
button: TControl;
lowerLeft: TPoint;
begin
if Sender is TControl then
begin
button := TControl(Sender);
lowerLeft := Point(button.Left, button.Top + Button.Height);
lowerLeft := ClientToScreen(lowerLeft);
PopupMenu1.Popup(lowerLeft.X, lowerLeft.Y);
end;
end;
И альт! Прямо как магия. Вы можете обернуть все это в компонент, если планируете использовать его повторно. Может быть, даже продать его онлайн.
Примечание: Если вы хотите задержку, извлеките этот код другим методом, а затем установите таймер OnClick и включите таймер OnMouseLeave. Затем, если таймер срабатывает, вы можете вызвать извлеченный метод. Не уверен, как бы вы сделали это по нажатию клавиатуры. Я не знаю, поддерживает ли это Firefox и т. Д.