D5开发人员指南611员中间有一句:
“如果属性是一个对象,该对象必须是从TPersistent或其派生类继承下来的,这样对象的公开属性才能够被流操作并显示在Object Inspector中”这里所说的‘流操作’是指什么?一直不明白。

解决方案 »

  1.   

    stream看一下帮助,或者相关书籍,很多都会介绍到流操作
      

  2.   

    把stream,filer联系起来考虑
    前些天看过一猩猩贴的帖子上面有讲,你找找看吧,不过偶看的不是太懂keke~~~
      

  3.   

    “如果属性是一个对象,该对象必须是从TPersistent或其派生类继承下来的,这样对象的公开属性才能够被流操作并显示在Object Inspector中”
    ---------------------------------------------------------------------------------
    一个类的属性的可见性分为公布的,私有的,公开的等等几种,其中只有公布的属性才具有RTTI信息,也就是说只有公布的属性Delphi的编译器才会为它另外存储表明其本身类型的一些信息。而只有有了这些信息,我们在程序运行期间才可以通过我们已经写好的代码来动态的对其类型等信息进行判断(可能这些信息是我们需要的)。但是,不是说任何类型都可以做公布属性的类型,因为Delphi中不是任何类都可以让编译器为其保存额外的类型信息的。只有TPersistent的派生类才可以,因为TPersistent类是在$M+的条件下进行编译的($M+条件要求编译器保存该类的类型信息),所以从TPersistent类派生出来的类都可以让编译器为其保存类型信息,这样也就可以做公布属性的类型了。而Delphi IDE中的Object Inspector里面显示的全部都是公布的属性(属性和事件,事件本身也是属性!)。至于流操作,个人认为就是可以将当前窗体布局信息保存到DFM文件中的过程。而TPersistent类本身就支持这种操作。所以一个属性的类型必须也是TPersistent及其派生类才可以被进行这种操作To 楼主  以前看的东西记不太清了,完全凭印象了,错误之处请指正!!!!---------------------------------------------------------------------------------
      

  4.   

    Delphi会把published部分的属性自动流化(个别数据类型不能流化,也不能在published部分申明),比如*.dfm文件就是自动流化后的文件。TPersistent支持自动流化,所以要使Delphi自动流化对象属性的话,该类必须继承自TPersistent。
      

  5.   

    更正:..........................................................................................................................................................................,TPersistent必须是该类的祖先。