Uploaded by reretiv

1 Введение в Delphi

advertisement
Разработка
кроссплатформенных
приложений
1 Введение в Delphi
2 Язык программирования Delphi
3 Использование визуальных компонентов
4 Форма — главный компонент приложения
5 Меню, панели инструментов и
механизм действий
6 Развитые средства Delphi
7 Организация приложений
8 Работа с графикой и мультимедиа
9 Работа с файлами и каталогами
10 Библиотеки, пакеты и компоненты
Старший преподаватель кафедры МПУИ
Ганжур Анастасия Александровна
1 Введение в Delphi XE
1.1 Обзор RAD Studio 10.4
1.2 Процесс разработки программы с помощью Delphi
1.3 Откладка программы в среде RAD Studio
2
Среда разработки Delphi является одним из
популярнейших
инструментов
разработки
прикладных программ. Она поддерживает так
называемую быструю разработку, основанную на
технологии визуального проектирования и
событийного программирования.
Delphi – это среда быстрой разработки
приложений (RAD-среда, от Rapid Application
Development
–
быстрая
разработка
приложений) на языке Delphi, в основе
которого лежит хорошо знакомый многим
программистам язык Pascal.
3
1.1 Обзор RAD Studio 10.4
Среду разработки RAD Studio 10.4 можно скачать по QR-коду:
https://nnmclub.to/
https://rutracker.org/
4
Меню
Используемые
компоненты
Инспектор
объектов
События
(Events)
Свойства
Объектов
(Properties)
Менеджер
проекта
Форма
Редактор кода
Палитра
компонент
5
Object Inspector (Инспектор объектов)
Вкладка
Properties
этого
окна
используется
для
редактирования
значений свойств объектов. Свойства
определяют вид объекта, его положение и
поведение.
Например, свойство Caption формы
определяет текст, который отображается в
ее заголовке, а свойства Width и Height –
ее размеры (ширину и высоту). Справа от
названия свойств указаны их значения.
Свойства по функциональному признаку
объединены в группы (названия групп
6
выделены цветом).
Palette (Палитра компонентов )
На вкладках палитра компонентов
(окно Palette) находятся компоненты.
Компонент
–
это
элемент
пользовательского интерфейса или объект,
реализующий
некоторую
функциональность.
Например,
на
вкладке
Standard
находятся компоненты, обеспечивающие
взаимодействие с пользователем (Label –
поле отображения текста; Edit – поле
редактирования; Button – командная
кнопка и др.), а на вкладке dbGo —
7
компоненты доступа к базам данных
Project Manager (Менеджер проекта)
В окне Project Manager отображается
структура проекта, над которым в данный
момент идет работа.
Если какое-либо из перечисленных окон
на экране не отображается, то для того
чтобы его увидеть, надо в меню View
выбрать соответствующую команду.
8
1.2 Процесс разработки программы с
помощью Delphi
Разработаем программу для вычисления суммы двух чисел
Начало работы:
1) В меню File выбрать команду New → VCL Forms
Application – Delphi.
2) Форма. Работа над приложением начинается с создания
стартовой формы – главного окна программы.
9
Основные свойства формы (объекта TForm)
Свойство
Name
Caption
Width
Height
Position
Назначение
Имя (идентификатор) формы. Используется для доступа к
форме, ее свойствам и методам, а также для доступа к
компонентам формы
Текст заголовка
Ширина формы
Высота формы
Положение окна в момент первого его появления на экране
(poCenterScreen – в центре экрана;
poOwnerFormCenter – в центре родительского окна;
poDesigned – положение окна определяют значения свойств
Top и Left)
10
Основные свойства формы (объекта TForm)
Свойство
Top
Left
BorderStyle
Назначение
Расстояние от верхней границы формы до верхней границы
экрана
Расстояние от левой границы формы до левой границы
экрана
Вид границы. Граница может быть обычной (bsSizeable),
тонкой (bsSingle) или вообще отсутствовать (bsNone).
Если у окна обычная граница, то во время работы
программы пользователь может с помощью мыши изменить
размер окна. Изменить размер окна с тонкой границей
нельзя.
Если граница отсутствует, то на экран во время работы
программы будет выведено окно без заголовка. Положение
и размер такого окна во время работы программы изменить
11
нельзя
Основные свойства формы (объекта TForm)
Свойство
BorderIcons
Icon
Назначение
Кнопки управления окном. Значение свойства определяет,
какие кнопки управления окном будут доступны
пользователю во время работы программы. Значение
свойства задается путем присвоения значений уточняющим
свойствам biSystemMenu, biMinimaze, biMaximaze и biHelp.
Свойство biSystemMenu определяет доступность кнопки
системного меню (значок в заголовке окна),
biMinimaze – кнопки Свернуть,
biMaximaze – кнопки Развернуть,
biHelp – кнопки вывода справочной информации
Значок в заголовке диалогового окна, обозначающий кнопку
вывода системного меню
12
Основные свойства формы (объекта TForm)
Свойство
Color
Font
Назначение
Цвет фона. Цвет можно задать, указав название цвета или
привязку к текущей цветовой схеме операционной системы.
Во втором случае цвет определяется текущей цветовой
схемой, выбранным компонентом привязки и меняется при
изменении цветовой схемы операционной системы
Шрифт. Шрифт, используемый по умолчанию компонентами,
находящимися на поверхности формы. Изменение свойства
Font формы приводит к автоматическому изменению
свойства
Font
компонента,
располагающегося
на
поверхности формы. То есть компоненты наследуют свойство
Font от формы (имеется возможность запретить
наследование)
13
14
3) Добавление компонент TEdit
Поля редактирования, поля отображения текста,
командные кнопки, списки, переключатели и другие
элементы, обеспечивающие взаимодействие программы с
пользователем,
называют
компонентами
пользовательского интерфейса.
Компоненты, которые программист может использовать
в процессе разработки программы, находятся в палитре
компонентов (Palette). На вкладках Standard, Additional и
Win32 находятся часто используемые компоненты
пользовательского интерфейса.
15
Основные свойства компонента TEdit
Свойство
Name
Text
Left
Top
Назначение
Имя компонента. Используется для доступа к компоненту и
его свойствам
Текст, который находится в поле редактирования
Расстояние от левой границы компонента до левой границы
формы
Расстояние от верхней границы компонента до верхней
границы формы
Height
Высота компонента
Width
Ширина компонента
16
Основные свойства компонента TEdit
Свойство
Font
ParentFont
MaxLength
TabOrder
Назначение
Шрифт, используемый для отображения текста в поле
компонента
Признак наследования шрифта от формы. Если значение
свойства равно True, то для отображения текста в поле
компонента используется шрифт формы
Количество символов, которое можно ввести в поле
редактирования. Если значение свойства равно нулю,
ограничения на количество символов нет
Определяет порядок перемещения фокуса (курсора) с одного
элемента управления на другой в результате нажатия
клавиши <Tab>
17
18
4) Добавление компонент Tlabel
Отображение
текста
на
обеспечивает компонент TLabel.
поверхности
формы
19
Основные свойства компонента TLabel
Свойство
Name
Caption
Font
ParentFont
AutoSize
Left
Top
Назначение
Имя компонента. Используется для доступа к компоненту
Отображаемый текст
Шрифт, используемый для отображения текста
Признак наследования характеристик шрифта от объекта
(формы), на котором компонент находится
Признак автоматического изменения размера компонента
при изменении текста, отображаемого в поле компонента
Расстояние от левой границы поля вывода до левой границы
формы
Расстояние от верхней границы поля вывода до верхней
границы формы
20
Основные свойства компонента TLabel
Свойство
Height
Width
WordWrap
Назначение
Высота поля вывода
Ширина поля вывода
Признак того, что слова, которые не помещаются в текущей
строке, автоматически переносятся на следующую строку
(значение свойства AutoSize должно быть False)
21
22
5) Добавление кнопок TButton
23
Основные свойства компонента TButton
Свойство
Name
Caption
Enabled
Left
Top
Height
Width
TabOrder
Назначение
Имя компонента. Используется для доступа к компоненту и
его свойствам
Текст на кнопке
Признак доступности кнопки. Кнопка доступна (программа
реагирует на ее нажатие), если значение свойства равно True,
и не доступна, если значение свойства равно False
Расстояние от левой границы кнопки до левой границы
формы
Расстояние от верхней границы кнопки до верхней границы
формы
Высота кнопки
Ширина кнопки
Определяет порядок перемещения фокуса (курсора) с одного
24
элемента управления на другой (<Tab>)
25
Завершив работу по созданию формы, можно приступить
к программированию – созданию процедур обработки
событий.
6) События
Событие (Event) – это то, что происходит во время
работы программы. У каждого события есть имя.
Например, щелчок кнопкой мыши – это событие Click,
двойной щелчок мышью – событие DblClick.
Следует понимать, что одни и те же действия, но
выполненные над разными объектами, вызывают разные
события.
26
Некоторые события, возникающие в
результате действий пользователя
Свойство
Click
DblClick
MouseDown
MouseUp
MouseMove
KeyPress
KeyDown
Назначение
Щелчок кнопкой мыши
Двойной щелчок кнопкой мыши
Нажатие кнопки мыши
Отпускание нажатой кнопки мыши
Перемещение указателя мыши
Нажатие клавиши клавиатуры
Нажатие клавиши клавиатуры. События KeyDown и KeyPress –
это чередующиеся, повторяющиеся события, которые
происходят до тех пор, пока не будет отпущена удерживаемая
клавиша (в этот момент происходит событие KeyUp)
27
Некоторые события, возникающие в
результате действий пользователя
Свойство
KeyUp
Create
Paint
Enter
Exit
Назначение
Отпускание нажатой клавиши клавиатуры
Создание объекта (формы, элемента управления). Процедура
обработки этого события обычно используется для
инициализации переменных, выполнения подготовительных
действий
Событие происходит при появлении окна на экране в начале
работы программы, после появления части окна, которая,
например, была закрыта другим окном
Получение элементом управления фокуса
Потеря элементом управления фокуса
28
Процедура обработки события
В Delphi реакция на событие реализуется как процедура
обработки события. Таким образом, для того чтобы
программа выполняла некоторую работу в ответ на
действия пользователя, программист должен написать
процедуру обработки соответствующего события.
Чтобы приступить к созданию процедуры обработки
события необходимо:
1. Выбрать компонент, для которого создается процедура
обработки события;
2. В окне Object Inspector нужно открыть вкладку Events;
3. Выбрать нужное событие (сделать щелчок мышью на его
29
имени).
30
31
32
33
34
Структура проекта
Проект представляет собой совокупность
файлов,
которые
используются
компилятором
для
генерации
выполняемого файла.
Основа проекта - файл главного модуля
(dpr-файл) и один или несколько модулей
(для каждой формы Delphi создает
отдельный модуль — pas-файл).
Помимо файла проекта и модулей в процессе компиляции
используются: файл ресурсов (res-файл), файлы описания
форм (отдельный dfm-файл для каждой формы), а также файл
конфигурации (cfg-файл).
Общая информация о проекте хранится в dproj-файле. 35
Главный модуль
Главный модуль
Интерфейс
Реализация
interface
implementation
Инициализация
36
Имя модуля
Интерфейс:
объявления класса
TForm1 и объекта
Form1
Подключение модулей
37
Реализация
Описание методов
класса
38
Компиляция
Процесс преобразования исходной программы в
выполняемую называется компиляцией и состоит из двух
этапов: непосредственно компиляции и компоновки.
На этапе компиляции выполняется перевод исходной
программы
(модулей)
в
некоторое
внутреннее
представление.
На этапе компоновки выполняется сборка (построение)
программы.
Project → Compile или
команда Run → Run / Run Without Debugging)
39
Обработка исключения
Обработку исключений берет на себя автоматически
добавляемый в выполняемую программу код, который
обеспечивает вывод сообщения об ошибке и завершение
процедуры, при выполнении которой возникло исключение.
try
// здесь инструкции, при выполнении
// которых может произойти исключение
except
on Исключение do
begin
// здесь инструкции обработки исключения
end;
end;
40
Типичные исключения
Тип исключения
EConvertError
EZeroDivide
EFOpenError
Возникает
При выполнении преобразования строки в число, если
преобразуемая величина не может быть приведена к
требуемому виду. Чаще всего возникает при преобразовании
строки в дробное число, если в качестве разделителя целой и
дробной частей указан неверный символ
Деление на ноль. При выполнении операции деления, если
делитель равен нулю (если и делитель, и делимое равны
нулю, то возникает исключение EInvalidOp)
При обращении к файлу, например при попытке загрузить
файл иллюстрации с помощью метода LoadFromFile.
Наиболее частой причиной является отсутствие требуемого
файла или, в случае использования сменного диска,
отсутствие диска в накопителе
41
Типичные исключения
Тип исключения
EInOutError
EOLEException
Возникает
При обращении к файлу, например при попытке открыть для
чтения несуществующий файл
При выполнении операций с базой данных, например при
попытке открыть несуществующую базу данных, если для
доступа к базе данных используются ADO-компоненты (чтобы
иметь возможность обработки этого исключения, в директиву
uses надо добавить ссылку на модуль ComObj)
42
Вывод сообщения о неверных данных
(функция MessageDlg)
r := MessageDlg(Сообщение, Тип,
Кнопки, РазделСправки)
где:
o Сообщение – текст сообщения;
o Тип
–
тип
сообщения.
Сообщение
может
быть
информационным (mtInformation), предупреждающим (mtWarning)
или сообщением об ошибке (mtError).
o Кнопки – список кнопок, отображаемых в окне сообщения;
o РазделСправки — идентификатор раздела справочной
информации, который появится на экране, если пользователь нажмет
клавишу <F1>. Если вывод справки не предусмотрен, то в качестве
43
параметра следует указать ноль.
Тип сообщения (функция MessageDld)
Сообщение
Тип сообщения
Warning
(Внимание)
mtWarning
Error
(Ошибка)
mtError
Information
(Информация)
mtInformation
Confirmation
(Подтверждение)
mtConfirmation
Значок
44
Идентификаторы кнопок
(функция MessageDld)
Идентификатор
mbYes
mbNo
mbOK
mbCancel
mbHelp
Кнопка
Yes
No
OK
Cancel
Help
45
Значения функции MessageDlg
(функция MessageDld)
Значение
mrYes
mrNo
mrOK
mrCancel
Диалог завершен нажатием
кнопки
Yes
No
OK
Cancel
Для вывода сообщения вместо функции MessageDlg
можно использовать процедуру ShowMessage. Эта
процедура выводит окно с сообщением и кнопкой OK.
ShowMessage('Надо ввести данные в оба поля').
46
47
48
1.3 Откладка программы в среде Delphi
Компилятор генерирует выполняемую программу (exeфайл) только в том случае, если в исходной программе нет
синтаксических ошибок. Если в программе есть ошибки, то
программист должен их устранить.
Процесс устранения ошибок носит итерационный
характер. Обычно сначала устраняются наиболее
очевидные
ошибки,
например
объявляются
необъявленные переменные. После очередного внесения
изменений в текст программы выполняется повторная
компиляция.
49
Сообщения компилятора об ошибках
Сообщение
Вероятная причина
Undeclared identifier
Используется переменная, не объявленная в разделе var.
(Необъявленный идентификатор) Ошибка при записи имени переменной.
Unterminated string
(Незавершенная строка)
Incompatible types
(Несовместимые типы)
При записи строковой константы, например сообщения, не
поставлена завершающая кавычка
В инструкции присваивания тип выражения не соответствует
или не может быть приведен к типу переменной,
получающей значение выражения.
Тип фактического параметра процедуры или функции не
соответствует или не может быть приведен к типу
формального параметра
Missing operator
or semicolon
После инструкции не поставлена точка с запятой
(Отсутствует оператор или ;)
Could not create output file
Программа, над которой идет работа, запущена.
(Невозможно создать exe-файл)
50
Предупреждения и подсказки
При обнаружении в программе неточностей, которые не
являются ошибками, компилятор выводит подсказки (Hints) и
предупреждения (Warnings).
Например, часто выводимой подсказкой является сообщение об
объявленной, но не используемой переменной:
Variable ... is declared but never used in ...
Сообщение
Причина
Variable... is declared but never used
Переменная объявлена, но не используется
in ...
Variable ... might not have been
initialized.
В программе нет инструкции, которая
(Вероятно, используется
присваивает переменной начальное значение
неинициализированная переменная)
51
Отладка программ
Процесс
выявления
причин
обнаруженной
ошибки,
определение места (локализация) ошибки в программе и
исправление ошибочно реализованного программного кода
обычно называется отладкой.
Если при инспекции кода выявить ошибки не удается, далее
наступает основной способ отладки – отладочное выполнение
программы (или трассировка), в ходе которого работа программы
может быть приостановлена для просмотра значений тех или
иных переменных программы с целью обнаружения ситуаций,
когда эти значения не соответствуют предполагаемых.
Тем
самым,
задача
трассировки
–
обнаружение
информационных признаков проявления ошибки.
52
Для определения неявных ошибок, связанных с логикой
построения
алгоритма
и
программы,
приводящих
к
недопустимым результатам вычислений, в Delphi реализован
удобный механизм отладки – встроенный отладчик (Debugger),
контролирующий ход выполнения программы.
Он выполняет трассировку программы без ее изменений с
помощью следующих действий:
1) остановки выполнения программы в указанной точке;
2) выполнения программы построчно (по шагам);
3) перезапуска программы без ее завершения;
4) получения, назначения и изменения значений любых
переменных и параметров программы.
53
Задание точек останова. Во время запуска программы ее
инструкции выполняются последовательно от начала до конца со
скоростью работы компьютера.
Удобным средством, позволяющим прервать работу
программы в нужном месте, является использование точек
останова (breakpoints).
Точка останова определяет оператор в программе, перед
выполнением которого работа программы будет прервана и
управление будет передано среде Delphi.
Debug → Toggle Breakpoint
(аналогично нажатию клавиши <F5>)
54
Более широкие возможности определения точки останова
можно задать в диалоговом окне Add Source Breakpoint, которое
вызывается командой меню
Run → Add Breakpoint → Source Breakpoint.
56
Назначение полей диалогового окна Add Source Breakpoint:
o Filename - отображает имя файла программы, куда
добавляется точка останова;
o Line number содержит номер строки программы, в которую
добавляется точка останова;
o в поле Condition вводится условие, при выполнении которого
программа приостановит свою работу в данной точке (например,
если значение переменной равно некоторой величине);
o в поле Pass count вводится число пропусков задаваемой
точки останова. Если в это поле ввести число, отличное от нуля, то
программа приостановит свою работу в этой точке только после
того, как инструкция, содержащаяся в строке с точкой останова,
будет выполнена указанное число раз.
После щелчка на кнопке ОК точка останова будет добавлена в
57
программу, а строка ее содержащая выделится цветом.
Для изменения характеристики точки останова надо
воспользоваться опцией меню
View → Debug Windows → Breakpoints,
и в появившемся диалоговом окне Breakpoint List из
контекстного меню строки, содержащей точку останова, выбрать
команду Properties. В появившемся диалоговом окне Add Source
Breakpoint нужно внести необходимые изменения.
58
Пошаговое выполнение программ
Для выполнения программы в пошаговом режиме (режиме
трассировки) используются команды, доступные из меню Run и
панели инструментов Debug.
59
o Команда Step Over (<F8>)
обеспечивает пошаговое
выполнение программы, но при этом вызов подпрограмм
рассматривается как один неделимый шаг (т.е. без перехода внутрь
подпрограмм).
o Команда Trace Info (<F7>)
обеспечивает пошаговое
выполнение программного кода программы, включая содержимое
вызываемых подпрограмм (т.е. с переходом внутрь подпрограмм).
o Команда Trace to Next Source Line (<Shift>+<F7>)
пошагово
выполняет программу до следующей строки исходного текста с
заходом в подпрограммы.
o Команда Run to Cursor (<F4>)
обеспечивает выполнение без
останова программного кода между текущей строкой останова до
60
строки, в которой находится курсор.
Принудительное прерывание работы
программы
Если программа запущена из среды Delphi, ее работу можно
прервать в любой момент с помощью команды меню
Run → Program Reset или комбинацией клавиш <Ctrl>+<F2>.
61
Наблюдение за значениями переменных
Для наблюдения значений переменных в момент останова
выполнения программы достаточно расположить указатель мыши
на имени переменной – в результате значение переменной
появится в виде всплывающей подсказки.
62
Дополнительная возможность для наблюдения значений
переменных состоит в использовании специального окна Watch
List, которое используется в отладочном режиме для наблюдения
за изменением значений переменных, помещенных в это окно.
Окно наблюдения Watch List вызывается командой главного
меню View → Debug Windows → Watches. Состав отображаемых в
этом окне переменных может формироваться непосредственно
программистом.
Для добавления переменной в окно для наблюдения нужно из
контекстного меню окна Watch List выбрать команду Add Watch…,
после чего Delphi выведет диалоговое окно Watch Properties, в
котором можно задать имя переменной или записать нужное
выражение в поле Expression.
63
64
Поле Repeat count определяет количество показываемых
элементов массивов данных, поле Digits – количество значащих
цифр для отображения вещественных данных, переключатель
Enabled – разрешает/запрещает отображение значения
переменной (вычисление выражения). Остальные элементы
определяют вид представления значения.
После нажатия на кнопку ОК переменная (выражение) будет
добавлена в окно наблюдения Watch List. Так как переменные
программы существуют только во время ее выполнения, то после
имени переменной выводится сообщение «process not accessible»
(процесс недоступен).
Для удаления переменной (выражения) из окна наблюдения
достаточно выделить строку, содержащую соответствующую
переменную (выражение), и нажать клавишу <Delete>.
65
Download