如何使用下拉菜单创建按钮?

时间:2008-10-24 22:37:59

标签: delphi button popupmenu

有没有办法显示IE / Firefox后退按钮样式,下拉菜单按钮?

4 个答案:

答案 0 :(得分: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等是否也支持。

答案 1 :(得分:8)

吉姆的答案很棒,但起初并不适合我。 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;

无论按钮在哪里,都可以使用。

答案 2 :(得分:7)

不确定。在页面上放置一个工具栏。右键单击工具栏,添加一个按钮。将按钮的样式设置为tbsDropDown。在页面上放置一个PopupMenu。双击PopupMenu以定义菜单项。然后,返回到您创建的按钮并将其DropdownMenu属性设置为指向您刚刚创建的PopupMenu。

答案 3 :(得分:1)

如果您不想使用工具栏,raize(www.raize.com)和快速编辑(www.DevExpress.com)库中的组件可以执行此操作。