用流的WriteComponentres方法序列化组件的时候,是不是有些属性不能被序列化啊?我在做的时候,比如Visible和enable就不能被序列化,有什么方法能将这两个属性序列化呢?

解决方案 »

  1.   


    不是这样的吧,MSDN上说只序列化显示设置过的属性,其他的不序列化(不知道delphi是不是一样的)。但即使这样在序列化某些组件的visible属性时却不能完全序列化
      

  2.   

    1.当然不会序列化所有的了,也不要看你是不是设置过,而是看是不是默认属性(default指示),
    2.可以利用RIIT来把你要的属性持久化,只不过多写点代码而已.
      

  3.   

    如果是默认属性就不会被序列化吗?RIIT没研究过
      

  4.   

    参考一下 TStrings 
    TFilter 就是干这事的。
      

  5.   

    用cxpropertystore能达到你要得效果
      

  6.   

    published 的属性delphi会帮你自动序列化,非published属性要自己手动写可以参照 StringGrid 控件对列宽属性的序列化的代码
      

  7.   


    似乎不太对,enable,和visibal都是published属性,但他们只有在值是False的情况下才会被序列化。我觉得四楼说的会是对的,因为visible是bool型,只有两个值,所以很容易会被设置成默认值。这算是delphi的问题吗?
      

  8.   

    如果想让VCL自动流化,把该属性写在Published的范围内。如想手动流化参照TPersistent类中的
    DefineProperties方法。自已继承TPersistent.DefineProperties;override一下。把想流化的属性写入读出就行了。