- •Основы программирования
- •Введение
- •Основы delphi
- •Общая технология программирования
- •Язык программирования
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •Событийно управляемое программирование
- •Windows-приложение
- •Среда программирования
- •Первоначальные сведения о проекте приложения
- •Встроенный отладчик
- •Использование встроенных классов
- •Иерархия классов
- •Использование палитры компонентов и инспектора объектов
- •Использование графики
- •Основные инструменты
- •Основные характеристики шрифтов
- •Графические данные и палитра
- •Некоторые общие свойства компонентов
- •Сохранение проекта
- •Построение простейшего проекта
- •Понятие исключительной ситуации
- •Введение в object pascal
- •Структура приложения
- •Структура программы-проекта
- •Структура модуля
- •Пример 1
- •Описания программных элементов
- •Программные элементы и адреса памяти
- •Области видимости
- •Правила записи имен
- •Время жизни идентификаторов
- •Использование локальных переменных в примере 1
- •Использование глобальных переменных в примере 1
- •Простые типы
- •Целые типы
- •Целые типы
- •Некоторые операции с целым типом
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Интервальный тип
- •Вещественный тип
- •Вещественные типы
- •Некоторые операции с вещественным типом
- •Тип дата-время
- •Выражения
- •Константы
- •Типизированные константы.
- •Переменные
- •Операции
- •Унарная операция not (отрицание)
- •Логические операции and, or, xor
- •Функции
- •Порядок вычисления выражений
- •Виды операторов
- •Простые операторы
- •Составной оператор
- •Операторы условного перехода
- •Оператор if
- •Пример 2
- •Оператор case
- •Пример 3
- •Использование enter в примере 3
- •Операторы цикла
- •Оператор цикла for
- •Пример 4
- •Оператор цикла while
- •Пример 5
- •Оператор цикла repeat
- •Пример 6
- •Использование процедур break и continue
- •Пример 7
- •Массивы
- •Статические массивы
- •Динамические массивы
- •Пример 8
- •Пример 9
- •Записи (объединения)
- •Оператор with
- •Пример 10
- •Совместимость и преобразование типов данных
- •Идентичность типов
- •Совместимость типов
- •Совместимость по присваиванию
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Пример 11
- •Множества
- •Операции над множествами
- •Пример 12
- •Вариантный тип данных
- •Процедуры и функции
- •Процедура
- •Функция
- •Рекурсия
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры без типа
- •Массивы открытого типа
- •Парамеры по умолчанию
- •Процедура exit
- •Директивы подпрограммы
- •Соглашения по передаче данных
- •Директива forward
- •Директива external
- •Директива assembler
- •Перегруженные подпрограммы
- •Пример 13
- •Инкапсуляция
- •Класс как объектный тип
- •Наследование
- •Области видимости
- •Операции is и as
- •Виды методов
- •Методы virtual и полиморфизм
- •Методы dynamic
- •Методы message
- •Методы abstract
- •Методы override
- •Методы class
- •Пример 14
- •Динамическое создание компонентов
- •Использование класса со счетчиком объектов
- •Отслеживание разрушения объектов
- •События
- •Указатели на методы
- •Пример 15
- •Типы ссылки на класс
- •Свойства
- •Свойства simple
- •Свойства enumerated
- •Свойства set
- •Свойства object
- •Свойства array
- •Задание начальных значений свойствам
- •Пример 16
- •Файловые типы
- •Текстовые файлы
- •Типизированные файлы
- •Файлы без типа
- •Дополнительные процедуры и функции
- •Пример 17
- •Компонент tmainmenu
- •Указатели
- •Пример 18
- •Динамические структуры данных
- •Однонаправленные списки
- •Двунаправленные списки
- •Стеки, очереди
- •Бинарные деревья
- •Пример 19
- •Процедурный тип
- •Программные единицы dll
- •Пример 20
- •Технологии программирования
- •Потоки данных
- •Пример 21
- •Пример 22
- •Интерфейс drag and drop
- •Пример 23
- •Технология drag and dock
- •Пример 24
- •Использование функций windows api при работе с файлами
- •Пример 25
- •Использование отображаемых файлов
- •Пример 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Пример 27
- •Использование блокировки в примере 27
- •Многопоточное приложение в примере 28
- •Проблемы синхронизации потоков
- •Список используемых в примерах компонентов
- •Список используемых компонентов и других классов
- •Библиографический список
- •Оглавление
Встроенный отладчик
Интегрированная среда разработки включает встроенный отладчик приложений, в значительной мере облегчающий поиск и устранение ошибок. Средства отладчика доступны через команды пункта меню View/Debug Windows (просмотр/окна отладки). Простейшим вариантом отладки является использование клавиши пошагового выполнения программы F7 и просмотр значений переменных в окне Watch (пункты меню Run: Trace Into и Add Watch). Если требуется отладка, начиная с конкретного оператора, то устанавливают для него Breakpoint (в пункте Run). До точки останова можно пройти, используя F4, а далее, применяя, например, F7.
Использование встроенных классов
На первых порах разработчика программ интересуют не все классы, а компоненты. Компоненты – неотъемлемая часть прикладной программы. Они формируют основу интерфейса пользователя. Компоненты для разработки интерфейса и системные компоненты соответственно называются визуальными и невизуальными. Невизуальные компоненты используются для реализации логической части приложения и функциональных возможностей системной составляющей (рис. 1). Визуальные компоненты входят в палитру компонентов и позволяют строить пользовательский интерфейс приложения.
Иерархия классов
Delphi имеет большое количество встроенных классов, которые образуют иерархическое дерево (рис. 8, слева).
Рис. 8. Фрагмент иерархии классов.
Каждый класс обязательно является наследником другого класса, за исключением TObject. TObject является предком для всех классов. Предком для всех компонентов является класс TComponent. Иерархию и отдельные элементы классов можно увидеть с помощью Browse Objects (рис. 8), окно которого вызывается из меню: View–Browse.
Каждый класс обладает набором своих методов, свойств, и полей, да еще наследует массу подобных элементов. Поэтому ориентироваться во всех возможностях класса очень трудно. Помогает то обстоятельство, что многие свойства и методы имеют много общего и называются одинаково.Базовые встроенные классы следует рассматривать как некую библиотеку функций и возможностей, которые к тому же можно наследовать при разработке собственных классов. Рассмотрим кратко назначение некоторых основных компонентов в иерархии классов.
Класс TObject реализует функции, которые обязательно будут выполняться в процессе построения любого объекта. Следует отметить, что круг общих для всех классов операций невелик. В первую очередь – это создание экземпляра класса и его уничтожение. Эти операции, например, для размещенных на форме объектов выполняются автоматически. Рассмотрим еще одну функцию данного класса. Каждый объект должен содержать некоторую информацию о себе, которая используетсяприложением и средой разработки. Класс TObject содержит ряд методов, обеспечивающих представление этой информации в потомках.
Основное назначение класса TPersistent (в переводе означает: устойчивый, постоянный) заключается в возможности выполнения операции копирования содержимого одного объекта (Source) в другой (Self). Self - специальная переменная в объекте-приемнике. При этом используется метод Assign – простым присваиванием содержимое не копируется, а замещается с уничтожением внутренней структуры объекта-приемника.
Класс TComponent используется в качестве основы для создания невизуальных компонентов и реализует основные механизмы, которые обеспечивают функционирование любого компонента.
Вслед за классом TComponent в иерархии классов (рис. 8) располагаетсягруппа из трех классов, которые обеспечивают создание различных визуальных компонентов. Визуальные компоненты – это разнообразные стандартные для Windows и специальные элементы управления.
Понятно, что визуальные компоненты должны уметь отобразить себя на экране монитора и реагировать на целый ряд новых событий – реакция на мышь, клавиатуру, движение курсора и т.д. Для этого в них встроен специальный механизм, обеспечивающий взаимодействие компонентов с графической подсистемой операционной среды (GUI).
Базовым для всех визуальных компонентов является класс TControl, который инкапсулирует механизмы отображения компонентов на экране. В этом классе вводится множество новых свойств и методов. Для определения местоположения и размеров визуального компонента введены два свойства, с помощью которых задаются координаты левого верхнего угла: Top (верхний) и Left (левый), - а также два свойства, задающие размеры клиентской области: Height (высота) и Width (ширина). Значения свойств задаются в пикселах. Для определения местоположения компонента используется система координат рабочей области владельца (Owner – владелец) данного компонента, например, формы. Имеется и ряд других свойств, определенных в компоненте TControl.
Далее в иерархии классов стоит очень важный визуальный компонент TWinControl, который обеспечивает использование в Delphi оконных элементов управления. Главное отличие оконного элемента управления от других элементов – наличие дескриптора окна hWnd. Дескриптор окна – это специальный идентификатор, присваиваемый операционной системой всем объектам, которые должны обладать свойствами окна. Если элемент управления имеет дескриптор окна, то он должен уметь выполнять следующие операции:
получать и передавать фокус управления во время выполнения приложения:
воспринимать управляющие воздействия от мыши и клавиатуры:
уметь размещать на себе другие элементы управления.
