- •Оглавление
- •Часть 1. Краткое описание Delphi 8
- •Часть 2. Технология ado для баз данных access 186
- •9.1. Общие сведения 289
- •Введение
- •Часть 1. Краткое описание Delphi
- •1. Работа со средой delphi
- •1.1. Ознакомление с delphi
- •1.2. Вкладка дизайнера формы (design)
- •1.3. Вкладка редактора кода программы
- •1.4. Окно object inspector
- •1.5. Окно project manager
- •1.6. Окно палитры инструментов
- •1.7. Создание первого проекта приложения
- •1.8. Сохранение проекта
- •1.8. Сохранение проекта
- •1.9. Компиляция
- •2. Основа языка delphi
- •2.1. Основные понятия языка
- •2.1.1. Элементы языка
- •2.1.2. Пример простой программы
- •2.1.3. Типы данных
- •2.1.4. Операции и выражения
- •2.1.5. Стандартные функции
- •2.1.6. Ввод и вывод на дисплей
- •2.1.7. Оператор присваивания
- •2.2. Операторы языка паскаль
- •2.2.1. Составной оператор
- •2.2.2. Условный оператор
- •2.2.3. Сложные условия
- •2.2.4. Оператор выбора case
- •2.2.5. Оператор цикла for
- •2.2.6. Оператор цикла while
- •2.2.7. Оператор цикла repeat
- •2.2.8. Вложенные циклы
- •2.2.9. Прочие операторы
- •2.3. Общая структура программы
- •2.3.1. Перечень разделов программы
- •2.4. Массивы
- •2.4.1. Одномерные массивы
- •2.4.2. Сортировка массивов и поиск элемента в массиве
- •2.4.3. Многомерные массивы
- •2.5. Функции и процедуры
- •2.5.1. Описание функций
- •2.5.2. Обращение к функции
- •2.5.3. Процедуры
- •2.5.4. Параметры-значения и параметры-переменные
- •2.5.5. Локальные и глобальные переменные
- •2.5.6. Pекурсия
- •2.6. Строки символов
- •2.6.1. Задание строк
- •Var имя: string[длина];
- •2.6.2. Функции и процедуры для обработки строк
- •2.7. Порядковые типы данных
- •2.7.1. Перечисляемый тип данных
- •2.7.2. Интервальный тип данных
- •2.7.3. Порядковые типы данных
- •2.7.4. Дополнение:тип данных tDateTime (дата-время)
- •2.8. Множества
- •2.8.1. Значения типа множество
- •2.8.2. Операции на множествах
- •2.9. Записи
- •2.9.1. Поля записи
- •2.9.2. Оператор with
- •2.9.3. Последовательный поиск в массиве записей
- •2.9.4. Двоичный поиск в массиве записей
- •2.10. Файлы
- •2.10.1. Основные свойства файлов
- •2.10.2. Типизированные файлы
- •2.10.3. Текстовые файлы
- •2.10.4. Поиск файлов
- •2.11. Динамическая память
- •2.11.1. Динамические переменные и указатели
- •2.11.2. Динамические списки
- •2.11.3. Деревья
- •2.12. Программные модули
- •2.12.1. Модули, формируемые пользователем
- •2.12.2. Стандартные модули
- •2.12.3. Примеры программ
- •3. Главная форма
- •3.1. Свойства главной формы
- •3.2. События главной формы
- •4. Описание некоторых компонентов
- •4.1. Компонент tpanel (панели)
- •4.2. Компонент tbutton (кнопка)
- •4.3. Дополнительные кнопки
- •4.4. Компонент tlabel (надписи)
- •4.5. Компонент tedit (Строки ввода)
- •4.6. Компонент тМето (многостроч. Поле ввода)
- •4.7. Свойства и методы класса tstrings
- •4.8. Компонент checkbox (флажок)
- •4.9. Компонент tradiobutton (кнопки выбора)
- •4.10. Компонент MainMenu (главное меню программы)
- •4.11. Компонент timage
- •4.12. Компонент tstringgrid (сетка)
- •4.13. Компонент ttimer(таймер)
- •5. Отладка программ
- •5.1. Типы ошибок
- •5.2. Отладка программы
- •5.2.1. Трассировка программы
- •5.2.2. Точки останова программы
- •5.2.3. Наблюдение значений переменных
- •Часть 2. Технология ado для баз данных access
- •6. Создание баз данных access
- •6.1. Определение понятия баз данных
- •6.2. Интерфейс программы access
- •6.3. Создание базы данных в access 2007
- •6.3.1. Создание двухтабличной базы данных
- •6.3.2. Создание базы данных с вычисляемыми полями
- •6.4. Выбop формата для новой базы данных
- •6.5. Создание пустой базы данных
- •6.6. Открытие и закрытие базы данных
- •6.7. Создание таблиц в режиме конструктора
- •6.7.1. Выбор первичного ключа
- •6.7.2. Изменение полей и таблиц
- •6.7.3. Копирование полей
- •6.7.4. Перемещение полей
- •6.7.5. Удаление полей
- •6.7.6. Операции с таблицами
- •6.8. Создание базы данных в access 2003
- •6.9. Установление связей между таблицами
- •6.10. Обеспечение целостности записей в базе данных
- •6.11. Редактирование и удаление связей
- •7. Система доступа к данным ado
- •7.1. Общие сведения
- •7.2. Компонент adoConnection
- •7.2.1. Свойства компонента adoConnection.
- •7.2.2. Методы компонента adoConnection
- •7.3.Компонент аdоТable
- •7.3.1. Свойства компонента tadoTable
- •7.3.2. Методы компонента tadoTable
- •7.4. Компонент adoQuery
- •7.5. Компонент adoDataSet
- •7.5.1.Свойства компонента adoDataSet
- •7.5.2. Методы компонента adoDataSet
- •7.5.3. Cобытия компонента adoDataSet
- •7.6. Компонент DataSource
- •7.7.Комнонент DataGrid
- •7.7.1 Cвойства компонента DataGrid
- •7.7.2. Методы и события компонента DataGrid
- •7.8. Компонент adocommand
- •8. Управление базами данных
- •8.1. Приложение для управления базами данных
- •8.2. Свойства полей базы данных
- •8.3. Редактирование базы данных
- •8.4. Сортировка данных
- •8.5. Поиск данных в базе
- •8.5.1. Фильтрация данных в базе
- •8.5.2. Нахождения информации методом Locate
- •9.1. Общие сведения
- •9.2. Основные операторы запроса
- •9.2.1. Агрегатные функции
- •9.2.2. Подзапросы
- •9.3. Операторы наполнения баз данных sql
- •9.3.1. Ввод значений
- •9.3.2. Удаление значений
- •9.3.3. Изменение значений
- •9.4. Операторы создания баз данных sql
- •9.4.1. Команда создания таблицы.
- •9.4.2. Первичные ключи таблицы
- •9.4.3. Индексы таблицы
- •9.4.4. Добавление в таблицу новых столбцов
- •10. Реализация sql- запросов
- •10.1. Компонент tadoQuery для sql- запросов
- •10.2. Форма для реализация sql-запроса
- •11. Генератор отчетов Quick Reports
- •11.1.Описание Quick Reports
- •11.2. Печать записи с помощью Quick Reports
- •11.3. Печать таблиц с помощью Quick Reports
- •394026 Воронеж, Московский просп., 14
Часть 1. Краткое описание Delphi
1. Работа со средой delphi
1.1. Ознакомление с delphi
Запускается Delphi обычным образом — после щелчка на рабочем столе на ярлыке Delphi-2009 появится окно (рис 1.1) – стартовая страница Welcome Page
В верхней части стартовой страницы Welcome Page находятся строка меню и панель инструментов, кнопки которой позволяют произвести выполнение наиболее часто используемых команд.
Рис. 1.1
Работа над новым приложением (проектом), начинается с выбора в окне стартовой страницы Welcome Page меню File, а в нем команды New / VCL Forms Application — Delphi.
После этого откроется главное (рабочее) окно, приведенное на рис. 1.2, которое можно назвать дизайнером проектов.
Рис. 1.2
Для каждого отдельного модуля (блока программы)в дизайнере проектов предусмотрены три собственные вкладки, выбор которых осуществляется внизу дизайнера проектов.
К ним относятся:
•-вкладка дизайнера формы Design, окно которой уже открыто в дизайнере проектов;
•вкладка кода программы Code;
•вкладка истории изменения модуля History.
В этой же области могут располагаться вкладки отдельных модулей, входящих в приложение (например, Unitl, Unit2, Unit3 и т. д.). Выбрать одну из этих вкладок можно в верхней части дизайнера проектов.
Кроме того, в верхней части этого окна размещена строка браузера, с помощью которого можно открыть любую веб-страницу в сети Интернет.
1.2. Вкладка дизайнера формы (design)
Итак, центральную часть главного окна дизайнера проектов занимает окно дизайнера формы (рис. 1.2).
Каждое Windows-приложение выполняется в собственном окне или в нескольких окнах, одно из которых является главным и открывается первым при запуске приложения.
Разработка нового приложения всегда начинается с создания нового проекта.
Для каждого нового проекта Win32 автоматически отображается вкладка дизайнера формы
При этом создается форма с заголовком Forml, которая по умолчанию будет играть роль главного окна разрабатываемого приложения.
Форма представляет собой элемент интерфейса (окно проекта, диалоговое окно, информационное окно и т. д.) разрабатываемой программы вместе с отображаемыми и неотображаемыми компонентами, размещенными в нем.
Проектирование внешнего вида формы осуществляется путем изменения ее размеров и перетаскивания на нее элементов управления из палитры инструментов. На форму также могут быть добавлены не визуальные компоненты, которые будут определять функциональность приложения, но не будут отображаться при его выполнении.
В Delphi все объекты, помещаемые на форму, представляют собой классы.
Классы – это основное понятие объектно-ориентированного программирования.
В объектно-ориентированном программировании программист оперирует не просто процедурами и функциями, а целыми классами.
Класс — это совокупность свойств, методов и событий, которые. и обеспечивают его полноценную работу в различных условиях.
Свойства — это переменные, которые влияют на состояние класса, т.е. под свойством класса подразумевается какая-либо его характеристика, например, размеры или имя.
Например, с помощью свойства Caption пользователь может заменить имя формы Form1на любое другое
Методы — это те же процедуры и функции, т, е. это то, что класс умеет делать (вычислять). Или, иначе говоря, методы - это функции и процедуры, выполняющие действия над объектами (например, создание объекта).
. Например, класс может иметь процедуру для вывода какого-то текста на экран. Эта процедура и есть метод, который принадлежит классу.
Событие — это любое действие, полученное от мыши, клавиатуры, таймера или другого приложения, либо действие, вызванное изменением значений свойств элементов управления.
Для каждого события создается свой обработчик события, код которого пишет программист, т.е. обработчик события - это те же процедуры и функции, которые вызываются при наступлении определенного события.
Программист, создавая процедуру в программе, может сообщить объекту, что в случае наступления некоторого события, нужно вызвать эту процедуру, и она будет вызываться. Например, если изменилось какое-то свойство, может быть сгенерировано соответствующее событие, вызвана соответствующая процедура, и приложение сможет отреагировать на это событие.
В среде Delphi собственные процедуры программистом могут назначаться качестве обработчиков событий только в строго определенном формате (в зависимости от события).
Формат процедуры заранее определен и в разных случаях класс должен будет передавать различные параметры.
Ваши процедуры должны будут соответствовать предопределенному формату, чтобы не было разногласий с классом, к которому они будут относиться. Если формат (например, количество параметров или их тип) не будет соответствовать заранее определенному классу, то класс не сможет вызвать процедуру.
Пример, пусть пользователь нажал на кнопку. В этом случае она, как класс, генерирует соответствующее событие.
В результате этого может быть вызвана процедура-обработчик, которую вы назначили кнопке при возникновении данного события. В этом случае не требуется никакая дополнительная информация, поэтому класс не будет пересылать вам никаких параметров, кроме указателя на самого себя.
Однако если нужно обработать событие, связанное с перемещением курсора мыши, дело будет обстоять несколько иначе. В этом случае класс будет генерировать событие и автоматически передавать вам новые координаты X и Y курсора, поэтому процедура должна быть объявлена с соответствующими параметрами, чтобы можно было принять их от класса.
Delphi основывается на объектно-ориентированном программировании. Поэтому определим понятие объект.
С помощью класса описывается сущность, с которой нужно работать. Например, это может быть описание свойств, методов или событий классов. А когда на форму помещается эта сущность, т.е. класс, то создается один ее экземпляр, т.е. объект, например, кнопка.
Поместив на форму вторую кнопку, создадим еще один экземпляр, т. е. еще один объект. Вот так различаются между собой эти два понятия, т.е. объект — это экземпляр класса.
Метод для создания объекта называется конструктором (constructor). Метод для уничтожения объекта называется деструктором (destructor). Сам процесс создания объекта называется инициализацией.
Объект - сложный тип. Это значит, что можно объявлять переменные типа объект (точно так же как объявлялись переменные типа число, строка) и обращаться к объекту через эту переменную.
Доступ к свойствам объектов осуществляется при помощи записи
имяПеременной_типаОбъект.Свойство
Доступ к методу определяется записью вида —
ИмяПеременной_типаОбъект. Метод
(записывается как имя_объекта— точка — свойство или метод).
Создание объекта— обязательно.
Переменная объект ничего не хранит и ни на что не указывает.
Необходимо сначала проинициализировать и создать для нее объект, например, кнопку или присвоить адрес расположения в памяти уже существующей кнопки.
Без инициализации можно использовать только простые переменные, такие число или строка.
Под простые переменные Delphi выделяет память автоматически, потому что размер простых переменных фиксирован. И Delphi уже на этапе компиляции знает, сколько памяти нужно отвести под переменную.
Сложные переменные типа объектов обязательно должны инициализироваться.
Это связано еще и с размещением данных.
Простые переменные хранятся в стеке (сегмент стека) или в сегменте данных, а сложные переменные типа объектов хранятся в памяти компьютера.
При старте программы, сегмент стека инициализируется автоматически. Поэтому переменные могут спокойно размещаться в уже подготовленной памяти сегмента стека.
Когда создается объект, он создается в нераспределенной памяти компьютера
Так как память еще не распределена, ее нужно сначала подготовить (выделить нужный объем под создаваемый объект).
После того как объект не нужен, эту память необходимо освободить, вызвав деструктор.
Простые переменные освобождать не надо, потому что стек и сегмент данных очищаются автоматически. Эти сегменты операционная система может контролировать и без вмешательства программиста.
Класс- это очень удобная вещь. Он работает как шаблон, на основе которого создаются переменные типа объектов. Например, можно создать два собственных экземпляра объекта кнопка, т.е. в памяти останутся две независимые копии класса (кнопки). Свойства любой из них можно менять, и она не будет влиять на другую переменную.
Обе кнопки работают автономно и не мешают друг другу, потому что им выделена разная память.
Таким образом, создаются новые объекты на основе шаблона и потом раздельно используются, изменяя разные свойства шаблона и используя его методы.
Для уничтожения объекта всегда есть метод Free. Если объект вам больше не нужен, и вы хотите его уничтожить, просто вызовите этот метод: Объект.Free.
Согласно принятому в Delphi соглашению, имена типов должны начинаться с буквы T.
При наименовании классов в начало имени добавляется буква Т (от слова – Type - тип).
Поэтому вы всегда можете уже по имени определить, что перед вами не просто переменная, а целый класс.
Компоненты — это более совершенные объекты. Иначе говоря, компоненты — это объекты, с которыми можно работать визуально, и для этого у них есть необходимые свойства и методы.
Все стандартные компоненты Delphi описаны в библиотеке визуальных компонентов VCL (Visual Component Library).
При проектировании форма покрыта сеткой из точек, в узлах которой будут находиться элементы управления, помещаемые на форму. Во время выполнения приложения сетка не видна.
Проект может содержать несколько форм.
Главная из них указывается в комбинированном списке Main Form в диалоговом окне Project Options, вызываемом командой Project Options.