ReadComponent方法主要是調用ReadComponent方法從Reader對象的流中讀取一連串相關聯的部件
procedure TReader
Proc: TReadComponentsProc)
var
Component: TComponent;
begin
Root := AOwner;
Owner := AOwner;
Parent := AParent;
BeginReferences;
try
while not EndOfList do
begin
ReadSignature;
Component := ReadComponent(nil)
Proc(Component)
end;
FixupReferences;
finally
EndReferences;
end;
end;
ReadComponents首先用AOwner和AParent參數給Root
ReadRootComponent方法從Reader對象的流中將部件及其擁有的部件全部讀出
function TReader
function FindUniqueName(const Name: string)
begin
…
end;
var
I: Integer;
Flags: TFilerFlags;
begin
ReadSignature;
Result := nil;
try
ReadPrefix(Flags
if Root = nil then
begin
Result := TComponentClass(FindClass(ReadStr))
Result
end else
begin
Result := Root;
ReadStr; { Ignore class name }
if csDesigning in Result
ReadStr else
Result
end;
FRoot := Result;
if GlobalLoaded <> nil then
FLoaded := GlobalLoaded else
FLoaded := TList
try
FLoaded
FOwner := FRoot;
Include(FRoot
Include(FRoot
FRoot
Exclude(FRoot
if GlobalLoaded = nil then
for I :=
finally
if GlobalLoaded = nil then FLoaded
FLoaded := nil;
end;
GlobalFixupReferences;
except
RemoveFixupReferences(Root
if Root = nil then Result
raise;
end;
end;
ReadRootComponent首先調用ReadSignature讀取Filer對象標簽
因為在OnSetName事件中
procedure TReader
begin
if Assigned(FOnSetName) then FOnSetName(Self
Component
end;
SetName方法和OnSetName事件在動態DFM文件的編程中有很重要的作用
TReader的錯誤處理是由Error方法和OnError事件的配合使用完成的
function TReader
begin
Result := False;
if Assigned(FOnError) then FOnError(Self
end;
有時
function TReader
const MethodName: string)
var
Error: Boolean;
begin
Result := Root
Error := Result = nil;
if Assigned(FOnFindMethod) then FOnFindMethod(Self
Error)
if Error then PropValueError;
end;
OnFindMethod 方法除了可以給部件的MethodName所指定的方法指針動態賦值外
Delphi
Delphi的可視化設計工具是同其部件類庫緊密結合在一起的
每個部件只有通過一段注冊程序並通過Delphi的Install Component功能
DFM文件的部件存取是Delphi可視化設計環境中文件存取的中心問題
DFM文件結構我們前面介紹過了
在Delphi中處理這種聯系的過程分為兩種情況
在設計時
在運行時
VCL對讀取DFM文件在代碼上的支持是通過Stream對象和Filer對象達到的
返回目錄
編輯推薦
Java程序設計培訓視頻教程
J
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLE
Java程序性能優化
C嵌入式編程設計模式
Android游戲開發實踐指南
[
From:http://tw.wingwit.com/Article/program/Delphi/201311/25095.html