Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Кол-во 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
2-1212745836
uno-84
2008-06-06 13:50
2008.07.20
Запись файла в блоб массив


15-1212563337
Kolan
2008-06-04 11:08
2008.07.20
Есть подозрение, что найдено средство от зависания отладки...


2-1213768672
lewka-serdceed
2008-06-18 09:57
2008.07.20
Открытие файла


15-1212597081
ProgRAMmer Dimonych
2008-06-04 20:31
2008.07.20
Туплю (MySQLi+PHP)


2-1214072499
Вован
2008-06-21 22:21
2008.07.20
Нужно открыть окно чужой минимизированной программы