zoukankan      html  css  js  c++  java
  • 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

    现在就开始吧。

  • 相关阅读:
    Selenium3+python3自动化(三十九)--python3.7上SendKeys报错用PyUserInput取代
    Selenium3+python3自动化(三十八)--异常后截图(screnshot)、只截某个元素的图
    python学习6--python读取excel数据
    Selenium3+python3自动化(三十七)--捕获异常(NoSuchElementException)、try...except
    Selenium3+python3自动化(三十六)--expected_conditions模块 判断文本(text_to_be_present_in_element)
    Selenium3+python3自动化(三十五)--登录方法(参数化)
    Selenium3+python3自动化(三十四)--expected_conditions模块 判断弹出框存在(alert_is_present)
    Selenium3+python3自动化(三十三)--万能的js解决click()、clear()失效问题
    Selenium3+python3自动化(三十二)--4类32种定位方法(find_element_by_xx, find_elements_by_xx, find_element)
    Selenium3+python3自动化(三十一)--元素定位参数化(find_element)
  • 原文地址:https://www.cnblogs.com/drgraph/p/2343305.html
Copyright © 2011-2022 走看看