О файле проекта

=== О файле проекта ===
Начнем с файла проекта (dpr). Фактически он содержит собственно программу, в то время как связанные с проектом многочисленные файлы форм и dll представляют собой подпрограммы. 
Структура файла проекта, содержащего единственную форму, такова, как показано в листинге 1.
Листинг 1 
program project1; 
uses 
 forms, 
 unit1 in 'unit1.pas' {form1}; 
{$r *.res} 
begin 
 Application.Initialize; 
 Application.CreateForm(TForm1, Form1); 
 Application.Run; 
end. 
Проект (программа) начинается обращением к методу initialize глобального объекта application и заканчивается после завершения его метода run. Этот метод - центральный: он визуализирует главную форму приложения и осуществляет диспетчеризацию сообщений windows. От того, какая работа выполняется строками кода, расположенными перед обращением к нему, зависят время загрузки приложения, и вид экрана до появления главного окна. 
Метод initialize предусмотрен, как говорится, на всякий случай и по умолчанию ничего не осуществляет. Чтобы заставить его работать, следует поместить указатель на соответствующую процедуру без параметров в глобальную переменную initproc. Это можно сделать в секции инициализации любого модуля (код этих секций активизируется до начала работы основной программы) или непосредственно в теле главного проекта (листинг 2): 
Листинг 2
procedure Init; 
begin 
 // Выполняет какую-то работу; 
end; 
begin 
 initproc := @init; 
 Application.Initialize; // Обращение к init 
 Application.CreateForm(TForm1, Form1); 
 Application.Run; 
end. 
Разумеется, в этом последнем случае будет проще в первом операторе основной программы явно обратиться к процедуре init. Вообще говоря, в подавляющем большинстве случаев оператор application.initialize можно удалить без каких-либо последствий для программы.
Сокращение времени загрузки 
В реальном проекте со множеством форм между обращениями к initialize и run обычно расположены многочисленные вызовы метода createform, с помощью которого создаются используемые в проекте формы. Каждый вызов этого метода увеличивает время загрузки приложения. В начальный момент на экране будет видно только одно окно главной формы приложения (оно создается первым обращением к createform), а остальные объекты-окна можно создавать в ходе работы программы перед визуализацией соответствующего окна. 
По умолчанию в переключателе auto create forms (вызывается с помощью опции project|options среды delphi) на закладке preference окна tools|environment установлен флажок, что заставляет delphi помещать любую новую форму в список auto-create forms и формировать соответствующий оператор обращения к createform в файле проекта. Если очистить этот переключатель перед началом работы над проектом или перенести ненужные формы в список available forms окна project|options, можно существенно (иногда - в десятки раз) сократить время загрузки приложения. 
Вид экрана до появления главного окна 
Листинг 3
begin 
 with TForm5.Create(nil) do 
 try 
 Progressbar1.Max := 100; 
 Show; // Показываем форму form5 с индикатором progressbar1 
 Update; // Прорисовываем форму Form5 
 Application.CreateForm(TForm1, Form1); 
 Progressbar1.StepBy(25); 
 Application.CreateForm(TForm2, Form2); 
 Progressbar1.StepBy(25); 
 Application.CreateForm(TForm3, Form3); 
 Progressbar1.StepBy(25); 
 Application.CreateForm(TForm4, Form4); 
 Progressbar1.StepBy(25); 
 finally 
 Free; // Разрушаем ненужную форму Form5 
 end; 
 Application.Run; 
end. 
Источник: http://www.delphi.h5.ru/ 
ID: 00087