Создание кнопки меню в Windows

Пользовательские Инструкции по Взаимодействию Опыта Microsoft дают некоторые инструкции UI для того, когда использовать кнопку меню:

http://i.msdn.microsoft.com/Aa511453.command51 (en-us, MSDN 10) .png

Как я создаю одну из этих кнопок меню? Я нашел информацию о

  • как создать кнопку разделения в Vista и выше
  • как создать кнопку на панели инструментов с выпадающим меню
  • как создать регулярную кнопку и вручную обеспечить электричеством обработчик событий OnClick, который открывается меню

Но есть ли какой-либо стандартный способ создать кнопку, не на панели инструментов, с мало вниз треугольником, который автоматически открывается меню при нажатии?

(Я использую Delphi / Разработчик C++, но другие решения приветствуются.)

9
задан Josh Kelley 6 January 2010 в 22:39
поделиться

2 ответа

Вы можете использовать OnClick, чтобы форсировать всплывающее окно, и для согласованности используйте не позицию курсора, а позицию управления.

procedure TForm1.Button1Click(Sender: TObject);
var
  pt : TPoint;
begin
  Pt.X := Button1.Left;
  Pt.Y := Button1.Top+Button1.Height;
  pt := ClientToScreen(Pt);
  PopupMenu1.Popup(pt.x,pt.y);
end;

Затем можно добавить "глиф" с помощью кнопки Delphi 2010 или предыдущей версии TBitBtn и назначить свойство bitmap/glyph соответствующему изображению и выровнять его вправо.

11
ответ дан 4 December 2019 в 13:47
поделиться

Вы не упоминаете, какую версию Delphi вы используете, но в Delphi 2010 TButton имеет новые свойства для этого: DropDownlist, который может быть связан с TPopupmenu, чтобы определить пункты меню, а также стиль, которые можно установить на BSSPLITBUTTON.

Это производит кнопку, которую вы можете нажать, также имеет стрелку выпадающего списка справа от него, чтобы сделать всплывающее окно MUNU, когда вы нажмете слева от стрелки, этот код в обработчике кнопки Click должен выполнять задание.

procedure TForm1.Button1Click(Sender: TObject);
var
  CursorPos: TPoint;
begin
  GetCursorPos(CursorPos);
  PopupMenu1.Popup(CursorPos.X, CursorPos.Y);
end;

В предыдущих версиях Delphi я думаю, что вы должны были использовать TToolbar.

4
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

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