Delphi 在窗体上嵌入菜单/弹出菜单或TListItems

Delphi 在窗体上嵌入菜单/弹出菜单或TListItems,delphi,Delphi,是否有任何方法可以将TPopupMenu直接嵌入到表单上,就好像它是一个始终打开的面板一样?或者可能只是TMenuItems。不,不可能在表单上嵌入菜单。部分原因是菜单不是一个普通的窗口,你可以很容易地操作 所以你需要找到一个不同的解决方案。您可以从中选择许多选项: 使用t工具栏: 它看起来并不特别现代,而且开箱即用,不过你对它的外观控制不了多少。另外,我不知道这个解决方案到底有多健壮。很多年前我就停止使用工具栏了 使用TCheckListBox: 在本例中,我建议您创建一个子类TChec

是否有任何方法可以将TPopupMenu直接嵌入到表单上,就好像它是一个始终打开的面板一样?或者可能只是TMenuItems。

不,不可能在表单上嵌入菜单。部分原因是菜单不是一个普通的窗口,你可以很容易地操作

所以你需要找到一个不同的解决方案。您可以从中选择许多选项:

  • 使用
    t工具栏

    它看起来并不特别现代,而且开箱即用,不过你对它的外观控制不了多少。另外,我不知道这个解决方案到底有多健壮。很多年前我就停止使用工具栏了

  • 使用
    TCheckListBox

    在本例中,我建议您创建一个子类
    TCheckListBoxEx
    ,如果双击某个项目的标题,该子类将切换该项目

  • 创建自定义控件:

    如果是关于一个重要应用程序中的中央GUI,我会这样做,因为这样可以完全控制外观和行为,并使其真正健壮。我在工作的时候做了一份现代的菜单,但是现在我在家,所以我不能给你看。然而,这里是我十多年前为一个爱好项目制作的菜单:

  • 如果您不需要像控件一样将菜单附加到表单,而只需要在选择表单中的某个项目时不关闭它,那么可以通过(黑客)方式实现这一点。但这是一个不同的问题


  • 不,不能在窗体上嵌入菜单。部分原因是菜单不是一个普通的窗口,你可以很容易地操作

    所以你需要找到一个不同的解决方案。您可以从中选择许多选项:

  • 使用
    t工具栏

    它看起来并不特别现代,而且开箱即用,不过你对它的外观控制不了多少。另外,我不知道这个解决方案到底有多健壮。很多年前我就停止使用工具栏了

  • 使用
    TCheckListBox

    在本例中,我建议您创建一个子类
    TCheckListBoxEx
    ,如果双击某个项目的标题,该子类将切换该项目

  • 创建自定义控件:

    如果是关于一个重要应用程序中的中央GUI,我会这样做,因为这样可以完全控制外观和行为,并使其真正健壮。我在工作的时候做了一份现代的菜单,但是现在我在家,所以我不能给你看。然而,这里是我十多年前为一个爱好项目制作的菜单:

  • 如果您不需要像控件一样将菜单附加到表单,而只需要在选择表单中的某个项目时不关闭它,那么可以通过(黑客)方式实现这一点。但这是一个不同的问题


  • 不,不可能。当然,有很多方法可以创建一个美观且用户友好的菜单,但是嵌入一个持续打开的上下文菜单是不可能的。也许一个简单的
    t工具栏
    对你有用?或者也许是一种在你点击一个可能的项目后保持菜单打开的方法。但是如果你的应用失去焦点或者你点击了菜单外的某个地方,它就会关闭。然后你可能想创建一个自定义控件。另外,如果你想制作一个健壮且无bug的应用程序,你可能想完全放弃VCL样式…@hikari请链接答案,而不是问题-我想不,这是不可能的。当然,有很多方法可以创建一个美观且用户友好的菜单,但是嵌入一个持续打开的上下文菜单是不可能的。也许一个简单的
    t工具栏
    对你有用?或者也许是一种在你点击一个可能的项目后保持菜单打开的方法。但是如果你的应用失去焦点或者你点击了菜单外的某个地方,它就会关闭。然后你可能想创建一个自定义控件。另外,如果你想制作一个健壮且无bug的应用程序,你可能想完全放弃VCL样式…@hikari请链接答案,而不是问题-我想你已经看过TToolbar了,太可怕了tbh@hikari:工具条
    t工具条
    主要用于在Windows 95中的资源管理器或写字板中找到的经典工具栏。为了达到预期目的,它非常出色(尽管在视觉上有点过时)。在这种情况下,工具栏的好处是它可以由动作驱动(例如在
    战术列表中),就像菜单项可以(应该)一样。看了一下工具栏,太可怕了tbh@hikari:工具条
    t工具条
    主要用于在Windows 95中的资源管理器或写字板中找到的经典工具栏。为了达到预期目的,它非常出色(尽管在视觉上有点过时)。在这种情况下,工具栏的好处是它可以由动作驱动(例如在
    战术列表中),就像菜单项可以(应该)驱动一样。