Компиляция и выполнение проекта

В процессе компиляции проекта создается готовый к использованию файл, которым может быть приложение (ЕХЕ) или динамически загружаемая библиотека (DLL). Далее будем рассматривать только файл-приложение.

Имя приложения, получаемого в результате компиляции, совпадает с именем файла проекта, а само приложение является автономным и не требует для своей работы дополнительных файлов Delphi.

Запуск процесса компиляции выполняется по команде Project | Compile<Projectl> (Проект | Компилировать <проект>) или нажатием комбинации клавиш <Ctrl>+<F9>. В этой команде содержится имя проекта, разработка которого выполняется в настоящий момент, первоначально это Projectl .

При сохранении проекта под другим именем соответственно должно измениться имя проекта в команде меню. Компиляция проекта для получения приложения может быть выполнена на любой стадии разработки проекта. Это удобно для проверки вида и правильности функционирования отдельных компонентов формы, а также для проверки отдельных фрагментов создаваемого кода. При компиляции проекта выполняются следующие действия:

• компилируются файлы всех модулей, содержимое которых изменилось со времени последней компиляции. В результате для каждого файла с исходным текстом модуля создается файл с расширением DCU. Если исходный текст модуля по каким-либо причинам недоступен компилятору, то он не перекомпилируется;

• если в модуль были внесены изменения, то перекомпилируется не только этот модуль, но и использующие его с помощью директивы usesмодули;

• перекомпиляция модуля происходит также при изменениях объектного файла (OBJ) или подключаемого файла (INC), используемых данным модулем;

• после компиляции всех модулей проекта компилируется файл проекта и создается исполняемый файл приложения с именем файла проекта.

Кроме компиляции может быть выполнена сборка проекта. При сборке компилируются все файлы, входящие в проект, независимо от того, были в них внесены изменения или нет. (Project | Build <Projectl> (Проект | Собрать <проект1>)).

Запустить проект на выполнение можно из среды Delphi и из среды Windows. Выполнение проекта из среды Delphi осуществляется командой Run | Run (Выполнение | Выполнить) или нажатием клавиши <F9>. При этом созданное приложение начинает свою работу. Если в файлы проекта вносились изменения, то предварительно выполняется компиляция проекта. Запущенное приложение работает так же, как и запущенное вне среды Delphi, однако имеются некоторые особенности:

• нельзя запустить вторую копию приложения;

• продолжить разработку проекта можно только после завершения работы приложения;

• при зацикливании (зависании) приложения его завершение необходимо выполнять средствами Delphi с помощью команды Run | Program Reset (Выполнение | Остановить программу) или комбинации клавиш <Ctrl>+<F2>.

Лекция № 3. Библиотека компонентов (VCL). Понятие класса и объекта.

1. Организация библиотеки компонентов

Библиотека визуальных компонентов (Visual Component Library — VCL) Delphi содержит множество предопределенных типов компонентов, из которых пользователь может строить свою прикладную программу. Витрину библиотеки — палитру компонентов, вы видите расположенной справа в полосе инструментальных панелей интегрированной среды разработки Delphi. На этой палитре вы можете выделить курсором мыши нужный вам компонент и перенести его на форму. Палитра библиотеки в Delphi приведена на рисунке.

Компиляция и выполнение проекта - student2.ru Рис.Палитра компонентов  

Поскольку число страниц в палитре велико и не все закладки видны на экране одновременно, в правой части палитры компонентов имеются две кнопки со стрелками, направленными влево и вправо. Эти кнопки позволяют перемещать отображаемую на экране часть палитры.

Чтобы перенести компонент на форму, надо открыть соответствующую страницу библиотеки и указать курсором мыши необходимый компонент. При этом кнопка-указатель Компиляция и выполнение проекта - student2.ru , размещенная в левой части палитры компонентов, приобретет вид не нажатой кнопки. Это значит, что вы находитесь в состоянии, когда собираетесь поместить компонент на форму. Поместить выбранный компонент на форму очень просто — надо сделать щелчок мышью в нужном месте формы.

Есть и другой способ поместить компонент на форму — достаточно сделать двойной щелчок на пиктограмме компонента, и он автоматически разместится в центре вашей формы. Если вы выбрали компонент, а затем изменили ваше намерение размещать его, вам достаточно нажать кнопку указателя. Это прервет процесс размещения компонента и программа вернется в нормальный режим, в котором вы можете выбирать другой компонент или выполнять какую-то команду.

Имена компонентов, соответствующих той или иной пиктограмме, вы можете узнать из ярлычка, появляющегося, если вы задержите над этой пиктограммой курсор мыши. Если вы выберете в палитре компонент и нажмете клавишу F1, то вам будет показана справка по типу данного компонента. Тут надо сразу сделать одно замечание. Имена на ярлычках выглядят, например, так: MainMenu, Button и т.д. Однако, в Delphi все имена классов в действительности начинаются с символа «Т», например, TMainMenu, TButton. Под такими именами вы можете найти описания соответствующих компонентов во встроенной в Delphi справочной системе.

Палитра имеет ряд страниц, на которых скомпонованы пиктограммы всех компонентов, предопределенных в Delphi.

2. Понятие класса. Элементы класса.

В языке Object Pascal классы являются специальными типами данных и ис­пользуются для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром этого класса.

Класспредставляет собой особый тип записи, имеющий в своем составе та­кие элементы (члены), как поля, свойства и методы.

Поля класса аналогич­ны полям записи и служат для хранения информации об объекте.

Методами называются процедуры и функции, предназначенные для обработки полей.

Свойства занимают промежуточное положение между полями и методами. С одной стороны, свойства можно использовать как поля, например, при­сваивая им значения с помощью оператора присваивания; с другой стороны, внутри класса доступ к значениям свойств выполняется методами класса.

Описание класса имеет следующую структуру:

Туре <Имя класса> = class (<Имякласса-родителя>)

private

<Частные описания>;

protected

<Защищенные описания>;

public

<0бщедоступные описания>;

published

<Опубликованные описания>;

end;

В данной структуре описаниями являются объявления свойств, мето­дов и событий. Для различных элементов класса можно устанавливать раз­ные права доступа (видимости), для чего в описании класса используются разделы, обозначенные специальными спецификаторами видимости.

Разделы private и protected содержат защищенные описания, которые дос­тупны внутри модуля, в котором они находятся, а также для порожденных классов.

Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен сам класс.

Раздел published содержит опубликованные описания, которые в дополнение к общедоступным описаниям порождают информацию о типе времени вы­полнения. По этой информации во вре­мя выполнения приложения осуществляется проверка принадлежности элементов объекта тому или иному классу. Одно из назначений раздела published — обеспечение доступа к свойствам объектов при конструировании приложений. В Инспекторе объектов видны те свойства, которые явля­ются опубликованными. Если раздел published не указан, тоонподразумевается по умолчанию, поэтому любые описания, расположенные за строкой с указанием имени класса, будут опубликованными.

Поля

Полекласса представляет собой данные, содержащиеся в классе. Поле опи­сывается как обычная переменная и может быть любого типа.

При создании новых классов объект-потомок наследует все поля родителя, при этом удаление или переопределение этих полей невозможно. Допуска­ется добавление новых полей, таким образом, чем дальше по иерархии ка­кой-либо класс находится от класса TObject, тем больше полей он имеет.

Свойства

Свойствареализуют механизм доступа к полям. Каждому свойству соответ­ствует поле, содержащее значение свойства, и два метода, обеспечивающих доступ к этому полю. Описание свойства начинается со слова property, при этом тип свойства и соответствующего поля должен быть одинаковым.

Пример.Описание свойств.

type TNewClass = class(TObject)

private

FCode: integer;

FSign: char;

FNote: string;

Published

property Code: integer read FCode write FCode;

property Sign: char read FSign write FSign;

property Note: string read FNote write FNote;

end;

Для доступа к полям Fcode, FSign и Fnote, которые описаны в защищен­ном разделе и не доступны программисту, используются свойства code, sign и Note, соответственно.

Методы

Методпредставляет собой подпрограмму (процедуру или функцию), яв­ляющуюся элементом класса. Описание метода похоже на описание обыч­ной подпрограммы модуля. Заголовок метода располагается в описании класса, а сам код метода находится в разделе реализации, где имеет состав­ное имя, включающее указание типа класса.

Метод, объявленный в классе, может вызываться различными способами, что зависит от вида этого метода. Вид метода определяется модификатором, который указывается в описании класса после заголовка метода и отделяет­ся от заголовка точкой с запятой.

По умолчанию все методы, объявленные в классе, являются статическими и вызываются как обычные подпрограммы.

Методы, которые предназначены для создания или удаления объектов, на­зываются соответственно конструкторами и деструкторами.

События

Событиепредставляет собой свойство процедурного типа, предназначенное для обеспечения реакции на те или иные события. Присваивание значения этому свойству (событию) означает указание метода, вызываемого при наступлении события. Соответ­ствующие методы называются обработчиками событий.

События Delphi бывают различных типов, зависящих от вида этого события. Самым простым является тип TNotifyEvent, который характерен для нотификационных (уведомляющих) событий. Этот тип описан следующим образом.

type TNotifyEvent = procedure (Sender: TObject) of object;

Описание содержит один параметр sender, указывающий объект-источник события.

Так как события являются свойствами, то их значения можно изменять в процессе выполнения приложения, т.е. динамически менять реакцию объекта на одно и тоже событие. При этом допускается назначать обработчик события одного объекта другому объекту или событию, если совпадают типы их событий. Подобная возможность обеспечивается с помощью указате­ля на класс.

Лекция № 4. Общие свойства визуальных компонентов. События, методы. Обращение к объектам.

Наши рекомендации