Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
ВнизКол-во Auto-create Forms Найти похожие ветки
← →
Alex_C (2008-06-17 18:35) [0]Собственно вопрос такой: как много форм можно делать Auto-create и как много при этом они жрут ресутсов? Поясню. Когда в приложении 3-5 форм, их смело можно делать autocreate. А вот когда их 30? Имеет ли смысл максимально сократить число автоматически создаваемых форм?
← →
clickmaker © (2008-06-17 18:39) [1]даже когда их 3-5, все равно не стоит. Если только их одновременно открывать не надо немодально
← →
Поросенок Винни-Пух © (2008-06-17 18:40) [2]имеет смысл автокреатить одну форму и один модуль данных
← →
Ega23 © (2008-06-17 18:43) [3]
> имеет смысл автокреатить одну форму и один модуль данных
>
Я бы даже сказал, сначала креатить модуль данных, проверять там всякие коннекты, логины, пароли, если чё - убивать и выходить, а если ничё - то тогда главную форму.
← →
clickmaker © (2008-06-17 18:46) [4]для логина даже модуль данных не нужен )
← →
Поросенок Винни-Пух © (2008-06-17 18:50) [5]не. главная всегда сразу.
коннекты и проверки могут быть долгими.
долдбанули по иконке приложения, а оно чето там думаит-думаит, придумать не может. и нифига не видать.
← →
clickmaker © (2008-06-17 18:53) [6]> и нифига не видать
сплэш развернуть можно. Или в самой форме логина чё-нить крутить, дескать "коннекчусь я, не видишь, что-ли?"
← →
Alex_C (2008-06-17 20:01) [7]Ок! Спасибо за советы. А как правильно убирь форму, чтоб потом можно было сделать так:
if not Asigned(Form1) then
begin
Form1 := TForm1.Create(Self);
Form1.Show
end;
Я в OnDestroy ставлю
Form1 := nil;
В OnClose
Action := caFree;
Так правильно?
← →
Юрий Зотов © (2008-06-17 21:39) [8]
if not Asigned(Form1) then
Form1 := TForm1.Create(Self);
Form1.Show;
Остальное правильно.
← →
ANB (2008-06-17 22:24) [9]
> даже когда их 3-5, все равно не стоит. Если только их одновременно
> открывать не надо немодально
А великий смысл ? Немного сэкономим на памяти, и стоко же потеряем в скорости. Плюс, если форма часто открывается, еще и фрагментация может начаться.
← →
Viktorious © (2008-06-19 10:55) [10]эээ... А зачем каждый раз удалять форму после использования, если мы ее уже создали? Не лучше ли сделать так:
1. При каждом обращении к форме делаем проверку, не создана ли она:if not Asigned(Form1) then
Application.CreateForm(TForm1,Form1);
2. В OnDestroy и OnClose формы не делаем ничего.
Таким образом раз созданная форма останется живой до конца приложения, ее удалит Application при выходе автоматически. Преимущества: фрагментация не начнется, плюс пользователь если изменяет размеры/положение формы, ожидает увидеть ту же форму уже измененной при повторном использовании, а у вас это не так.
> А великий смысл ? Немного сэкономим на памяти, и стоко же
> потеряем в скорости.
Тут мы значительно приобретаем в скорости запуска приложения, и почти не теряем в скорости работы.
← →
Игорь Шевченко © (2008-06-19 11:00) [11]У меня в проекте 50 вызовов Application.CreateForm
Не жалуюсь ни разу
← →
Тын-Дын © (2008-06-19 11:12) [12]Каждый компонент занимает более 600 байт.
Так что можно посчитать, что выгоднее - каждый раз создвать форму заново со всеми объектами, либио создать ождин раз и использовать.
Опять же нужно исходить из целесообразности.
← →
Юрий Зотов © (2008-06-19 11:28) [13]> Тын-Дын © (19.06.08 11:12) [12]
> Каждый компонент занимает более 600 байт.
Прям уж так и каждый...
procedure TForm1.FormClick(Sender: TObject);
begin
Caption := IntToStr(TComponent.InstanceSize)
end;
48 байт (D7). Размер потомков зависит от их полей, но явно, что более 600 байт будет не у каждого компонента. Например, TEdit - 544 байта (D7).
← →
Тын-Дын © (2008-06-19 11:43) [14]
> Прям уж так и каждый...
Я думаю, что в среднем так и будет - около 600 байт. Что уж буквоедством заниматься.
← →
Юрий Зотов © (2008-06-19 11:53) [15]> Тын-Дын © (19.06.08 11:43) [14]
Согласен. А если говорить о сабже (то есть, о форме, несущей компоненты), то, скорее всего, будет гораздо больше, чем 600 байт.
Что нужно исходить из целесообразности - бесспорно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.048 c