当前位置:七道奇文章资讯编程技术Delphi编程
日期:2011-03-20 17:55:00  来源:本站整理

第二十章 开辟Delphi对象式数据管理功效(三)[Delphi编程]

赞助商链接



  本文“第二十章 开辟Delphi对象式数据管理功效(三)[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

20.2.1.1 TFiler对象的属性和办法 

  1. Root属性

  声明:property Root: TComponent;

Root 属性给Filer对象指出被读写的对象中哪一个对象是根或主要拥有者.RootComponentWriteRootComponent办法在读和写部件及其拥有的部件前先设置Root的值.

  2. Ancestor属性

  声明:property Ancestor: TPersistent;

Ancestor属性用于往担当下来的窗体中写部件,因为当写部件时,Write对象只需求写入与所担当的部件差别的属性,所以在写之前要跟踪每个担当的部件,并且对比它们的属性.

  假如Ancestornil,就表示没有呼应的担当的部件,Writer对象该当将部件完好写入流.Ancestor普通为nil,只有当调用WriteDescendantWriteDescendantRes时,才给赋值.当编写和覆盖DefineProperties时,必须设置Ancestor的值.

  3. IgnoreChildren属性

  声明:property Ignorechildren: Boolean;

IgnoreChildren属性使一个Writer对象存储部件时可以不存储该部件拥有的部件.假如IgnoreChildren属性为True,则Writer对象存储部件不存它拥有的子部件.不然,Writer对象将全部其拥有的对象写入流.

  4. Create办法

  声明:constructor Create(Stream: TStream; BufSize: Cardinal);

 Create办法成立一个新的Filer对象,成立它和流Stream的接洽;并且给它分配一个缓冲区Buffer.Buffer的大小由BufSize指定.

  5. Defineproperty办法

  声明:procedure Defineproperty(const Name: String; ReadData: TReaderProc;

WriteData: TWriterProc; HasData: Boolean); virtual; abstract;

Defineproperty办法定义Filer对象将作为属性存储的数据.Name参数描写承受的属性名,该属性不在published部份定义.ReadDataWriteData参数指定在存取对象时读和写所需数据的办法.HasData参数在运行时决意了属性能否有数据要存储.

  只有当对象有数据要存储时,才在该对象的DefineProperties中调用DefineProperty.DefineProperties有一个Filer对象作为它的参数,调用的就是该Filer对象的DefinePropertyDefineBinaryProperty办法.当定义属性时,Writer对象该当引用Ancestor属性,假如该属性非空,Writer对象该当只写入与从Ancestor担当的差别的属性的值.

  一个最简单的例子是TComponentDefineProperties办法.固然TComponent 没有在published中定义LeftTop属性,但该办法存储了部件的位置信息.

 

procedure TComponent.DefineProperties(Filer: TFiler);

begin

Filer.DefineProperty('Left', ReadLeft, WriteLeft, LongRec(FDesignInfo).Lo <> 0);

Filer.DefineProperty('Top', ReadTop, WriteTop, LongRec(FDesignInfo).Hi <> 0);

end;

 

6. DefineBinaryproperty办法

  声明:procedure DefineBinaryproperty(const Name: String;

ReadData, WriteData: TStreamProc;

HisData: Boolean); virtual; abstract;

DefineBinaryProperty办法定义Filer对象作为属性存储的二进制数据.Name参数描写属性名.ReadDataWriteData参数描写所存储的对象中读写所需数据的办法.HasData参数在运行时决意属性能否有数据要存.

  DefineBinaryPropertyDefineProperty办法的差别之处在于,二进制型的属性直接用Stream对象读写,而不是通过Filer对象.通过ReadDataWriteData传入的办法,直接将对象数据写入流或从流读出.

  DefineBinaryProperty属性用得较少.只有尺度的VCL对象定义了象图形、图象之类的二进制属性的部件中才用它.

  7. FlushBuffer办法

  声明:procedure FlushBuffer; virtual: abstract;

FlushBuffer办法用于使Filer对象的缓冲区与相联的Stream对象同步.对Reader对象来说,是通太重新分配缓冲区;关于Writer对象是通过写入当前缓冲区.

  FlushBuffer是一个抽象办法,TReaderTWriter都覆盖了它,供应了具体实现.


  以上是“第二十章 开辟Delphi对象式数据管理功效(三)[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 第二十章 开辟Delphi对象式数据管理功效(五)
  • 第二十章 开辟Delphi对象式数据管理功效(四)
  • 第二十章 开辟Delphi对象式数据管理功效(三)
  • <b>第二十章 开辟Delphi对象式数据管理功效(二)</b>
  • 第二十章 开辟Delphi对象式数据管理功效(一)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .