在菜单上嵌入Menu / PopupMenu或TListItems

问题描述

是否有任何方法可以将TPopupMenu直接嵌入到窗体上,就像面板始终处于打开状态一样?或只是TMenuItems。

解决方法

否,无法在菜单上嵌入菜单。部分原因是菜单不是您可以轻松操作的普通窗口。

因此,您需要找到其他解决方案。您可以从许多选项中进行选择:

  1. 使用TToolBar

    A screen recording of a form with two vertical toolbar (in different visual styles) with auto-check buttons.

    它看起来并不特别现代,但是开箱即用时,您对外观没有太多控制。另外,我不知道这种解决方案到底有多健壮。许多年前,我不再使用工具栏。

  2. 使用TCheckListBox

    Screenshot of a form with a check list box.

    在这种情况下,建议您创建一个子类TCheckListBoxEx,如果您双击该项目的标题,它将切换该项目。

  3. 创建自定义控件:

    如果要在重要应用程序中使用中央GUI,这就是我要执行的操作,因为这样您就可以完全控制外观和行为,并使它真正可靠。我已经在工作中完成了现代的此类菜单,但是目前我在家里,所以无法向您展示。但是,这里是我十多年前为一个爱好项目制作的菜单:

    Screen recording of a custom-control-based solution with auto-toggling items.

  4. 如果您不需要像控件一样将菜单附加到窗体上,而只需要在选择其中的一项时就不关闭菜单,则可以通过多种方法来实现。但这是另一个问题。