![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
||
|
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Отлаживая свой проект, возник вопрос, о том, как лучше всего создавать формы, чтобы было проще отследить порядок их освобождения. Посему, решил затеять опрос. Будьте любезны уделить немного времени на ответ, и желательно обьяснение
![]() |
|||
|
||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 17 Всего: 50 |
Одно и тоже
Application.CreateForm(TForm, Form); Form := TForm.Create(Application) |
|||
|
||||
Bose |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Мой ответ:
В крупных MDI приложениях, я стараюсь создавать формы так
или так
А модальные формы(которые освобождаются сразу же после вызова) обычно создаю от активной
|
||||||
|
|||||||
vv3 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 29.4.2006 Репутация: нет Всего: нет |
Owner'ом назначаю главную форму приложения, или ту, которая будет Parent'ом для создаваемой.
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Не совсем . Главной формой становиться первая созданная Application.CreateForm. Если нужно показать форму до главной, то создавать ее нужно ее конструктором. А по теме - лучше всего первый вариант (автоматически). Идет все по накатанной и не напрягает мозги. Но как обычно есть интереснейшие исключения. -------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
bems, Вообще-то автоматическое создание это самый нерациональный способ использования ресурсов. Так как большинство форм не работает в один и тотже момент, а ресурсы под них все равно выделяются, кроме того загрузка такого приложения значительно медленее.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
А такой ресурс как процессорное время?
Если все время что-то создавать/освобождать то это не работа, а сплошное ожидание. Если даже формы и не работают одновременно, то некоторые используются значительно чаще других. Или если форма легкая. Вобщем все зависит от конкретного случая. А если к меня в проекте число форм приближается к 15, то я начинаю задумываться, что я делаю неправильно. -------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
bems, Об удалении форм ни кто не говорил, кроме того от метода создания форм общее время загрузки всех форм не меняется, а Маленькие формы тем более создавать автоматически нет смысла, поскольку время их отображения почти совпадает со временем их создания(по крайней мере на взгляд пользователя).
Конечно, если форму один раз запустили, то вероятно ее могут запустить еще раз, а если нет, то длительная загрузка приложения будет лишний раз раздражать пользователя, тогда как быстрое появление главного окна наоборот обрадует и безусловно повысит часоту использования программы. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
то все равно вероятно ее запустят -------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Я же писал
А что касается то это зависит от типа приложения, например в micrsoft Word, за время работы я не вызываю и 5% всех ее форм, но при этом приложение является на мой взгляд очень функциональным и удобным -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Отчасти ты прав. Я тут задумался и понял ,что моя точка зрения именно такая потому, что большинство форм кроме главной у меня в основном применяются для изменения каких-то параметров программы и поэтому я объединяю формы с кодом который загружает и сохраняет эти настройки. Потребность загрузить настройки появляется раньше чем показать форму с контролами этих настроек.
-------------------- Обижено школьников: 8 |
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Мда... не писали Вы под 9x системы и приложение форм на 20 хотя бы тоже не писали, а если и писали, то не задумывались, почему оно так долго стартует... Бонально не грамотное построение программы, зачем вам объект формы для загрузки настроек? -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Главная форма - автоматом, как дельфя генерирует
Остальные - в зависимости от предполагаемой частоты использования и области видимости. Например, есть диалоги, запрашивающие какие-то параметры у пользователя при создании отчета - зачем им жить постоянно? делаю примерно так:
Есть формы, которые могут быть вызваны многократно, причем из разных мест программы, например, справочники. Эти я оставляю на auto create form. Вобщем, все это - дело вкуса и количества форм. 3-5 форм в autocreate не задержат загрузку программы (если, конечно, не содержат в OnCreate "тяжелого" кода). -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Главную форму создаю автоматически. Другие формы просто вызываю.
-------------------- Ll 2 |
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
Спасибо за комментарии :-)
Одно из исключений - это многоконность. Точнее случай, когда, одна и та же форма нужна в нескольких экземплярах. не очень эффективное решение имхо ![]() По-моему, всё-таки, самый эффективный способ - это создание форм с Owner:=Application или Owner:=Application.MainForm. Особенно если в проекте, классов форм больше 30, и некоторые из них могут открываться в нескольких экземплярах(MDI). И ещё возник такой вопрос - что происходит с формой созданной как Form := TForm.Create(nil). Если её не освобождать "ручками", то в какой момент она будет освобождена? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |