[FMX]使用 TPopup 自定义弹出窗口

我们许多时候,在用户点击某一控件时,需要在控件的相关位置弹出一个下拉列表,弹出让用户选择的内容。在 FMX 中,提供了一个很好的组件 TPopup。

1、在窗体上放置一个 TPopup 组件,然后设置其 PlacementTarget 属性为要弹出下拉列表窗口的控件。

2、修改 TPopup 组件的 Visible 属性为 True(默认为 False,但 FMX 在设计期也给整成不可见了,这应该算是一个Bug),然后就可以看见它了,然后在其上放你需要的组件。注意 TPopup 默认是全透明的,你需要修改相关的样式或放置相关的组件,让其不要透明。

3、完成上述步骤后,将 TPopup.Visible 属性修改回 False,以避免在程序启动时显示。

4、在要弹出下拉列表窗口的控件的 OnClick 事件中,设置 TPopup.IsOpen 为 True。

OK,这就搞定了。我们编译运行就可以看到其效果。


PopupDropDown

如果要调整弹出的位置,可以调用 TPopup.Placement 属性。如果对于位置仍不满意,参考:[FMX] TPopup 组件帮助的核心翻译 中的说明进行调整。

在这一点上,FMX 比 VCL 方便多了,VCL 我不得不写了一个 FormDropDown 来实现它,而这个已经内置了,而且比我原来的功能要强大方便的多。虽然初期 FMX 的Bug还是比较多,性能和稳定性也不是特别理想,但总体来说,越来越好了。

分享到: