Урок 65 — Ресурсы в Delphiм, (часть 1/2)
Ресурс — это любой файл который может находится внутри исполняемого файла (.ехе), его можно извлекать в память программы и работать с ним, а можно и вовсе извлечь его на диск (например чтобы предотвратить их случайное удаление пользователем, либо, чтобы защитить их от изменений). Данная статья показывает как вшить любой файл как ресурс в EXE-шнике.
Далее рассмотрим, как создать файл ресурсов, содержащий копию какого-либо файла. После создания такого файла его можно легко прицепить к Вашему проекту директивой <$R>.
Файлом ресурсов будет вот эта картинка:
Итак для того чтобы создать ресурс нам нужен текстовый файл с указаниями для компилятора ресурсов. Создадим папку и положим туда картинку и там создадим текстовый файл вот с таким содержимым:
IMAGE BITMAP logo.bmp
Теперь поясним что эта запись значит:
Первое слово — имя ресурса, второе — тип ресурса, третье — путь к файлу. Т.е. синтаксис будет таким: [Имя] [Тип] [Путь].
После редактирования сохраним наш файл по названием Res.rc, далее положим в эту же папку сам компилятор ресурсор, он лежит в папке Delphi\bin\brcc32.exe, и просто перетаскиваем файл Res.rc на brcc32.exe. После это должен появится файл Res.RES, это и есть наш готовый ресурс, хранящий в себе картинку. Если этого не произошло то можно обойтись другим способом:
Создать ТХТ-файл, написать в него: brcc32.exe Res.rc, переименовать файл в 1.bat и запустить его, должно сработать.
Все ресурс создан, теперь его надо подключить в наш EXE-шник. Делается это так:
После ключевого слова implementation пишется строка это говорит компилятору Delphi о том что надо включить в ехе-файл наш ресурс, его необходимо положить вместе с файлом проекта. После компиляции он больше не нужен.
Далее выташим на форму компонент Image и кнопку, на ней обработчик события OnClick: Компилируем и вот:
Все работает, но только для файлов .bmp, о том как работать с другими файлами в следуйшем уроке.
Как создать exe файл в delphi 7

Главное окно (Рис 1).
![]() Инспектор объектов (Рис 2). |
![]() Окно Form (Рис 3). |

