【问题标题】:How select TComboBox item on Mac with Firemonkey?如何使用 Firemonkey 在 Mac 上选择 TComboBox 项目?
【发布时间】:2014-09-09 21:44:00
【问题描述】:

我有一个 TComboBox,它的项目列表中有几个字符串。在 Windows 上运行时,它可以正常工作 - 我可以单击组合框,显示项目,然后选择其中一项。

但是,当我将 OS 目标设置为 OS X 时,TComboBox 不允许我选择项目。我可以单击 TComboBox 并显示项目,但是当我尝试单击下拉列表中的项目时,我在 Mac 上收到“碰撞”声,并且没有选择任何内容。

如何使用 Firemonkey 让 TComboBoxes 在 Mac 上正常工作?

我正在使用带有 FMX (Firemonkey) 的 C++ Builder XE6。

【问题讨论】:

  • 更新:Mac 在项目的主窗体上似乎可以正常工作,但在其他窗体上却不行。
  • 更新 2:如果子窗体正常显示,它似乎对 Mac 工作正常,但是当调用 ShowModal() 来显示子窗体时它不起作用。
  • 更新 3:此问题已作为报告 #124874 提交给 Embarcadero 的质量中心。
  • 嗯,用 TPopupBox 替换怎么样?功能似乎是一样的。
  • 是的,TPopupBox 是一个选项。不过,我正在使用具有很多功能的表单,并且出于设计目的,我会尽快将它们分开。

标签: delphi c++builder firemonkey


【解决方案1】:

解决方法:

基本思路:用Show()代替ShowModal(),结合一个组件,让主窗体不可点击,子窗体显示。

在主窗体上,添加一个 TRectangle(或 TPanel),Visibility = false,Opacity = 0.25(或类似的值 - 也可以为 0),HitTest = true。

然后,当要显示一个子窗体时,调用一个函数,在主窗体上设置 TRectangle 以覆盖主窗体(设置它的 Position->X,Position->Y,Width,Height),然后设置它的可见性 = true。

然后,用 Show() 代替 ShowModal() 调用子窗体。

子窗体完成后,在主窗体上调用一个函数,将 TRectangle 设置回 Visibility = false。

【讨论】:

  • XE7 中已修复此错误,因此另一种解决方法是升级到 XE7。
猜你喜欢
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多