Ну, моя проблема заключается в следующем:Delphi - создание элементов управления до создания формы?
У меня есть Delphi 5 приложение, которое я по существу портирование на Delphi 2010 (замена старых компонентов с их последними версиями, фиксируя неизбежные проблемы строки Анси/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.
Забыл отметить это: Я получаю нарушение прав доступа при размещении компонента в моей форме во время разработки. Возможно, это произойдет и во время выполнения, но я не могу подтвердить это, так как я не могу запустить его. –
Добро пожаловать в Stack Overflow, Michael. :) –
Спасибо ^^ Оглядываясь по сайту на другие проблемы, связанные с delphi, у меня тоже было, но я обычно обнаружил, что большинство из них были заданы и уже где-то отвечали;) –