- •Bde та ado
- •Введение
- •Введение в базы данных
- •Типы субд
- •Стандарт odbc
- •Технологии взаимодействия delphi с бд
- •Особенности технологии bde
- •Особенности технологии ado
- •Таблицы бд и связи между ними
- •Первичные ключи и индексы
- •Демонстрационная бд "поставщик книг"
- •Использование odbc для подключения источника данных. Внешний псевдоним бд
- •Создание внешнего псевдонима бд
- •Создание проекта с бд в технологии bde
- •Особенности использованияbdeдля соединения с источником данных
- •Структура проекта с бд и визуальными компонентами
- •Активизация проекта
- •Главная форма проекта
- •Модуль данных
- •Создание модуля данныхTDataModule
- •Создание компонента tDatabase
- •Создание компонента tTable
- •Создание компонентаTDataSource
- •Связь модуля главного окна с модулем данных
- •Связь сеткиTdbGrid и навигатораDbNavigatorcисточником данныхTDataSource
- •Связь главный-детальный между наборами данных
- •Задание реляционной связи между наборами данных
- •Активизация наборов данных
- •Недостатки полученных решений и пути их устранения
- •Объекты-столбцы сетки dbGrid
- •Объекты-поля наборов данных
- •Создание объектов-полей
- •Присоединение к наборам данных новых полей
- •Присоединение полей из других таблиц. Подстановочные поля
- •Вычисляемые поля
- •Обработчики событий компонент работы с бд
- •Обработчики событий OnGetText полей нд и компонента визуализации данныхTdbGrid
- •Установка системных переменных в обработчике событяOnCreate
- •Бизнес-правила иобработчики событий компонент работы с бд
- •Implementation
- •Sql запросы к бд
- •КомпонентtQuery
- •СозданиекомпонентаtQuery
- •ИспользованиякомпонентаtQuery
- •Свойство sql
- •Методы Open и ExecSql
- •Параметрические запросы
- •Параметрические запросы и свойство DataSource компонента tQuery
- •Связь главный-детальный с компонентомTQuery в качестве детального набора данных
- •Доступ к полям запроса
- •Обращение к значению поля при помощи свойств объектов-полейValueиAsXxxx
- •Обращение к значению поля при помощи свойств набора данных Fields и FieldValues
- •Обращение к значению поля при помощи функции набора данных FieldByName
- •Программный доступ к данным запроса
- •Общая схема программного доступа к данным запроса
- •Последовательная навигация по записям
- •Обзор событий компонентаtQuery
- •Хранимые процедуры и триггеры
- •Хранимые процедуры
- •Создание хранимых процедур
- •Вызов хранимых процедур
- •Триггеры
- •Наборы данных
- •Обзор событий класса tdbDataSet
- •Реализация каскадных изменений и бизнес-правил
- •Другие события
- •Технология ado
- •Основные особенности технологии ado
- •Реализация технологии ado в Delphi
- •Создание проекта с бд в технологии ado. Установка связи с бд
- •Создание модуля данных
- •Начало настройки связи
- •Выбор провайдера
- •Настройка провайдера
- •Настройка провайдераMicrosoftJet4.0oledbProvider
- •Настройка провайдера Microsoft ole db Provider for odbc Drivers
- •Завершение настройки связи
- •Настройка оставшихся компонент модуля данных
- •Особенности использования компонентов ado
- •Базовые объекты ado
- •ОбъектRecordset
- •ОбъектCommand
- •ОбъектParameter
- •Компонент tadoCommand
- •Свойства, методы и события ado компонентов-наборов
- •Общие свойства с bde-компонентами
- •Специфические свойства
- •Методы класса tCustomAdoDataSet
- •События класса tCustomAdoDataSet
- •Компонент tadoDataSet
- •Компонент tadoTable
- •Компонент tadoQuery
- •Компоненты визуализации данных вDelphi
- •Компонент tdbGrid
- •Свойства
- •Дополнительные возможности сетки
- •Компоненты визуализации полей текущей записи
- •Компонент tdbText
- •Компонент tdbEdit
- •Компонент tdbCheckBox
- •Компонент tdbRadioGroup
- •Списочные компоненты
- •Компонент tdbMemo
- •Компонент tdbRichEdit
- •Компонент tdbCtrlGrid
- •Компонент tdbNavigator
- •Приложение 2. Бд "поставщик книг"
- •Рекомендованная литература
Компоненты визуализации данных вDelphi
Характерной особенностью визуализации данных (вкладка DataControls) является их подключение к необходимым компонентам-наборамTTableиTQueryчерез связующие компоненты - источник данныхTDataSource.
В этом разделе описываются основные приемы работы с компонентом-источником TDataSourceи компонентами, предназначенными для визуализации данных:
в виде таблицы (сетки);
в виде формы.
Визуализация данных в виде таблицы (сетки) осуществляется с помощью компонентаTDBGrid.
Визуализация данных в виде формыпредставляет собой обычную форму, на которую помещены компоненты визуализации отдельных полей текущей записи. Набор этих компонент достаточно обширен – TDBText,TDBEdit и т.д.
Компонент tdbGrid
Компонент TDBGrid(сетка) отображает содержимоеНДв виде таблицы, в которой столбцы соответствуют полямНД, а строки - записям.
Свойства
Таблица 8.1 -Свойства классаTColumn
Свойство |
Описание |
type TColumnButtonStyle = (cbsAuto, cbsEllipsis, cbsNone); property ButtonStyle: TColumnButtonStyle; |
Определяет стиль назначенной столбцу кнопки: cbsAuto - столбец содержит кнопку раскрывающегося списка; cbsEllipsis - столбец содержит кнопку, щелчок по которой вызывает событие OnEditButtonClick; cbsNone - столбец не содержит кнопки |
property Color: TColor; |
Определяет цвет столбца |
property DisplayName: string; |
Содержит заголовок столбца |
property Field: TField; |
Содержит ссылку на связанное со столбцом поле НД |
property FieldName: string; |
Содержит имя связанного со столбцом поля НД |
property Font: TFont; |
Определяет шрифт столбца |
property PickList: TStrings; |
Определяет элементы раскрывающегося списка, если в ButtonStyle установлено значение cbsAuto |
property ReadOnly: boolean; |
Если содержит True, данные в столбце нельзя изменять |
property Title: TColumnTitle; |
Содержит ссылку на объект-заголовок, имеющий стандартные для визуальных компонентов свойства Alignment, Caption, Color и Font, позволяющие управлять текстом в заголовке столбца |
property Visible: boolean; |
Если содержит False, столбец не отображается в сетке |
property Width: integer; |
Содержит ширину столбца в пикселах |
Дополнительные возможности сетки
У компонента есть свойство, с помощью которого можно управлять поведением и внешним видом сетки:
type TDBGridOption = (dgEditing, dgAlwaysShowEditor, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgMultiSelect);
TDBGridOptions = set of TDBGridOption;
property Options: TDBGridOptions;
Параметры здесь следующие:
dgEditing- разрешает изменениеНД;
dgAlwaysShowEditor- при выделении столбца автоматически переводит его в режим редактирования;
dgTitles- показывает заголовки столбцов;
dgIndicator- показывает указатель текущей строки в самом левом фиксированном столбце;
dgColumnResize- разрешает пользователю с помощью мыши изменять ширину столбцов;
dgColLines- показывает в сетке вертикальные разделяющие линии;
dgRowLines- показывает горизонтальные разделяющие линии;
dgTabs- разрешает переход от столбца к столбцу с помощью клавишиTab;
dgRowSelect- разрешает выделение цветом всей текущей строки;
dgAlwaysShowSelection- выделение текущей строки цветом сохраняется, даже если компонент теряет фокус ввода;
dgConfirmDelete- требует подтверждения удаления строки;
dgCancelOnExit- если пользователь вставляет пустую строку и покидает, ее, она не сохраняется в таблицеБД;
dgMultiSelect- разрешает множественный выбор строк.
Следует отметить, что отсутствие в свойстве значения dgEditingзащищает отображаемые в сетке данные от изменения независимо от значения свойстваReadOnlyлюбого ее столбца. Точно так же защищает строки вставка в свойство значенияgdRowSelected, кроме того, в этом случае из свойства автоматически удаляются значенияdgEditingиdgAlwaysShowEditor(если, разумеется, они входили в множествоOpt.ions; эти значения нельзя вставить в свойство, пока в нем присутствует значениеdgRowSelected). В защищенной сетке нельзя изменить ни одной ячейки текущей строки, но можно удалить строку или вставить пустую строку (если в свойстве нет значенияdgCancelOnExit). Если вы не собираетесь защищать данные, полезно вставить в свойствоOptionsзначениеdgAlwaysShowEditor- в этом случае столбец автоматически переводится в режим редактирования, как только он получает фокус ввода; если это значение отсутствует, редактировать выделенный столбец можно после нажатия клавишиF2илиEnterлибо после двойного щелчка на ячейке мышью.