您可以使用DefineProperties
擴展點來幫助遷移.dfm文件。
type
TMyComponent = class(...)
private
procedure ReadPropName(Reader: TReader);
protected
procedure DefineProperties(Filer: TFiler); override;
published
property MyPropName: string read ... write ...;
end;
procedure TMyComponent.DefineProperties(Filer: TFiler);
begin
inherited;
Filer.DefineProperty('PropName', ReadPropName, nil, False);
end;
procedure TMyComponent.ReadPropName(Reader: TReader);
begin
MyPropName := Reader.ReadString;
end;
這將允許您的新組件讀取具有舊屬性名稱的舊.dfm文件。當再次寫入.dfm文件時,將使用新的屬性名稱。
請注意,這種技術會導致組件能夠讀取包含舊屬性名稱或新屬性名稱的.dfm文件,因此,如果您願意,可以逐步遷移。一旦你已經遷移了所有的.dfm文件,那麼爲了整潔起見,應該刪除這些代碼。
在Component Writer's Guide的Storing and Loading Unpublished Properties部分,Delphi文檔涵蓋了這個主題領域,雖然略有不同。
有人正在瘋狂downvoting狂歡... – 2012-01-03 11:12:23