Delphi D10.X VCL和FireMonkey之间的常见差异介绍

尽管FireMonkey控件与VCL控件看上去非常的相似性,但是许多小的差异可能会使熟悉VCL的人不知所措。这里给大家介绍其中一些差异。

VCL与FireMonkey不兼容

警告
FireMonkey与VCL本质上是完全不同的,FireMonkey(FMX)和可视组件库(VCL)不兼容,因此不应在同一模块中一起使用。也就是说,一个模块应该是FireMonkey或VCL之一。不兼容是由FireMonkey(FMX)和VCL之间的框架差异引起的。
这里介绍他们的差异主要是帮助已熟悉VCL的朋友可以快速的了解控件使用上的不同,快速的转变到FireMonkey的开发思路上来。

但是,您可以:

  • 如适用于macOS的共享库中所述,将FireMonkey库与VCL应用程序一起使用,或将VCL库与FireMonkey应用程序一起使用。
  • 了解将VCL应用程序转换为FireMonkey的一般准则,然后做迁移。
  • 了解一般操作,再迁移VCL应用到FireMonkey。
  • http://www.midaconverter.com/上获取VCL-to-FireMonkey转换器程序。可以自动迁移VCL应用FireMonkey的某些方面。

RAD Studio提供了三个主要的库:

  • FireMonkey(FMX) 是一个视觉组件库,具有复杂的图形,动画和样式功能。您可以为任何受支持的目标平台创建FireMonkey应用程序。
  • 视觉组件库(VCL) 是仅在Windows(在Win32和Win64应用程序中)支持的视觉组件的对象层次结构。
  • 运行时库(RTL) 是Delphi和C ++为任何受支持的目标平台共享的过程库。RTL由 System, System.SysUtils, System.IOUtils和 System.Classes单元的成员组成。

您可以在FireMonkey应用程序中自由使用RTL,但不能在FireMonkey应用程序模块中直接使用VCL。

FireMonkey与VCL的差异

Actions

与VCL操作不同,FireMonkey操作不支持操作管理器。因此,您不能使用VCL Action Manager编辑器来管理FireMonkey操作。

复选框

在FireMonkey中,复选框应使用OnChange事件而不是OnClick对已选中状态的更改做出反应。是否选中的状态属性是 IsChecked,VCL中使用的是Checked。

控件的父子关系

在VCL中,只能通过TForms,TFrames,TPanels和Data Modules作为其他组件的父对象。在FireMonkey中,您可以将任何对象作为其他对象的父对象,并且可以在“ 结构视图”中轻松建立此关系。控件间的关系显得更多样,从而可以完成多样化组合使用,这是非常大的进步。
(可参阅我另一篇博客介绍:Delphi D10.X 移动开发中APP界面基本布局(二)

颜色

除RGB外,FireMonkey颜色还具有alpha(不透明度)成分。颜色由系统类型TAlphaColor和TAlphaColorRec表示。FireMonkey使用System.UIConsts单元中的颜色常量。这些颜色常量的前缀为“ cla”而不是“ cl”。

控制定位

在VCL中,控件的位置由其顶部和左侧属性表示。
在FireMonkey中,控件使用具有嵌套X和Y属性的TPosition类型的Position。3D控件的Position属性是TPosition3D的一个实例,带有一个附加的Z坐标。对于大小,FireMonkey使用宽度和高度(对于3D控件使用深度)。
(可参阅我另一篇博客介绍:Delphi D10.X 移动开发中APP界面基本布局(二)

数据库表格事件

VCL的事件OnDrawDataCell或OnDrawColumnCell可以使用FireMonkey中的TStringGrid与LiveBindings替换。
在FireMonkey不使用VCL那样的DB显示控件,而FireMonkey中几乎所有的控件都可以使用LiveBindings来绑定数据,包括是否显示、禁用某控件都可以直接绑定,并由数据内容直接控制,从而完全不需要编写代码处理。

显示文字

FireMonkey标签中显示的文本的属性是Text,不是Caption。

字体大小

在VCL中,字体大小以点表示,每英寸72个点。
在FireMonkey中,字体大小以与设备无关的像素(DIP)表示,每英寸96像素。
因此,在FireMonkey中使用相同Font.Size的设置,显示出来的文本会感觉较小。

Masked编辑

VCL中的TMaskEdit或TEDIT在FireMonkey中使用来TEDIT和Password 属性来处理。将TEDIT中Password 属性设置为True,使此编辑控件隐藏其字符,以进行类似密码的输入。将Password 设置为False可使此编辑控件显示其所有字符。

单选按钮和组

要将VCL TRadioGroup转换为FireMonkey,可以使用TPanel或TGroupBox。
注:在FireMonkey,TPanel不支持项目单选按钮。
每个VCL TGroupBox中的单选按钮都是独立的。如果将多个VCL TGroupBox转换为FireMonkey TGroupBox,则包含的单选按钮将相互关联(一个组中的选择将清除其他组中的选择)。要在FireMonkey中恢复独立性,需要为每个转换的TRadioButton手动指定GroupName属性。

相关或类似文章

1、Delphi D10.3 LayoutsPro 控件简介 -避免输入焦点被虚拟键盘遮挡
推荐到这里,不是因为控件,是因为这个DEMO里有较多的可用于界面布局学习的内容,可直观的了解VCL与FireMonkey的差异;

2、Delphi D10.1 移动开发中APP界面基本布局(一)

3、Delphi D10.X 移动开发中APP界面基本布局(二)
与本博客内容有相关更详细描述。


 欢迎光顾本人小店:(https://shop63778938.taobao.com/) 
 小店也提供delphi方面其他技术支持、定制开发。   

现在就进店看看

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ModernListView (Berlin, Tokyo [with fix], Rio) 很好的Delphi Firemonkey控件,可用作Android、iOS、MacOS、Windows开发,比Delphi自带的listview更好用、功能更强大! ListView1.SetColorItemSelected(TAlphaColorRec.Orangered); ListView1.SetColorItemFill(TAlphaColorRec.Whitesmoke); ListView1.SetColorItemFillAlt(TAlphaColorRec.Lightgrey); ListView1.SetColorBackground(TAlphaColorRec.Whitesmoke); ListView1.SetColorItemSeparator(TAlphaColorRec.Red); ListView1.SetColorText(TAlphaColorRec.Darkmagenta); ListView1.SetColorTextSelected(TAlphaColorRec.Blueviolet); ListView1.SetColorTextDetail(TAlphaColorRec.Darksalmon); ListView1.SetColorHeader(TAlphaColorRec.Crimson); ListView1.SetColorTextHeader(TAlphaColorRec.Whitesmoke); ListView1.SetColorTextHeaderShadow(TAlphaColorRec.grey); ListView1.SetColorPullRefresh(TAlphaColorRec.Lime); ListView1.SetColorPullRefreshIndicator(TAlphaColorRec.Limegreen); ListView1.SetColorStretchGlow(TAlphaColorRec.Limegreen); Style for ListView Columns Mode ListView1.ShowScrollBar - hide/show scrollbar ListView1.ItemsClearTrue - correct delete items ListView1.OffsetTop - indent of the first element ListView1.OffsetBottom - indent of the last element ListView1.getFirstVisibleItemIndex - first visible ItemIndex ListView1.getVisibleCount - amount of visible items ListView1.getLastVisibleItemindex - first visible ItemIndex + amount of visible items ListView1.SeparatorLeftOffset - indent for separator line ListView1.SeparatorRightOffset - indent for separator line ListView1.EnableTouchAnimation - enable/disable touch animation

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值