代码之家  ›  专栏  ›  技术社区  ›  Josh Kelley

在Windows中创建菜单按钮

  •  9
  • Josh Kelley  · 技术社区  · 15 年前

    微软 User Experience Interaction Guidelines 为何时使用菜单按钮提供一些用户界面指南:

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

    怎么用? 是否创建这些菜单按钮之一?我找到了关于

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

    但是,有没有标准的方法来创建一个按钮,而不是在工具栏中,有一个小的向下三角形,当点击时自动弹出一个菜单?

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

    2 回复  |  直到 15 年前
        1
  •  11
  •   skamradt    15 年前

    您可以使用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;
    

    然后,您可以使用Delphi2010按钮或以前版本的tbitbtn添加“glyph”,并将位图/glyph属性分配给适当的图像并右对齐。

        2
  •  4
  •   Alan Clark    15 年前

    您没有提到您使用的Delphi的版本,但是在Delphi2010中,tbutton有了新的属性:DropDownList,它可以与tpopupmenu关联以定义菜单项,以及可以设置为bssplitbutton的样式。

    这将生成一个按钮,您可以按下该按钮,该按钮的右侧也有一个下拉箭头,以便在单击箭头的左侧时弹出菜单。该代码在按钮单击处理程序中应该执行该操作。

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

    在Delphi的早期版本中,我认为您必须使用ttoolbar。