Ответ 1
Вы можете использовать точку расширения 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 файлы, было бы целесообразно удалить такой код для удобства.
Документация Delphi охватывает эту предметную область, хотя и с несколько иной точки зрения, в разделе Сохранение и загрузка неопубликованных свойств в Руководство для авторов компонентов.