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