Как создать кнопку с выпадающим меню?

Добавить это:

$message=explode($message, "\n")[0];

Это должно работать.

6
задан 24 October 2008 в 22:37
поделиться

4 ответа

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

7
ответ дан 8 December 2019 в 04:10
поделиться

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

Можно также просто вручную кодировать нажатие кнопки на выпадающий 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, и т.д. поддержки это также.

10
ответ дан 8 December 2019 в 04:10
поделиться

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

1
ответ дан 8 December 2019 в 04:10
поделиться

Ответ Джима великолепен, но сначала мне не совсем понравилось. 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;

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

8
ответ дан 8 December 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: