freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第二十章開發(fā)delphi對(duì)象式數(shù)據(jù)管理功能四-資料下載頁(yè)

2025-08-27 15:44本頁(yè)面

【導(dǎo)讀】TReader對(duì)象是可實(shí)例化的用于從相聯(lián)系的流中讀取數(shù)據(jù)的Filer對(duì)象。聲明了不少屬性、方法和事件。OnError,OnFindMethod和OnSetName事件使應(yīng)用程序在運(yùn)行中。讀數(shù)據(jù)時(shí)能定制響應(yīng)方式。除了覆蓋了一些從TFiler對(duì)象中繼承的方法外,TReader對(duì)象還定義大量的讀不同類型的數(shù)據(jù)和觸發(fā)事件的方法。Owner屬性賦值的部件。如果將Position的值設(shè)得超過當(dāng)前緩沖區(qū),將引起調(diào)用FlushBuffer。在使用上通常和FixupReferences和EndReferences一起放在Try?轉(zhuǎn)移到對(duì)象實(shí)例中。finally塊中并配合BeginReferences和。EndReferences方法終止處理相互引用的塊操作,釋放對(duì)象列表。EndfList方法返回True終止條件。這時(shí),預(yù)示流中的下一個(gè)項(xiàng)目是列表結(jié)束標(biāo)。志,需要調(diào)用ReadListEnd方法。DefineProperties方面中讀string數(shù)據(jù)。對(duì)象之前檢測(cè)標(biāo)簽。Reader對(duì)象就能防止疏忽大意,導(dǎo)致讀取無(wú)效或過時(shí)的數(shù)。Filer標(biāo)簽是四個(gè)字符,對(duì)于Delphi,該標(biāo)簽是“TPF0”。當(dāng)一個(gè)Write對(duì)象將部件寫入流中時(shí),它在部件前面預(yù)寫。位置是否重要的標(biāo)志;第二個(gè)值指明它在祖先窗體創(chuàng)建次序。方法自動(dòng)調(diào)用ReadPrefix。指針的通常都是事件。之,將Error參數(shù)置為False,將防止FindMethod方法引發(fā)異常事件。

  

