• C++ Builder XE2随意学习 (5) > 我的学习路线


    今天回过头来看,FireMonkey的类结构图整理得有点问题,貌似算法逻辑处理得不对。在我的小程序中,命名空间是作为路径来处理,或许这里会出些例外项。

    不过,大体如此。

    当然,再深入一些,发现FireMonkey所用的类远不止这些。比如:TDBGridLinkColumn类,在Fmx.Bind.DBLinks.hpp中定义为

    class PASCALIMPLEMENTATION TDBGridLinkColumn : public Data::Bind::Dblinks::TBaseDBGridLinkColumn

    我在拷贝出来的头文件中上下求索,都没有找到TBaseDBGridLinkColumn类定义,只好回到IDE中,通过Find Declaration来找,结果发现在C:\Program Files\Embarcadero\RAD Studio\9.0\include\windows\rtl\Data.Bind.DBLinks.hpp中。莫非FMX类库又用到了RTL?

    看一下帮助

    Three major libraries are provided by RAD Studio:

    • FireMonkey (FMX) is a visual component library with sophisticated graphics, animation, and styling capabilities. You can create FireMonkey applications that target the Mac OS X, Win32, and Win64 platforms.
    • Visual Component Library (VCL) is an object hierarchy of visual components that are supported on Windows only (in Win32 and Win64 applications).
    • Run-Time Library (RTL) is a procedural library shared by Delphi and C++, and is supported in OS X applications as well as Win32 and Win64. The RTL is made up of the members of the SystemSystem.SysUtilsSystem.IOUtils, and System.Classes units.

    You can use the RTL in a FireMonkey application, but you cannot use the VCL in a FireMonkey application.

    哦,在FireMonkey程序中可以使用RTL类库,但在FireMonkey程序中不能使用VCL类库,纠结啊。

    纠结于两点:

    一是要学FireMonkey,感觉内容又多了,还得了解一下RTL!

    二是之前的VCL程序不能应用FireMonkey技术,如果要使用FireMonkey是否代价会很大?

    难怪圣人说:人生绝大部分痛苦来源于不正确的比较。老子思想精髓在于无为而治、愚民政策,要是什么都不知道,只混个肚儿圆,那该多幸福哈。

    不过,话说到这里,倒是想给官方一个小建议:既然FMX类库中的类都是用Fmx::表示,如class PASCALIMPLEMENTATION THueAdjustFilter : public Fmx::Filter::TShaderFilter,那么RTL类库中的类是否也用Rtl::来打头,这样更直观了哈,不过代价就是代码敲得多些。

    OK,还是着眼重点吧,浅入深出,先会用再说。

    下面简单来看看,在FireMonkey类库下,共有Data Fmx Fmxtee Idantifreezebase System Xml六个子目录,Xml应该是处理XML结构,这个比较熟悉,不过令人惊讶的是,在XML目录下,居然有739个类,它都处理什么了?占有一半多的类哈。我之前实现过简版的XML处理,其间只有两个类:TCbwXml与TCbwXmlNode,前者处理XML结构对象与文件,后者处理节点对象,类似于TreeView与TreeNode。嗯,XML这一块可以先略过,以后再看。

    其次是Data,这应该是数据相关的,有25个类,先也不急着处理数据吧。

    Fmxtee,看名字应该是TeeChart之类的,是输出图表所用,也可以往后放放。

    而Idantifreezebase其下只有一个类TIdAntiFreeze,用过INDY的都知道这个类的作用,这里会改吗?

    简单看一下定义:

    class PASCALIMPLEMENTATION TIdAntiFreeze : public Idantifreezebase::TIdAntiFreezeBase

    {

    typedef Idantifreezebase::TIdAntiFreezeBase inherited;

    public:

    virtual void __fastcall Process(void);

    public:

    /* TIdAntiFreezeBase.Destroy */ inline __fastcall virtual ~TIdAntiFreeze(void) { }

    public:

    /* TIdBaseComponent.Create */ inline __fastcall TIdAntiFreeze(System::Classes::TComponent* AOwner)/* overload */ : Idantifreezebase::TIdAntiFreezeBase(AOwner) { }

    };

    应该没啥变化,这个可以不管了。

    所以,需要首先着手学习的是Fmx与System两个目录。System目录下有174个类,而Fmx目录下有404个类。

    从学习效率上来是,System应该要快些,况且是系统定义相关的东东,理解后对于Fmx的学习应有极大帮助。

    所以,FireMonkey学习路线暂定为

    System > Fmx > Xml > Fmxtee > Data > Idantifreezebase

    现在就开始吧。

  • 相关阅读:
    rabbitmq在ios中实战采坑
    网络七层架构一句话简述
    HystrixCommand实战
    前端SEO技巧
    前端面试-难点问题2-java和javascript的区别
    前端面试题--难点问题
    [微信营销企划之路]003.Access forbidden!
    [Python进阶]001.不定参数
    [安卓基础]011存储数据(中)——sqlite语法介绍
    [JavaWeb基础] 015.Struts2 表单验证框架
  • 原文地址:https://www.cnblogs.com/drgraph/p/2343305.html
Copyright © 2020-2023  润新知