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

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.