6

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

4

4 回答 4

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 等是否也支持。

于 2008-10-25T00:00:56.463 回答
9

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

于 2008-10-24T23:29:25.310 回答
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;

无论按钮在哪里,这都有效。

于 2009-07-28T23:54:14.430 回答
0

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

于 2008-10-24T23:35:32.490 回答