Delphi 我们可以在FMX中使用弹出菜单吗?

Delphi 我们可以在FMX中使用弹出菜单吗?,delphi,firemonkey,Delphi,Firemonkey,我正在FMX中开发一个移动应用程序,我需要弹出菜单,但它在工具选项板中显示禁用。我不能使用它,但在VCL中,它在工具选项板中启用,可以使用它。我只是想知道Firemonkey是否支持Popupmenu,或者我的安装有问题,或者我们必须使用其他工具而不是FMX中的Popupmenu?或者我还能做什么 实际上,我打开了一个VCL项目,将弹出菜单从那里复制到FMX,并在一个按钮上编写了代码,代码是 procedure TFRM_Party.BTN_Party_OptionClick(Sender: T

我正在FMX中开发一个移动应用程序,我需要弹出菜单,但它在工具选项板中显示禁用。我不能使用它,但在VCL中,它在工具选项板中启用,可以使用它。我只是想知道Firemonkey是否支持Popupmenu,或者我的安装有问题,或者我们必须使用其他工具而不是FMX中的Popupmenu?或者我还能做什么

实际上,我打开了一个VCL项目,将弹出菜单从那里复制到FMX,并在一个按钮上编写了代码,代码是

procedure TFRM_Party.BTN_Party_OptionClick(Sender: TObject);
begin
  PopupMenu1.Popup(10,10);
  PopupMenu1.Parent := Self;
end;
此代码未显示任何错误,也未执行。 怎么办?有人知道吗


您的问题的简短答案是“是”,您应该能够在一个项目中使用FMX版本的
tpopumenu
,该项目是由IDE中的
文件|新的|多设备应用程序
创建的。如果在组件选项板上找不到FMX
TPopupMenu
,则您的Delphi安装一定有问题。我不太清楚你说的“禁用”是什么意思——组件通常要么在组件调色板上,要么不在,我不记得在那里看到过一个看起来禁用的组件

在你的问题中,你没有说你正在使用哪个版本的Delphi,但是如果它有FireMonkey,那么它肯定应该有FMX版本的
TPopupMenu

例如,在Delphi 10.2西雅图中,FMX
TPopupMenu
出现在组件调色板的“标准”选项卡上,并与
TMenuBar
TMainMenu
等一起包含在源单元
FMX.menu

如果在IDE中转到
Component | Install packages
,弹出窗口应在列表中显示
Embarcadero FMX标准组件
,即Delphi安装的
bin
文件夹中的文件
dclfmxsstd250.bpl
。如果这个包没有列出,这就解释了为什么你找不到FMX
TPopupMenu
,但是如果你是这样的话,你的Delphi应该除了
TPopupMenu
之外还缺少更多的FMC组件。但是,通过安装
.bpl
文件(或Delphi版本中的等效文件)可以轻松解决此问题。如果软件包在那里,单击弹出窗口右下角的
组件
按钮将显示FXM标准组件的完整列表(在我的情况下,其中包括
TPopupMenu

如果您的Delphi确实包含
Embarcadero FMX标准组件
,但仍然缺少
tpopumenu
,您可以尝试创建一个新包,向其中添加
FMX.Menus.pas
,并在IDE中编译和安装它


顺便说一句,虽然可以建立一个组合的FMX+VCL项目(Google for how),仅仅因为你可以在FMX表单上放置一个VCL
TPopupMenu
,并不意味着它就可以工作。

我删除了一些标签,因为它们对你的问题并不重要。但是,您应该为您的Delphi版本添加标记,或在问题文本中指出。将代码从
Vcl
混合到
Fmx
或vv。很可能会失败,即使在某些特殊情况下可能会失败。不要依赖这些解决方案。一个正确开始的
FMX
项目提供并接受
TPopupMenu
组件。如果您详细描述了创建新项目所采取的步骤,并尝试使用菜单组件,则有人可能会对可能出现的错误进行评估。仅供参考,西雅图是10.0。东京是10.2。@RemyLebeau:谢谢。我的ESD文件中的安装程序自称为“Rad Studio 10西雅图”,而“帮助|关于”则称为“Embarcadero®Delphi 10.2版本25.0.31059.3231”,但与东京无关。我希望他们放弃地理上的胡说八道,这只会带来混乱,我想知道会不会有一个“武汉”版本?@MartynA,谢谢。我使用的是Embarcadero®RAD Studio 10西雅图版本23.0.20618.2753。我上传了一张图片,我认为这会帮助你弄清楚。我还检查了组件安装包。在那边可以买到。