Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
11-1191960858
ElectriC
2007-10-10 00:14
2008.07.20
Проблема с KeyPreview


2-1213898401
ProofNA
2008-06-19 22:00
2008.07.20
Работа с принтером


2-1213989349
Makaveli
2008-06-20 23:15
2008.07.20
освобождение памяти


3-1202726641
pavel_guzhanov
2008-02-11 13:44
2008.07.20
Непонятность с null в хранимой процедуре


4-1193306040
MAXIMUS
2007-10-25 13:54
2008.07.20
Как установить русскую раскладку по умолчанию?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский