Что ж, моя проблема в следующем:
У меня есть приложение Delphi 5, которое я по сути портирую на Delphi 2010 (заменяя старые компоненты их последними версиями, исправляя неизбежные проблемы со строками Ansi / Unicode и т. Д.), И я наткнулся на своего рода заминку.
При создании одной из наших форм происходит нарушение прав доступа. Изучив его, я пришел к выводу, что причина этого в том, что один из установщиков, вызываемых в Create, пытается изменить свойство объекта в форме, которая еще не была создана.
Я немного его урезал, но в основном код выглядит так:
В декларации формы:
property EnGrpSndOption:boolean read fEnGrpSndOption write SetGrpSndOption;
В форме Create:
EnGrpSndOption := false;
В реализации:
procedure Myform.SetGrpSndOption(const Value: boolean);
begin
fEnGrpSndOption := Value;
btGrpSnd.Visible := Value;
end;
Вставив ShowMessage (BooltoStr (Assigned (btGrpSend), true)) прямо перед btGrpSnd.Visible: = Value, я подтвердил, что проблема в том, что btGrpSnd еще не создан.
btGrpSend - это LMDButton, но я почти уверен, что это не совсем актуально, поскольку он еще даже не был создан.
Хотя я понимаю, что мне, вероятно, следует назначать значение только после подтверждения того, что элемент управления назначен, это просто приведет к тому, что значение, установленное в create, не будет установлено на фактический элемент управления.
Итак, я хочу найти способ убедиться, что все элементы управления в форме созданы ДО запуска моего Create.
Приветствуется любая помощь в этом или информация о том, как Delphi создает формы. Это работало еще в Delphi 5, поэтому я полагаю, что причину этого следует упомянуть где-нибудь в списках изменений между версиями. В конце концов, Delphi 2010 немного новее, чем Delphi 5.