Как создать кнопку с выпадающим меню? - PullRequest
6 голосов
/ 25 октября 2008

Есть ли способ показать стиль кнопки IE / Firefox Back, кнопку выпадающего меню?

Ответы [ 4 ]

10 голосов
/ 25 октября 2008

Я предполагаю, что вы имеете в виду кнопку, которая при нажатии нажимает на меню.

Вы также можете просто вручную кодировать нажатие кнопки, чтобы раскрыть под ним 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 и т. Д.

8 голосов
/ 29 июля 2009

Ответ Джима замечательный, но сначала он мне не помог. ClientToScreen использует метод Form86, который является правильным только в том случае, если кнопка находится непосредственно на форме. Должен быть вызван метод ClientToScreen кнопки, например:

procedure TForm86.Button1Click(Sender: TObject);
var
  button: TControl;
  lowerLeft: TPoint;
begin
  if Sender is TControl then
  begin
    button := TControl(Sender);
    lowerLeft := Point(0, button.Height);
    lowerLeft := button.ClientToScreen(lowerLeft);
    PopupMenu1.Popup(lowerLeft.X, lowerLeft.Y);
  end;
end;

Это работает независимо от того, где находится кнопка.

7 голосов
/ 25 октября 2008

Конечно. Поместите панель инструментов на страницу. Щелкните правой кнопкой мыши на панели инструментов, добавьте кнопку. Установите стиль кнопки в tbsDropDown. Поместите PopupMenu на страницу. Дважды щелкните по PopupMenu, чтобы определить пункты меню. Затем вернитесь к созданной вами кнопке и установите для ее свойства DropdownMenu указатель на только что созданное PopupMenu.

1 голос
/ 25 октября 2008

Если вы не хотите использовать панель инструментов, в библиотеках raize (www.raize.com) и Express editors (www.DevExpress.com) есть компоненты, которые могут это сделать.

...