您可以使用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