Компоненты
управления данными
с палитры Data
Contorls:
TDBGrid
- отображает содержимое таблицы БД в
виде сетки, в котором столбцы соответствуют
полям, а строки записям таблицы.
Компонент
имеет следующие свойства:
- Data
Source – содержит ссылку на компонент
типа TDataSource, служащий источником данных;
- Editor
Mode – если содержит true, пользователь
может редактировать ячейку после нажатия
клавиши F2 или Enter. Игнорируется,
если свойство Option включает значение
goEditing или goAlwaysShowEditor;
- Option –
определяет вид и поведение компонента;
- dgEditing
– разрешает изменение набора данных;
- dgAlwaysShowEditor
– автоматически переводит столбец в
режим редактирования при его выделение;
- dgTitles
– показывает заголовки столбцов;
- dgIndicator
– показывает индикатор текущей строки
в самом левом фиксированном столбце;
- dgColumnResize
– разрешает пользователю вручную изменять
ширину столбцов;
- dgColLines
– показывает разделяющие вертикальные
линии;
- dgRowLines
– показывает разделяющие горизонтальные
линии;
- dgTabs –
разрешает переход от столбца к столбцу
с помощью клавиши Tab;
- dgRowSelect
– разрешает выделение цветом всей выбранной
строки;
- dgAlwaysShowSelection
– выделение текущей строки сохраняется,
если компонент теряет фокус ввода;
- dgConfirmDelete
– удаление строки должно подтверждаться;
- dgCancelOnExit
– если пользователь вставил пустую строку
и покинул ее, она не помещается в набор
данных;
- dgMultiSelect
– разрешает множественный выбор строк.
TDBNavigator
- осуществляет перемещение и редактирование
записей (вид и назначение кнопок указаны
в пункте DBNavigator). С помощью свойства
DataSource компонент связывается с нужным
источником данных ТDataSource – это все,
что необходимо для его нормальной работы.
Свойство ConfirmDelete управляет отображением
диалогового окна с просьбой подтвердить
удаление записи (значение True этого
свойства выводит окно).
Создание
приложения:
- Запустить
Delphi.
- В свойстве
Caption изменить имя формы на Студенты.
- Установить
на форму компоненту TTable.
- Определить
следующие свойства компоненты Table1.
- определить
псевдоним - выбрать в свойстве DatabaseName
инспектора объектов псевдоним «Student».
- задать имя
таблицы - выбрать в свойстве TableName
таблицу Student.
- активизировать
таблицу - установить в свойстве Active
значение true
(это будет возможно после выполнения
пункта 4).
- Разместить
на форму компоненту DataSource с закладки
Data Access и в свойстве DataSet инспектора
объектов выбрать компоненту Table1.
- Расположить
на форме компоненту DBGrid
с закладки Data Controls и в свойстве DataSource
выбрать DataSource1.
Если вы внесли
несколько записей, то форма Студенты
примет вид:
Редактор
полей:
Для управления
отображением данных таблицы используют
специальный редактор полей - Editor
Field.
Для вызова Editor
Field следует:
- Дважды щелкнуть
по Table1.
- Для открывшегося
окна вызвать контекстное меню и выбрать
пункт Add All Field, если необходимо добавить
все поля таблицы.
- Add
Field для выбора отдельного поля.
Редактор
полей имеет следующие свойства:
- DisplayLabel
– задает имя полю;
- DisplayWidth
– определяет количество символов, которое
будет выводится в поле;
Определим
свойства для полей таблицы
Student.db.
- Выбрать в
окне редактора полей таблицы поле SFio
и в свойстве DisplayLabel инспектора объектов
изменить SFio на ФИО. Выбрать свойство
DisplayWidth и заменить размер на 35.
- Так же поменять
свойства других полей таблицы.
- Для полей
логического типа в свойстве DisplayValues
можно написать варианты для значений
True и False. В поле SSpec в этом свойстве
написать «Математика;Физика» (без
пробела, разделяя «;»). Получиться как
показано на рисунке.
- Если возникнет
необходимость можно скрыть любое поле,
выбрав его и в свойстве Visible инспектора
объектов установив значение false.
После
выполненных действий сетка DBGrid1
будет выглядеть так:
Ввод
данных:
Компоненты
для организации доступа к таблицам БД
позволяют выполнять всевозможные операции
с наборами данных: добавлять или удалять
записи, перемещаться по ним. При этом
следует иметь в виду, что в любой момент
времени доступна для выполнения конкретных
действий только одна запись, называемая
текущей. В этой лабораторной работе
рассматриваются наиболее часто используемые
методы компоненты Table.
Основные
методы для организации доступа
компоненты Table:
- Append
– добавить новую запись в конец таблицы.
- Delete
– удалить текущую строку.
- Edit
– перейти в режим редактирования. После
этого можно изменять значения полей.
- Insert
– вставить новую строку в таблицу.
- Post
– принять все изменения.
- Refresh
– обновить информацию о данных.
- UpdateRecord
– обновить текущую запись.
- Откроем созданное
приложение.
- Разместим
на форме три компоненты SpeedButton из
палитры Additional. Одна из кнопок будет
добавлять запись, другая – изменять данные
в записи, третья – удалять. Назовем их
соответственно.
- Создадим
новую форму, которая будет вызываться
нажатием кнопки «Добавить». На форме
расположены 4 компоненты Edit, компонент
DateTimePicker с закладки Win32, компонент
CheckBox и компонент RadioGroup.
- Текст процедуры
для события OnClick кнопки «Добавить»
на форме Студенты:
end;
- Текст процедуры
для события OnClick кнопки «ОК» на
форме Добавление
записи:
Form1.Table1.Insert;
Form1.Table1.FieldByName('SFio').Text:=Edit1.Text;
Form1.Table1.FieldByName('SOsn').Text:=Edit2.Text;
Form1.Table1.FieldByName('SNom').Text:=Edit3.Text;
Form1.Table1.FieldByName('SKurs').Text:=Edit4.Text;
Form1.Table1.FieldByName('SData').AsDateTime:=DateTimePicker1.Date;
if CheckBox1.Checked then
Form1.Table1.FieldByName('SStip').Text:='да'
else
Form1.Table1.FieldByName('SStip').Text:='нет';
//при нажатии на флажок
полю SStip (Стипендия)
передается
//значение True, в противном
случае вводится передается
//значение False
case RadioGroup1.ItemIndex of
0: Form1.Table1.FieldByName('SSpec').Text:='Математика';
1: Form1.Table1.FieldByName('SSpec').Text:='Физика';
end;
if form1.Table1.Modified
then form1.Table1.Post;
close;
Комметарий:
в строке Form1.Table1.Insert
вызывается метод, который допускает вставку
новой строки в таблицу, которая находится
на форме «Студенты». Без вызова этого
метода дальнейшая работа по вставке записи
в таблицу невозможна. Запись Form1.Table1.FieldByName('SFio').Text:=Edit1.Text
означает, что текст, который находится
в Edit1 по нажатии кнопки будет перенесен
в таблицу на форме «Студенты» в новую
запись в текстовое поле ФИО. Остальные
записи в процедуре работают аналогичным
образом. Запись if
form1.Table1.Modified then form1.Table1.Post
сохраняет изменения в таблице. Close
– закрывает форму «Добавление
записи».
- По нажатии
кнопки Cancel осуществляется выход.
То же и на форме «Редактирование записи».
- Текст процедуры
для события OnClick при нажатии клавиши
«Удалить» на форме Студенты:
procedure
TForm1.SpeedButton3Click(Sender: TObject);
begin
Table1.Delete //удаляет текущую
запись в таблице
end;
Редактирование
данных:
Компоненты,
отражающие информацию, делятся на
две категории – те, которые
не связаны с таблицами БД, и
компоненты, связанные с таблицами
и обменивающиеся с ними информацией.
В первую категорию входят обычные
компоненты Delphi. Компоненты второй категории
расположены на странице Data
Controls. Почти каждая из них имеет аналог
среди обычных компонент; основные отличия
заключаются в том, что они могут работать
с данными, хранящимися в БД. К этой группе
относится компонента DBEdit, которая
используется для ввода текстовой однострочной
информации.
Чтобы
компонент DBEdit видел данные из поля
таблицы, следует указать в свойствах:
- DataSource – источник
данных;
- DataField – поле
для редактирования.
Этот
компонент с заданными
уже свойствами может
появиться автоматически
при перетаскивании
имени поля из окна редактора
полей.
- Создадим
новую форму: Редактирование
записи.
- В случае
перетаскивания поля логического типа,
на форме автоматически устанавливается
компонента DBCheckBox, что не всегда удобно.
- Установим
на форму компоненту DBRadioGroup с закладки
Data Control.
- В свойстве
DataSource укажем DataSource1.
- В свойстве
DataField укажем SSpec.
- Текст процедуры
для события OnClick при нажатии клавиши
«Изменить» на форму Студенты:
begin
end;
- Текст процедуры
для события OnClick при нажатии клавиши
«Сохранить» на форму Редактирование:
begin
then form1.Table1.Post; //все
изменения в таблице
сохраняются
end;
- Пользователь
имеет возможность редактировать записи
в таблице напрямую. Чтобы это предотвратить
используется свойство компоненты DBGrid
dgEditing. Нужно выделить DBGrid1 и в
свойстве Options► dgEditing инспектора
объектов поставить false.