请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

吾爱极客

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2221|回复: 0

转换VCL为FireMonkey(XE8)

[复制链接]

271

主题

271

帖子

1129

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1129
发表于 2015-10-21 02:16:50 | 显示全部楼层 |阅读模式
VCL和FireMonkey应用的差别

VCL (可视控件库Visual Component Library) 只支持基于Windows的开发—Win32和Win64 平台。 另一方面,FireMonkey控件被定制为使用在所有支持平台,包括 OS X (Mac) 平台。

FireMonkey和 VCL库有点类似; FireMonkey 和 VCL 共享从TObject 到 TComponent的共同祖先, 但在TComponent之后分开。 如果你熟悉VCL, 一些FireMonkey中的类,组件,控件,和函数是差不多的。不过FireMonkey是一个新的框架,提供基于向量的动态控件,还有其他VCL没有的特性。比如, FireMonkey 有复杂的2D 和 3D图形,以及例如过滤器的特别效果。


移植VCL应用到FireMonkey

虽然在VCL和FireMonkey之间没有一个很直接的移植方法,但是可以通过创建一个新的HD跨设备应用,然后修改—剪切—粘贴现有的VCL应用来转换一个现有的VCL应用,这是从本质上重构VCL应用为可运行于跨平台的FireMonkey应用。

使用Mida Converter 来转换VCL应用为FireMonkey

Mida Converter 是一个第三方产品,可以自动转换VCL控件为FireMonkey控件。Mida 安装作为RAD Studio IDE Tools菜单的一个插件。
有几个版本的Mida 可用:

    §  Mida免费版移植标准VCL 控件和 LiveBindings。
    §  对于免费版,请看 http://cc.embarcadero.com/item/29443
    §   Mida ProMida Studio 版本提供增强功能,比如转换自定义控件和图像。

Mida pack 使能支持按钮图像如,VCL TBitBtn 控件。

Mida 主页有更多信息,包含博客,问题问答,和产品订购:http://www.midaconverter.com/


常见差异

尽管FMX设计的表面上看起来与VCL类似,但很多细小的差别可能会绊倒一个熟悉VCL的人。这些差别包括:

§  Position(位置):
    §  在VCL中, 控件的位置是通过它的Top 和 Left 属性表达的。
    §  在FireMonkey中, 控件使用一个TPosition 类型的Position ,带有 XY 属性。3D控件的 Position 属性是一个TPosition3D实例, 另外多加了一个Z 坐标。 对于大小, FireMonkey 使用 Width 和 Height (还有3D控件的Depth )。

§  Text(文本): FireMonkey label显示的文本是他的 Text, 而不是 Caption (像VCL中的)。

§  Font Sizes(字体大小):
    §  在FireMonkey中, 字体大小是用设备无关点数(DIPs)表达的,每逻辑英寸96点。
    §  在VCL中, 字体大小是用点数表达的,每逻辑英寸72点。
    因此,使用相同Font.Size 的文本在FireMonkey中更小。

§  Check Boxes(检查框): 在FireMonkey中, 检查框应该使用OnChange 事件代替OnClick来响应检查状态改变。反应检查状态的属性是 IsChecked,而不是VCL中的 Checked 。

§  Colors(颜色): FireMonkey 颜色除了RGB之外还有一个alpha (不透明度) 组件。颜色用系统类型TAlphaColor 和 TAlphaColorRec表示。 FireMonkey 使用来自System.UIConsts单元的颜色常量。这些颜色常量的前缀用"cla" 代替 "cl"。

§  Radio Buttons and Groups(分组按钮和组):
    § 为了转换VCL TRadioGroup 到 FireMonkey, 你可以使用 TPanel 或 TGroupBox。
    注:  TPanel里面不支持Radio ButtonsMida 不会转换 TRadioGroup.Items 到 radio buttons。

§  TGroupBox: 每个VCL TGroupBox中的 radio buttons是独立的。如果你转换多个VCL TGroupBox 到 FireMonkey TGroupBox, 包含的radio buttons 变成非独立的 (在一个组中选了会清除其他组的选择)。要在FireMonkey中恢复成独立的, 手动为每个转换的TRadioButton指定 GroupName 属性。

§  Child-Parent Relationship: 在VCL中, 拥有其他控件的对象只能是 TForms, TFrames, TPanels 和 Data Modules。 在FireMonkey中, 任何对象可以是其他任意物体的父亲,而且这种关系可以很容易地在 Structure 视图里面建立。

§  VCL中的 TMaskEdit 或 TEdit 可以在 FireMonkey中使用TEdit 和它的 Password 属性实现。

§  Events:  VCL 的 OnDrawDataCell 或 OnDrawColumnCell 事件可以在 FireMonkey中可以用带有LiveBindings的 TStringGrid 代替。

§  Constants: 诸如模态结果和虚拟键代码等的常量已经从Vcl.Controls 移到 System.UITypes。


www.52jike.com 吾爱极客  ruanzhuo翻译整理,转载请注明出处
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱极客 ( 粤ICP备15067754号-1  

GMT+8, 2018-11-21 16:54 , Processed in 0.136155 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表