在Windows中创建菜单按钮

时间:2010-01-06 22:39:45

标签: windows delphi button menu

Microsoft的User Experience Interaction Guidelines提供了一些关于何时使用菜单按钮的UI指南:

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

如何创建其中一个菜单按钮?我找到了关于

的信息
  • 如何在Vista及以上版本中创建拆分按钮
  • 如何使用下拉菜单创建工具栏按钮
  • 如何创建常规按钮并手动连接弹出菜单的OnClick事件处理程序

但是有没有标准方法可以创建一个按钮,而不是在工具栏中,使用小三角形,点击时会自动弹出一个菜单?

(我正在使用Delphi / C ++ Builder,但欢迎使用其他解决方案。)

2 个答案:

答案 0 :(得分:11)

您可以使用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添加“字形”,并将位图/字形属性指定给适当的图像并对齐。

答案 1 :(得分:4)

您没有提到您正在使用的Delphi版本,但在Delphi 2010中,TButton具有以下新属性:Dr​​opDownList可以与TPopupMenu关联以定义菜单项,Style可以设置为bsSplitButton。

这会生成一个按钮,您可以按下该按钮,右侧还有一个下拉箭头。若要在单击箭头左侧时弹出菜单,按钮单击处理程序中的此代码应该完成该任务。 / p>

procedure TForm1.Button1Click(Sender: TObject);
var
  CursorPos: TPoint;
begin
  GetCursorPos(CursorPos);
  PopupMenu1.Popup(CursorPos.X, CursorPos.Y);
end;
在以前版本的Delphi中,我认为你必须使用TToolBar。