Delphi XE2-FireMonkey 新功能(3) FireMonkey应用程序设计

  • 5
  • 7,450 views
  • A+
所属分类:[开发技巧]

    FireMonkey 提供优质的跨平台GUI控制,包括对windows,Mac OS X和IOS操作系统,FireMonkey 可以绘制每一个像素,这一点可以更好的让它与各种host平台兼容,避免了其他跨平台架构中使用的“最小公分母”图像的问题,而且这样FireMonkey 可以创建它自己的空间和应用程序设计规则。

布局控件

一个  FireMonkey 应用程序可以支持多个控件在窗体中应用,该窗体可以支持2D内容和3D内容,甚至包括2者的混合内容。

坐标系统 

原有的坐标默认是 top-left延展到bottom-right的方式(也就是用左上角扩展到右下角的坐标系统),坐标系的值是单精度的浮点数字类型,所有的支持平台都使用的方形的像素点,在一个特殊情况下,可以用一个坐标系单元来表达一个像素

一个2D的控件位置属性是用Tposition中得X,Y坐标来决定的,同时用width和height属性来确定它的大小,这个跟老版本的delphiVCL相似,3维控件使用一个Tposition3D类型来控制,多了一个Z坐标系属性,X坐标系的方向向左,Y坐标系的方向朝下 由0递增,Z坐标系是控制深度的属性的。

父类,子类和所有者

一个窗体容器一般是允许所有的控件存放的,窗体设计人员要遵循下面的原则来使用控件,所有者是一个窗体控件的创建的重要因素,如:

TFmxObject.Create(AOwner: TComponent)

当通过代码创建控件的时候,我们指定了一个窗体是它的所有者,这样也就指定了被创建控件的生命周期,如果这个窗体被释放,那么跟他相关的所有者控件,也会自动释放。

我们也可以临时的使用NIl做控件的所有者,如果这样我们有义务用代码的方式来释放,特别是用try/ finally的异常处理方式来确保释放,以防止异常的发生或忘记释放控件。

为了让控件出现在窗口中,光是所有者并不足够,还必须被放置到元件树里面去,或是直接作为窗体的子节点,或者放在窗体下得某个容器里面,元件数可以展示整个结构,包括父容器子控件的关系都一目了然。

当一个控件关联到一个父容器的时间,如果没有特别设置,子控件将出现在父容器的左上角。

FireMonkey 是允许任何控件成为别人的控件的父容器,一点与delphi之前的VCL有很大得区别,比如说以前完全不能做到的,把一个button拖到一个button控件里面,现在已经变成了现实。

以前的控件讲得是出身,要是父亲不是一个容器类控件,是不能往里面拖控件的。大家赶紧去试试,把一个Tlabel拖进Tedit里面是什么感觉!再看看把Tedit删除里面的tlable还会存在吗?

控件校准和底衬

一个控件的Align属性可以将控件进行自动定位,或者是居中,或者是展开,默认的情况是alNone的,枚举情的Talign Layout何以设置多种布局情况。

 其他的跟VCL控件类似,这里就不特别说明了,但是需要注意的是:控件角色边线和填充在firemonkey下,跟Css样式里面是相反的。

比例缩放和旋转

这里是以前的delphi都没有功能,需要注意的是:比例的缩放和旋转不会改变控件的位置和大小属性,控制对象的8个基点始终是不会变化,但是看到的图片的缩放大小和旋转后的图像。

2D的控件是如此,在3D的控件中有一个新的Z坐标系,默认值是1,今后我会用具体的例子来展示给大家。

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  5   博主  0

    • avatar 第八博客 2

      这样的关系,父子,啥关系啊

      • avatar 赤血红涯 2

        说点通俗或入门型的吧,兄弟。这样说看不懂哦。

          • avatar 过客 1

            @赤血红涯 恩!以后从基础说起

          • avatar 潇雨 4

            哎呦。。这个我看不懂爱