Создание обработчика событий
Технология создания и отладки программных приложений в Delphi.
Теоретические пояснения.
Delphi – это среда быстрой разработки программных приложений, в которой в качестве языка программирования используется Object Pascal. В основе системы быстрой разработки программ ( RAD – система, Rapid Application Development – среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования , суть которого заключается в том, что среда разработки берет на себя большую часть генерации кода программы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий, написанных на языке Object Pascal, являющимися расширением языка программирования Паскаль.
Для освоения технологии создания и отладки программных приложений студенты должны изучить по приведенной ниже учебной литературе следующие минимально необходимые теоретические материалы:
1. Среда Delphi:
- структура окна Delphi при запуске системы, а именно: главное окно, окно формы, окно инспектора объектов, окно просмотра списка объектов, окно редактора кода, и назначение всех окон;
- основные компоненты страницы Standard: Label (метка), Edit (строка ввода), MEMO (многострочный текстовый редактор), Button (командная кнопка), Panel (контейнер для размещения других компонентов). Со страницы Additional: в первую очередь изучить компонент BitBtn (командная кнопка с надписью и пиктограммой) и компонент StaticText ( метка с эффектами выделения поля метки). Перечисленные компоненты необходимо использовать при создании интерфейсного окна пользователя в окне формы для создания простейших программных приложений.
- Язык Object Pascal. Необходимо изучить алфавит языка, простейшие конструкции языка: простые типы данных и допустимые операции над ними, а так же применимые к ним стандартные функции. Основные операторы языка: присваивание, составной, условный, выбора, цикла.
-
Структура проекта
Создаваемое в Delphi приложение состоит из нескольких элементов, объединенных в проект, которые называются файлами проекта. Разработка проекта строится на тесном взаимодействии процесса создания формы (в окне формы) и процесса написания кода (т.е. текста программы на языке Object Pascal) в окне кода. Между окнами существует неразрывная связь, которую автоматически отслеживает Delphi. При этом по компонентам, размещенным на форме программистом, автоматически создаются строки кода на языке Object Pascal. Любые изменения на форме, а именно добавления, корректировка компонента, приводит к автоматическому изменению кода программы. Поэтому сначала строят форму, размещая на ней нужные компоненты, а потом переходят к написанию кода, если в этом есть необходимость. В любом случае, когда проектируется новая форма, в окне кода создается модуль, структура модуля приведена в таблице на рис. 1.
Первоначально этот модуль Unit1формы Form1.
Реализация проекта в компьютере состоит из следующих этапов: компиляция, компоновка, исполнение. На каждом из этих этапов создаются файлы, имеющие определенное расширение.
При компиляции каждого проекта Delphi создает файлы со следующими расширениями:
*.PAS– содержит копию текста программы из окна кода программы;
*.DFM – имеет описание содержимого окна формы;
*.DCU – содержит результат преобразования в машинные инструкции текста из обоих файлов: *.PASи *.DFM.
Unit <имя модуля> Interface {Содержит списки подключаемых модулей, как стандартных модулей Delphi, так и модулей, созданных пользователем.} Implementation {Содержит списки подключаемых модулей, объявления типов, констант, переменных, доступ к которым из других модулей закрыт. Здесь же помещаются тексты кодов всех объявленных в разделе Interface функций и процедур.} Initialization {Содержит операторы, выполняемые один раз при обращении к модулю.} Finalization {Содержит операторы, которые выполняются при окончании выполнения модуля.} |
Рис. 1. Структура модуля.
Файлы *.DCU создаются компилятором и далее обрабатываются компоновщиком, который преобразует его в единый загружаемый файл с расширением *.EXE.
Файл всего проекта имеет расширение *.DPR. Файл проекта является центральным файлом или главным файлом проекта.
В приведенных идентификаторах файлов проекта символ “*” – это место, где записывается имя файла.
В Delphi имена могут состоять из латинских букв, цифр и знака подчеркивания. Никакие другие символы и буквы национальных алфавитов в именах не допускаются. Длина имени, т.е. количество символов, из которых оно состоит, не ограничена.
Главный файл проекта представляет собой программу, которая создается самой Delphi и имеет следующий вид:
Program Project1; Uses Forms, Unit in ‘Unit.pas’ (Form1); {$R*.Res} Begin Application. Initialize; Application. CreateForm(TForm1, Form1); Application. Run; End. |
Имя проекта (имеет расширение *.DPR) и имя исполняемого файла (имеет расширение *.EXE) совпадают. По умолчанию система дает имя ”Project1”, в заголовке главного файла проекта после слова “Program” указано именно это имя. В главном файле проекта в предложении Uses указывается имя подключаемого модуля Forms – это стандартный библиотечный модуль Deplhi, который является обязательным для всех предложений, имеющих в своем составе формы, и перечисляются подключаемые модули всех форм проекта (если их несколько).
Главный файл проекта содержит всего три инструкции, выполняющие инициализацию приложения, создание формы Form1 и запуск приложения.
Несмотря на то, что файл проекта формируется в Delphi автоматически на экране он не выводится, его можно посмотреть в окне, для чего надо выполнить команду из пункта меню главного окна формы Delphi, а именно Project/View Source(Проект/Просмотр источника). Не рекомендуется вносить изменения в файл проекта, особенно на начальном этапе изучения Delphi.
В модуле в разделе реализации Delphi записывает директиву компилятора {$R*.DFM}. Она предназначена для связывания модуля с описанием соответствующей ему формы. Описание формы и всех размещенных на ней компонентов система Delphi хранит в файлах с расширением *.DFM. Эти файлы имеют обычный текстовый формат.
Так как проект состоит из нескольких файлов, рекомендуется создавать отдельный каталог для каждого проекта, если их несколько.
Создание формы приложений
Разработка приложений в Deplhi начинается с создания формы. Непосредственно после начала создания приложения Delphi предлагает разработчику «пустую» форму. Но пустой ее можно назвать условно, т.к. она содержит основные элементы окна Windows: заголовок Form1, кнопки минимализации, максимализации и закрытия окна и кнопку вызова системного меню, поэтому изначально для любого разрабатываемого приложения автоматически предлагается окно формы, для которой уже созданы два файла с описанием и модулем, т.е. файлы *.DFMи *.PAS(окно кода).
На этапе проектирования форм программа как бы составляется из готовых компонентов, которые можно добавлять к ней с помощью всего нескольких щелчков мыши.
Компоненты обладают наборами свойств, характеризующими их отличительные особенности. Свойства компонент в процессе проектирования формы устанавливаются с помощью Инспектора Объектов.
Некоторые свойства компонент, имеющие частое применение:
Align – задает тип выравнивания компонента внутри формы (по умолчанию равно alNone);
Aligment - определяет выравнивание текста в компоненте. Оно принимает следующие значения: TaLeftJustify – выравнивание по левому краю, TaRightJustify – выравнивание по правому краю. По умолчанию выравнивание происходит по левому краю,TaCenter-выравнивание текста по центру;
AutoSize – при значении свойств Trueбудет автоматически изменяться ширина и высота метки в соответствии с размещенным в ней текстом;
Caption – заголовок компонента (надпись на компоненте). Могут использоваться русские буквы;
Color – цвет фона для формы или компонента. Цвет можно задавать при помощи обозначений, например, зеленый – clGreen, или шестнадцатеричных констант (зеленый - $008000);
Enable – если это свойство равно True, то компонент реагирует на действия пользователя (сообщения до щелчка мыши и нажатия клавиатуры), иначе эти сообщения игнорируются;
Height – вертикальный размер в пикселях;
Hint – задает текст (подсказку), который будет отображаться при нахождении курсора в области компонента;
Left – горизонтальная координата левого верхнего угла компонента относительно формы в пикселях. Для формы это значение указывается относительно экрана дисплея;
Name – задает имя компонента (идентификатор), которое будет использоваться в программе;
ParentColor – если значение этого свойства равно True, то компонент будет отображаться цветом родительского компонента, иначе используется собственное свойство Color;
TabOrder – задает порядок получения компонентами на форме фокуса нажатия клавиши Tab. По умолчанию этот порядок определяется последовательностью размещения компонентов на форме. Для изменения этого порядка необходимо явно изменить значения свойства TabOrder компонентов. Следует отметить, что компонент, значение TabOrder которого равно 0, получает фокус при отображении формы. Использование свойства TabOrder зависит от значения свойства TabStop;
TabStop – это свойство позволяет указать, может ли компонент получать фокус или нет;
Техт– текст, находящийся в поле ввода и редактирования;
Top – вертикальная координата левого верхнего угла интерфейсного элемента относительно формы;
Transparent – при значении свойства Trueфон метки будет прозрачным по отношению к другим компонентам;
Visible – определяет видимость компонента;
Width – горизонтальный размер интерфейсного элемента или формы в пикселях;
WordWrap – при значении Trueпосле заполнения текущей строки происходит перенос текста на новую строку. По умолчанию имеет значение False.
Помимо свойств компоненты содержат методы – программный код, обрабатывающий значение свойств (например, устанавливающий переключатель в нужное положение), а также события – сообщения, которые компонент принимает от приложения, если во время работы программы выполняется определенное действие (например, щелчок мыши на компоненте). Программист может самостоятельно формировать реакции программ на любые события каждого компонента.
Создание обработчика событий
Командные кнопки на форме предназначены для активизации программ решения определенных задач. Для того, чтобы получить в окне формы результат выполнения программы при активизации командной кнопки в результате щелчка левой клавиши мыши (ЛКМ) необходимо написать соответствующий обработчик событий и включить его в модуль, созданный в окне кода, в разделе implementation.
Обработчик событий представляет собой подпрограмму, которая выполняет определенные действия, по решению конкретной задачи и активизируется при щелчке на командной кнопке, расположенной на форме. Эти программы программист пишет на языке Object Pascal, представляющий собой либо Procedure (Процедура), либо Function (Функция). Структура процедуры и функции рассмотрены в учебной литературе [1,2,3,4], приведенной ниже. Обработчики событий, оформленные в виде процедуры и функции, вставляются в модуль программного приложения в окне кода в разделе implementationпосле директивы компилятора {SR*.DFM}.
Для большинства компонент Delphi имеются события, обработчики которых можно подготовить, используя страницу EventsИнспектора объектов. На ней указаны все события, на которые может реагировать выбранный объект. Каждому событию присвоено имя. Например, щелчок кнопки мыши – это событие OnClick, которое для командной кнопки является событием по умолчанию.
Надпись на командной кнопке по умолчанию – Button, можно заменить в процессе создания формы конкретного приложения. Целесообразно заменять надписи на кнопке текстом, соответствующим назначению обработчика событий. Например, если надо вычислить сумму чисел, введенных в поля Edit и за кнопкой Button закрепить действия по сложению чисел, то подходящей надписью на кнопке будет название «Сложить».
Для создания обработчика событий необходимо, чтобы система Delphi создала шаблон в окне редактора кода. Получить окно кода с шаблоном обработчика событий можно, выполнив щелчок ЛКМ на командной кнопке в окне формы, или в инспекторе объектов активизировать страницу Event, выбрать строку с именем события OnClick и в правой части строки выполнить двойной щелчок ЛКМ. Шаблон обработчика событий представлен на рис. 2.
Procedure TForm1.Button1Click ( Sender: TObject) : begin end; |
Рис. 2. Шаблон обработчика событий.
В шаблон обработчика событий программист вставляет строки кода на языке Object Pascal, реализующего алгоритм решения задачи обработки данных.
В Delphi имеется несколько компонентов, позволяющих с помощью клавиатуры вводить в программу и редактировать разнообразную символьную информацию. Все они обладают такими возможностями, как выделение, копирование, удаление, вставка фрагментов, скроллинг текста, в том случае, когда он не умещается в окне.
Из набора редакторов в первую очередь наибольшее использование имеет однострочный редактор ввода символов класса TEdit и многострочный редактор текста класса TMemo. Редактор кода выделает ключевые слова языка Object Pascal полужирным шрифтом, что облегчает восприятие программ. Помимо ключевых слов редактор кода выделяет, синим курсивом текст комментариев заключенных в фигурные скобки { }, или начало комментария отмечается символом //, за которым пишется текст комментария, расположенный одной в строке.
Для всех объектов в обработчике событий должен быть определен тип. Тип в простейшем случае определяет вид конкретно представляемой в памяти информации, например, переменных, констант. Хорошо выбранные типы делают программу более четкой и короткой. Таким образом, каждое имя в программе имеет ассоциированный с ней тип. Этот тип определяет:
- структуру программного элемента, то есть ту или иную интерпретацию памяти;
- множество допустимых значений;
- совокупность допустимых операций с ним.
Задание типа тому или иному элементу в программе необходимо для того, чтобы компилятор мог выделить соответствующую память и установить механизм доступа к самому программному элементу.
Для простейших приложений обычно используются простые типы.Простой типопределяет множество значений программного элемента, структура которого представляет собой единственную величину. Простые типы (как и другие типы) часто используются в программе для задания переменных и констант. Переменнаяесть программный элемент, который может в программе принимать различные значения, в отличие от констант,которые в программе сохраняют постоянные значения. Имеются следующие группы простых типов:
• целый;
• логический ;
• символьный;
• перечислимый;
• интервальный (диапазон);
• вещественный;
• дата-время.
Среди простых типов перечень и интервальный тип определяются программистом, а остальные встроенные. Первые пять типов образуют группу так называемых порядковых типов.
Порядковый тип характеризуется важной отличительной особенностью. Каждое значение порядкового типа (основное) имеет ассоциированное с ним другое значение, представляющее собой порядковый номер: для первого значения - 0, для второго - 1 и т.д. Порядковый номер целого значения равен самому значению. Для порядковых типов существуют встроенные стандартные операции выполнения некоторых действий (табл. 1).
Таблица 1.