"присвоение значения FormSize.SaveName во время aForm.FormCreate слишком
поздно ".
У меня было похожее требование изменить свойство компонента, принадлежащее модулю. Стандартное событие «Создать» было слишком поздно, поскольку загруженное свойство уже действовало.
Свойства, сохраненные в DFM, присваиваются (или кэшируются) во время вызова защищенной виртуальной ReadState процедуры. Обычно кэшированные свойства активируются во время защищенного виртуального вызова на Loaded . И ReadState, и Loaded могут быть переопределены.
В моем случае я хотел убедиться, что свойство Connected TADOConnection имеет значение false в сборке выпуска. Во время разработки свойство компонента обычно истинно, учитывая потребности проектирования зависимых наборов данных.
Больно было задавать для свойства значение false перед проверкой кода для последующих сборок / развертываний. Поэтому вместо этого я переопределил метод Loaded и взломал значение потокового свойства на false.
interface
type
TMyDataModule = class(TDataModule)
MyAdoConnection: TADOConnection;
protected
procedure Loaded; override;
end;
implementation
type
TADOConnectionHack = class(TADOConnection) end;
procedure TMyDataModule.Loaded;
begin
TADOConnectionHack(MyAdoConnection).StreamedConnected := False;
inherited Loaded;
end;