程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第二十章-開發Delphi對象式數據管理功能(二)(5)

第二十章-開發Delphi對象式數據管理功能(二)(5)

編輯: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對象的屬性和方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved