| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Ошибка при динамическом создании формы |
| Автор: ZufuS 16.12.2006, 01:41 | ||||||
Сначала я объявил компоненты глобально, а форме задал тип TForm и при использовании
Всё было хорошо. Потом появилась нужда создать для них класс и переместить их туда.
а создание формы я изменил на
Когда происходит событие, содержащее эту операцию, появляется ошибка: Resource TCoef not found. Если TCoef наследовать не от TForm, а от TForm1(объекту этого класса и принадлежит кнопка, вызывающая создание формы Coef), то ошибки не будет. |
| Автор: Alexeis 16.12.2006, 12:22 |
| ZufuS, Для создания другой формы воспользуйтесь стандартными средствами среды, тогда у вас не возникнут проблемы такого плана. 1) меню File -> New -> Form появится новая форма. Сохраните ее в отдельный модуль 2) меню Project -> Options -> Forms -> Auto-create forms выделите вашу форму и нажмите на кнопку со стрелочкой вправо, тем самым вы запретите ее автосоздание и получите тотже эффект, что и хотели, но для этой формы создастся ресурс, без которого она не могла бы запускаться. |
| Автор: ZufuS 16.12.2006, 12:35 |
| Про это мне известно. Но я пишу не для себя программу, а курсовую. Преподавателю нужно чтобы она создавалась динамически. |
| Автор: Alexeis 16.12.2006, 14:56 |
Все верно, она и будет создаваться динамически, я же показал как ее убрать из списка автосоздаваемых форм. После запуска программы ее не будет вообще в памяти, в нужное время пишете так как вы хотели и она создастся. Ее так же можно уничтожать в произвольный момент. Не переживайте, препод именно это и имел ввиду, потому что без своего собственного ресурса форма не создастся (т.е. каждой форме должен соответствовать свой *.dfm файл, который затем превращается в ресурс экзешника), такова уж задумка авторов VCL. Все остальное будет изврат. Не думаю, что преподаватель хочет научить вас чему-то плохому. |
| Автор: ZufuS 16.12.2006, 15:14 |
| Ещё он писал при закрытии формы Form2.Free. Я пишу этот метод в кнопку с ModalResult'ом равным mrOk. И при её нажатии происходит ошибка в этой строке. |
| Автор: Savek 16.12.2006, 16:19 | ||
Form.Free если хочешь уничтожить дочернюю форму (лучше FreeAndNil()), а если хочешь чтобы форма уничтожалась при закрытии, то в OnClose формы нужно написать
|
| Автор: Bitter 16.12.2006, 20:38 | ||
| для того, чтобы создать вот это: TCoef = class(TForm) ... Coef : TCoef; нужно написать так:
и всё будет чики-чики |
| Автор: Golden Hands 16.12.2006, 21:34 | ||
|
| Автор: ZufuS 17.12.2006, 00:37 |
| Действительно достаточно было убрать из списка форм, создаваемых автоматически. Вот только когда caFree или nil пишу в закрытии формы, при втором заходе в эту форму в приложении вылезает ошибка и ругается на строку Form2.ShowModal; (в задании сказано: форма для ввода коэффициентов создается как модальная и после выполнения операции ввода закрывается с освобождением памяти (на всякий случай)) |
| Автор: ZufuS 19.12.2006, 01:50 |
| Создаю новую форму. Убираю из списка форм, создаваемых автоматически. Для нажатия кнопки на первой форме пишу Form2.ShowModal. Когда ее нажимаю в приложении появляется ошибка. Чего не хватает? -- всё, разобрался, всем спасибо |