【正文】 ture。 Result := nil。 try ReadPrefix(Flags, I)。 if Root = nil then begin Result := TComponentClass(FindClass(ReadStr)).Create(nil)。 := ReadStr。 end else begin Result := Root。 ReadStr。 { Ignore class name } if csDesigning in then ReadStr else := FindUniqueName(ReadStr)。 end。 FRoot := Result。 if GlobalLoaded nil then FLoaded := GlobalLoaded else FLoaded := 。 try (FRoot)。 FOwner := FRoot。 Include(, csLoading)。 Include(, csReading)。 (Self)。 Exclude(, csReading)。 if GlobalLoaded = nil then for I := 0 to 1 do TComponent(FLoaded[I]).Loaded。 finally if GlobalLoaded = nil then 。 FLoaded := nil。 end。 GlobalFixupReferences。 except RemoveFixupReferences(Root, 39。39。)。 if Root = nil then 。 raise。 end。 end。 ReadRootComponent 首先調(diào)用 ReadSignature 讀取 Filer 對(duì)象標(biāo)簽。然后在 try? except 循環(huán)中執(zhí)行讀取任務(wù)。如果 Root 參數(shù) 為 nil,則用 ReadStr 讀出的類名創(chuàng)建新部件,并以流中讀出部件的 Name 屬性;否則,忽略類名,并判斷 Name 屬性的唯一性。最后用 Root 的 ReadState 方法讀取屬性和其擁有的擁有并處理引用關(guān)系。 7. SetName 方法和 OnSetName 事件 因?yàn)樵?OnSetName 事件中, Name 參數(shù)是 var 型的,所以可以用OnSetName 事件處理過程修改所讀部件的名字。而 OnSetName 事件處理過程是在 SetName 方法中實(shí)現(xiàn)的。 procedure (Component: TComponent。 var Name: string)。 begin if Assigned(FOnSetName) then FOnSetName(Self, Component, Name)。 := Name。 end。 SetName 方法和 OnSetName 事件在動(dòng)態(tài) DFM 文件的編程中有很重要的作用。 8. TReader 的錯(cuò)誤處理 TReader 的錯(cuò)誤處理是由 Error 方法和 OnError 事件的配合使用完成的。OnError 事件處理過程的 Handled 參數(shù)是 var 型的布爾變量,通過將 Handled設(shè)為 True 或 False 可影響 TReader 的錯(cuò)誤處理。 OnError 事件處理過程是在Error 方法中調(diào)用的。 function (const Message: string): Boolean。 begin Result := False。 if Assigned(FOnError) then FOnError(Self, Message, Result)。 end。 9. FindMethod 和 OnFindMethod 事件 有時(shí),在程序運(yùn)行期間,給部件的方法指針 (主要是事件處理過程 )動(dòng)態(tài)賦值是很有用的,這樣就能動(dòng)態(tài)地改變部件響應(yīng)事件的方式。在流中讀取部件捍做到一點(diǎn)就要利用 OnFindMehtod 事件。 OnFIndMethod 事件是在 FindMethod 方法中被調(diào)用的。 function (Root: TComponent。 const MethodName: string): Pointer。 var Error: Boolean。 begin Result := (MethodName)。 Error := Result = nil。 if Assigned(FOnFindMethod) then FOnFindMethod(Self, MethodName, Result, Error)。 if Error then PropValueError。 end。 OnFindMethod 方法除了可以給部件的 MethodName 所指定的方法指針動(dòng)態(tài)賦值外,還可修改 Error 參數(shù)來決定是否處理 Missing Method 錯(cuò) 誤。方法中調(diào)用的 MehtodAddress 方法定義在 TObject 中,它是個(gè)很有用的方法,它可以得到對(duì)象中定義的 public 方法的地址。 FindMethod 方法和 OnFindMethod 事件在動(dòng)態(tài) DFM 的編程中有很重要的作用。 Delphi 對(duì)象式數(shù)據(jù)管理應(yīng)用實(shí)例 Delphi 無(wú)論是其可視化設(shè)計(jì)工具,還是可視化部件類庫(kù) (VCL),都處處滲透了對(duì)象存儲(chǔ)技術(shù),本節(jié)將從 Delphi 可視化設(shè)計(jì)內(nèi)部機(jī)制、 VCL 中的數(shù)據(jù)存儲(chǔ)、 BLOB 數(shù)據(jù)操作和動(dòng)態(tài)生成部件的存儲(chǔ)幾方面介紹對(duì)象存儲(chǔ)功能的 實(shí)例應(yīng)用。 Delphi 動(dòng)態(tài) DFM 文件及部件的存取在超媒體系統(tǒng)中的應(yīng)用 Delphi 的可視化設(shè)計(jì)工具是同其部件類庫(kù)緊密結(jié)合在一起的。 每個(gè)部件只有通過一段注冊(cè)程序并通過 Delphi 的 Install Component 功能,才能出現(xiàn)在 Component Palette 上;部件的屬性才有可能出現(xiàn)在 Object Inspector 窗口中;部件的屬性編輯器才能被 Delphi 環(huán)境使用。因?yàn)檫@種渾然天成的關(guān)系, DFM 文件存取必然得到 VCL 在程序上的支持。 DFM 文件的部件存取是 Delphi 可視化設(shè)計(jì)環(huán)境中文件存取的中心問題。因?yàn)?Delphi 可視化設(shè)計(jì)的核心是窗體的設(shè)計(jì)。每個(gè)窗體對(duì)應(yīng)一個(gè)庫(kù)單元,是應(yīng)用程序的模塊,窗體在磁盤上的存儲(chǔ)就是 DFM 文件。 DFM 文件結(jié)構(gòu)我們前面介紹過了。它實(shí)際上是存儲(chǔ)窗體及其擁有的所有部件的屬性。這種擁有關(guān)系是遞歸的。問題在于如何將這些屬性數(shù)據(jù)與程序中的變量 (屬性 )代碼聯(lián)系起來。 在 Delphi 中處理這種聯(lián)系的過程分為兩種情況:設(shè)計(jì)時(shí)和運(yùn)行時(shí)。 在設(shè)計(jì)時(shí),建立聯(lián)系表現(xiàn)為讀取 DFM 文件,建立 DFM 文件中的部件及其屬性與可視化設(shè)計(jì)工具 (Object Inspector、窗體設(shè)計(jì)窗口和代碼編輯器 )的聯(lián)系,也就是說讓這些部件及其屬性能出現(xiàn)在這些窗口中,并與代碼中的屬性定義聯(lián)系起來;分解聯(lián)系表現(xiàn)為存儲(chǔ) DFM 文件,將窗體窗口中的部件及其屬性寫入 DFM文件。 在運(yùn)行時(shí),主要是建立聯(lián)系的過程,即讀取 DFM 文件。這時(shí), DFM 文件不是作為獨(dú)立的磁盤文件,而是以應(yīng)用程序資源中的 RCDATA 類型的二進(jìn)制數(shù)據(jù)存在。建立聯(lián)系的過程表現(xiàn)為將資源中的部件及其屬性與應(yīng)用程序中的對(duì)象及其數(shù)據(jù)域聯(lián)系起來。其過程為:根據(jù) DFM 中的部件類名創(chuàng)建對(duì)象,再將用 DFM 中的部件屬性值給程序中的部件屬性賦 值。當(dāng)然要完成這一過程,還必須在代碼中有相應(yīng)的窗體定義,因?yàn)榉椒ǖ却a是不存入部件的。 VCL對(duì)讀取 DFM 文件在代碼上的支持是通過 Stream對(duì)象和 Filer 對(duì)象達(dá)到的。在 20. 1 和 節(jié)中,我們可以看到 Stream 對(duì)象和 Filer 對(duì)象中有大量的用于存取部件及其屬性的方法,尤其在 TReader 對(duì)象中,還有關(guān)于錯(cuò)誤處理和動(dòng)態(tài)的方法賦值的方法。下面我們就通過程序?qū)嵗榻B存取 DFM 文件方法、步驟和注意事項(xiàng)。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1