Редактор кода (Рис 4).
Давайте уже напишем нашу первую программу!
Нажмите на зеленый треугольник в главном окне. 
После нажатия на зеленый треугольник, наша программа начнет компилироваться (создаваться), то есть компилятор проверит окно редактора кода на наличие ошибок, но так как мы в окно редактора кода еще ничего не писали, то ошибок возникнуть не должно. После компиляции, Delphi запустит нашу программу для тестирования.
Вот что мы увидим:
Обучающий курс 5. Управление проектом в Delphi
В каком виде сохраняются созданные программы? Этот вопрос возникает у любого начинающего программиста. Эта тема заслуживает отдельного внимания. Как известно, в Windows любая программа представляет собой exe-файл, который является исполняемым, т.е. может быть запущен как отдельное приложение. Понятно, что разрабатывая программу, в итоге нужно получить именно exe-файл, чтобы его можно было запустить на компьютере, где не установлена среда, в которой эта программа была создана. В языках программирования для DOS, в частности Turbo Pascal, всё довольно просто — весь программный код сохраняется в один-единственный файл, а в итоге получается exe-файл. Довольно просто и удобно. При переходе в Windows всё становится гораздо сложнее. Оконное приложение Windows не может быть сохранено в одном файле. Если в среде DOS программы можно называть именно программами, то в объектно-ориентированном программировании они называются проектами. Почему проектами? Всё достаточно просто — программа представляет собой совокупность некоторого числа файлов различного типа, определённым образом связанных между собой. Очевидно, что всю эту группу логично назвать проектом.
В этой статье мы познакомимся с самыми основными типами файлов, которые включены в любой проект, созданный на Delphi . На самом деле типов файлов гораздо больше, но эти — базовые.
*.dpr — файл проекта
Это главный файл всего проекта. Если этот файл отсутствует, запустить программу будет невозможно. В файле хранятся все основные параметры приложения, а также информация об окнах, которые в приложение включены. Файл представляет собой свободно читаемый код. Посмотреть содержимое этого файла можно командой меню Project -> View Source .
*.dfm — файл описания формы
В этом файле содержится описание всех объектов, которые расположены на форме, а также информация обо всех их свойствах. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств — достаточно запомнить только те, которые имеют значение, отлиное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается.
*.pas — модуль (самостоятельный, либо модуль формы)
Именно этот файл больше всего похож на файл программ Turbo Pascal. В этом файле находится код программы. Модули могут быть отдельными от конкретных проектов — в этом случае их можно подключить к любому проекту и использовать. Как правило, в отдельных модулях находятся вспомогательные функции, либо какие-либо объекты. Помимо этого модуль есть у каждой формы. В результате *.pas-файл неразрывно связан с файлом *.dfm, а форма соответственно описывается этими двумя файлами — один содержит её состояние и объекты, а второй — код программы, относящийся к этой форме. Следует отметить, что модули значительно облегчают процесс написания программы и ориентацию в больших модулях — отдельные элементы большого модуля можно вынести в несколько модулей и просто подключить их к проекту.
*.res — файл ресурсов
Это дополнительный файл. В нём находятся данные различных типов — это могут быть тексты, изображения, звуки и т.д. К примеру, для проекта этот файл создаётся автоматически и в нём сохраняется иконка (значок) приложения, а также некоторая информация о проекте.
Вот и все основные файлы, информацию о которых обязательно нужно знать. Чтобы перенести проект, достаточно следующих файлов: *.dpr, *.dfm и *.pas. Имея эти файлы проект можно восстановить, а программу — запустить. Желательно также наличие *.res-файла(ов), но тем не менее это не обязательно. Если *.res-файл, сопоставленный проекту будет отсутствовать, то при открытии проекта Delphi предупредит, что файл не найден и спросит, что нужно сделать. Достаточно проигнорировать сообщение и файл будет создан автоматически при следующем запуске программы.
Работа с проектом
Ну а теперь пришло время рассказать о базовых операциях с проектом, так как ранее речь об этом не шла. Рассмотрим всё по порядку.
Создание нового проекта
Для создания «чистого листа» следует выбрать в меню File -> New -> Application . В разных версиях Delphi содержимое подменю New может немного отличаться, но всё основное присутствует всегда. После этого создаётся новый проект, такой, какой появляется при запуске Delphi.
Открытие существующего проекта (или файла)
Для этого существует команда File -> Open. Выбрав файл *.dpr , откроется проект, а выбрав какой-либо другой файл (например, *.pas или *.dfm ) откроется что-либо другое (например, отдельная форма).
С сохранением есть несколько тонкостей. Исходя из того, что проект представляет собой совокупность нескольких файлов, можно сделать вывод, что сохранять нужно все эти файлы, а не какой-то в отдельности. Выбрав File -> Save , Вы сохраните только текущую форму, но не более того, а проект останется «висеть в воздухе». File -> Save As. — стандартный пункт, который делает то же самое, что и Save , только позволяет пересохранить файл (форму) под другим именем. Команда Save Project As. сохраняет файл проекта (*.dpr). Таким образом, чтобы сохранить проект полностью, нужно сохранить каждую из форм и сам проект. Делать это по отдельности достаточно неудобно, поэтому существует команда, облегчающая этот процесс: File -> Save All . При вызове этой команды сначала появится диалог для сохранения формы (если форм несколько, то и диалогов будет несколько), а затем диалог для сохранения проекта. После того, как все диалоги отработали, можно с уверенностью сказать, что проект сохранён полностью.
Железное правило: каждый проект должен быть сохранён в отдельном каталоге!
Если в один каталог сохранить несколько проектов, то все файлы перемешаются и можно отправлять всё в корзину. Этого нельзя делать ни в коем случае!
Запуск и остановка программы
Теперь, когда проект сохранён, программу можно и запустить и посмотреть, что же получилось. Ещё одно правило, которое желательно соблюдать: перед запуском программы проект нужно сохранить. Мгновенный вопрос: зачем? Конечно, делать это или нет — решать Вам, но бывают случаи, когда программа зависает (по вине самого программиста например), а с ней зависает и оболочка Delphi. В этом случае ничего не остаётся делать, как «убивать» Delphi через Диспетчер задач Windows. Понятно, что изменения, которые были внесены в проект, теряются. Однако не всё так плохо. Случаи зависания Delphi IDE достаточно редки. Как правило, если программа зависает, Delphi позволяет её просто уничтожить из памяти и продолжить работу. Процесс сохранения проекта перед запуском можно поручить оболочке: меню Tools -> Environment Options. , вкладка Preferences , блок Autosave options — опция Editor files .
Запомните следующие основные горячие клавиши:
Ctrl+F9 — компиляция программы. Что такое компиляция? Говоря простым языком — создание выходного (exe) файла программы. Следует отметить, что имя выходного файла совпадает с именем проекта, т.е. именем *.dpr-файла и не может быть изменено. Выходной файл создаётся в том же каталоге, где расположение *.dpr-файл. Однако компиляция просто «собирает» всю программу, но не запускает её.
F9 — запуск. В отличие от компиляции, это уже полноценный запуск программы из оболочки Delphi, однако не совсем такой, каким является запуск приложения из Windows. Запуск происходит под отладчиком. Но об этом позже.
Ctrl+F2 — остановка выполнения программы. Это именно то, о чём сказано чуть выше. Если нужно экстренно завершить работу программы, нужно активировать какое=-либо из окон оболочки Delphi и нажать это сочетание клавиш. Программа будет остановлена и можно будет безболезненно продолжить работу.
Все эти команды доступны и напрямую из меню: Run -> Run , Project -> Compile , Run -> Program Reset .
Все основные команды управления проектом вынесены также в виде кнопок на панели инструментов:
Для проекта можно установить множество разнообразных параметров. Все они находятся в окне Project -> Options . В частности, на вкладке Application можно указать заголовок проекта, который будет отображаться на кнопке программы на панели задач. Совет: всегда прописывайте заголовок своей программе, не оставляйте стандартного » Project1 » — это резко бросается в глаза. На этой же вкладке можно выбрать иконку (значок) для приложения — файл *.ico размером 32х32 пикселя. В блоке Output settings можно указать расширение выходного файла. Заполнять это поле не обязательно — по умолчанию файлу присваивается расширение .exe . Однако в некоторых случаях эта настройка бывает полезной. Например, экранные программы-заставки представляют собой те же исполняемые exe-файлы, только имеют расширение .scr . Неудобно каждый раз после внесения изменений в программу, чтобы протестировать заставку, переименовывать файл. А прописав в указанное поле » scr » проблема мигом решится.
В этой статье рассмотрены все базовые навыки для управления проектами. Теперь можно приступить непосредственно к изучению языка и исследованию объектов.
Процесс создания исполняемого файла в Delphi
Создаваемое в Delphi приложение состоит из набора файлов:
— файла с исходным текстом модулей, которые имеют расширение .pas;
— файла формы .dfm – это бинарный или двоичный файл, в котором содержится описание всех компонент, входящих в данную форму.
Чтобы среда Delphi знала какие файлы относятся к данному приложению создается еще один файл, называемый файлом проекта с расширением *.DPR.
П роцесс создания exe-файла иллюстри- руется схемой:
Для каждого файла проекта *.dpr формируется соответствующий код программы, которая может иметь вид:
Program Project1; //имя проекта
Unit1 in ‘Unit1.Pas’
Forms – стандартный модуль, в котором описана форма; Unit1 – наш Unit; ‘Unit1.Pas’ – имя файла, где будет храниться наш Unit.
Здесь Application – это объект класса ТАpplication. Этот объект создается автоматически и он инкапсулирует важнейшие свойства и методы любой программы, а именно: он является посредником между программой и ОС Windows.
Метод Interface осуществляет ряд вспомогательных действий, необходимых для работы под управлением ОС Windows.
Метод CreateForm создает и показывает на экране окно главной формы.
Метод Run реализует бесконечный цикл получения и обработки поступающих сообщений.
Файл проекта (с расширением *.dpr) автоматически формируется Delphi.
Пример: разработать программу, которая управляется следующей формой.
П усть по нажатию кнопки вызывается метод нашего класса, который присваивает некоторое значение полю класса и показывает его затем в окошке Label1. Будем полагать, что наш класс описывается в отдельном Unit.
Unit создаваемый с помощью Delphi имеет следующий вид:
Uses … // подключение модулей
Для создания Unit и включения его в проект необходимо в меню файл вызвать команду New, при этом открывается окно, в котором содержатся различные объекты, в том числе и объект создания Unit и получаем заготовку Unit
Field:integer; // поле класса
Procedure MetodField (i:integer);
Uses Unit2; // подключение нашего Unit
//создание объекта, т.е. выделение в хипе адреса…
3. Стандартные визуальные компоненты Формы
Форма – это окно, которое представляет собой проект будущей программы. Форма является наборным полем, на котором располагаются размещаемые программистом компоненты.
Любая программа для Windows имеет как минимум одну связанную с ней форму, которая появляется в момент старта программы и называется главной. Вместе с тем программа может иметь сколько угодно форм, каждая из которых появляется на экране в соответствии с целями программы.
Все формы строятся на основе класса TForm. Форма обладает большим количеством характеристик (свойств), как собственных, так и наследуемых от своих предков. Это характеристики предназначены для функционирования форм как окна Windows, а также для выполнения специфических задач. Некоторые основные характеристики формы можно задавать с помощью инспектора объектов. Для задания и получения тех или иных свойств служат разнообразные методы.
Кроме задания свойств формы через инспектор объектов, можно задавать эти свойства также в программе. Так, например, некоторые свойства формы можно изменять, используя:
BorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
Данное свойство позволяет задавать кнопки на рамке формы.
Для задания вида формы может быть использовано одно из значений свойства FormStyle:
FormStyle = (fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop);
fsNormal — обычная форма,
fsMDIChild — младшая форма MDI,
fsMDIForm — старшая форма MDI,
fsStayOnTop — форма, располагающаяся поверх других.
Все другие формы MDIChildForm располагаются внутри исходной формы; fsStayOnTop – будет располагаться поверх других, она постоянно будет появляться.
Icon – это свойство определяет пиктограмму, размещаемую в левом углу формы.
Menu – указатель на главное меню формы.
Свойство формы Position позволяет установить первоначальное положение и размеры формы на экране:
Position = ( poDesigned, poDefault, poDefaultPosOnly,
poDesigned – позволяет учесть размеры и положение формы, заданные при проектировании;
poDefault – размеры и положение устанавливаются OC Windows;
poDefaultPosOnly – определяется только положение формы OC Windows;
poDefaultSizeOnly – только размеры определяются OC Windows;
poScreenCenter – форма размещается по центру экрана.
Свойством WindowsStyle определяют состояние или стиль формы:
WindowsStyle = (WSNormal, WSMaximize, WSMinimize);
WSNormal — позволяет показать окно в виде спроектированного на этапе проектирования программы;
WSMaximize – окно на весь экран;
WSMinimize – свернуть окно до пиктограммы.
Caption – заголовок формы.
Color – цвет формы (фона).
Cursor – курсор мыши.
Enabled – с помощью этого свойства можно разрешить или запретить реакцию формы на возникающие события. Этому свойству можно придавать значения true, false.

