当前位置: > 编程语言 > Delphi教程 >

第二十章-开发Delphi对象式数据管理功能(二)(5)

时间:2011-11-16 | 栏目:Delphi教程 | 点击:

4. Truncate方法

该方法是通过调用BDE API函数实现的。其实现如下:

procedure TBlobStream.Truncate;

begin

if FOpened then

begin

Check(DbiTruncateBlob(FDataSet.Handle, FRecord, FFieldNo, FPosition));

FModified := True;

end;

end;

该方法从BLOB流的当前位置起删除所有数据,并设置修改标志FModified为True。在Delphi VCL中许多部件特别是数据库应用方面的部件都用BDE API函数完成对数据库的访问,如Data Access和Data Control部件。各种数据库部件都是BDE API函数外层的包装简化了对数据库的访问操作。BDE API中还提供了避开BDE配置工具在程序中直接处理Alias(建立、修改、删除等)的函数支持,这也是部件所没有提供的。在Delphi数据库应用安装程序中,这些Alias操作函数无疑是相当重要的。有关BDE API函数的详细介绍,可阅读Delphi2.0 Client/Server Suite所带的BDE API 帮助文件。

20.2 读写对象的实现原理和应用

读写对象(Filer)包括TFiler对象、TReader对象和TWriter对象。TFiler对象是文件读写的基础对象,在应用程序中使用的主要是TReader和TWriter。TReader和TWriter对象都直接从TFiler对象继承。TFiler对象定义了Filer对象的基本属性和方法。

Filer对象主要完成两大功能:

● 存取窗体文件和窗体文件中的部件

● 提供数据缓冲,加快数据读写操作

20.2.1 TFiler对象

TFiler对象是TReader和TWriter的抽象类,定义了用于部件存储的基本属性和方法。它定义了Root属性,Root指明了所读或写的部件的根对象,它的Create方法将Stream对象作为传入参数以建立与Stream对象的联系, Filer对象的具体读写操作都是由Stream对象完成。因此,只要是Stream对象所能访问的媒介都能由Filer对象存取部件。TFiler 对象还提供了两个定义属性的方法:DefineProperty和DefineBinaryProperty,这两个方法使对象能读写不在部件published部分定义的属性。

因为Filer对象主要用于存取Delphi的窗体文件和窗体文件中的部件,所以要清楚地理解Filer对象就要清楚Delphi 窗体文件(DFM文件)的结构。

DFM文件是用于Delphi存储窗体的。窗体是Delphi可视化程序设计的核心。窗体对应Delphi应用程序中的窗口,窗体中的可视部件对应窗口中的界面元素,非可视部件如TTable和TOpenDialog,对应Delphi应用程序的某项功能。Delphi应用程序的设计实际上是以窗体的设计为中心。因此,DFM文件在Delphi应用设计中也占很重要的位置。窗体中的所有元素包括窗体自身的属性都包含在DFM文件中。

在Delphi应用程序窗口,界面元素是按拥有关系相互联系的,因此树状结构是最自然的表达形式;相应地,窗体中的部件也是按树状结构组织;对应在DFM文件中,也要表达这种关系。DFM文件在物理上,是以二进制方式存储的,在逻辑上则是以树状结构安排各部件的关系。Delphi编辑窗口支持以文本方式显示DFM文件。从该文本中可以看清窗体的树状结构。下面是DFM文件的文本显示:

Object Form1: TForm1

Left = 72

Top = 77

ActiveControl = DBIMage1

Object Panell: TPanel

Left = 6

Object DBLabel1: TDBText

end

Object DBImage1: TDBImage

end

end

Object Panel2: TPanel

Left = 6

Object Label1: TLable

end

end

Object Panel3: TPanel

Left = 6

Object DBLabel2: TDBText

end

end

end

关于DFM文件中存储属性值的规则,请参见自定义部件开发这一章。

对照TFiler对象的属性。Root属性就表示部件树的根──窗体。Filer对象的许多方法都是读从根起始的树中所有的部件。Ancestor属性表示根的祖先对象,IgnoreChildren属性则是读部件时忽略根的子结点。

下面介绍Filer对象的属性和方法。

您可能感兴趣的文章:

相关文章