Продолжаем закреплять полученные знания о компонентах ввода данных и дорабатываем проект “Библиотека” v.2.2
Требования заказчика
Доработать проект Библиотека v.2.2:
- для книги хранить год издания
- хранить дату рождения автора
- сделать форму редактирования для каталога книг
Проектирование
Очевидно, что для реализации требований заказчика требуется доработка структуру хранения данных. Поэтому мы повышаем номер версии проекта, и добавляем новые поля:
- book.year_of_publishing – целое число
- author.birthday – дата
В проекте добавляется одна форма для редактирования каталога книг. А на форме редактирования книги добавляются поля для редактирования краткого описания и года издания.
🔨 Внесите данную информацию в проектную документацию.
Новые поля
🔨 Добавьте необходимые поля в таблицы:

Новые поля будут необязательными к заполнению.
📝 В разделе “Редактор структуры БД” содержится подробное описание того, как добавлять новые поля.
Новая форма
🔨 Создайте форму редактирования книги efmBook, установите свойства согласно таблице 1.
Свойство | Значение | Примечание |
---|---|---|
Name | efmBook | |
Caption | Книга | |
Width | 418 | |
Height | 230 | |
BorderIcons.Minimize | False | Убираем кнопку минимизации из заголовка формы. |
ShowOnTaskbar | False | При отображении формы на панели приложений не будет появляться отдельная иконка для формы, будет только иконка приложения (основной формы). |
📝 Базовую информацию о форме и её свойствах можно найти в первом проекте.
На форму добавьте компоненты: два поля ввода текста (1) (для названия и для года издания), две кнопки (2) (для сохранения и отмены сохранения), два выпадающих списка (3) (для автора и для жанра) и поле для ввода краткого содержания (4).

🔨 Настройте свойства полей ввода текста.
Свойство | Поле_1 | Поле_2 | Примечание |
---|---|---|---|
Name | edtName | edtYearOfPublishing | |
TableName | book | book | |
FieldName | name | year_of_publishing | |
Font.Size | 11 | 11 | Увеличим размер отображения данных с 9 до 11 пунктов |
Top | 16 | 16 | |
Left | 8 | 344 | |
Width | 321 | 66 | |
Height | 28 | 28 | Высота компонента устанавливается автоматически при редактировании свойства Font.Size |
TextHint | Название книги | Год | |
NumbersOnly | True |
🔨 Настройте свойства у выпадающих списков.
Свойство | Список_1 | Список_2 | Примечание |
---|---|---|---|
Name | cmbAuthor | cnbGenre | |
TextHint | Автор | Жанр | |
ForeingKey | book.id_author | book.id_genre | |
FieldName | name | name | |
Font.Size | 11 | 11 | |
Top | 56 | 56 | |
Left | 8 | 216 | |
Width | 193 | 193 | |
Height | 28 | 28 | Устанавливается автоматически при смене размера шрифта |
Anchors | [Right,Bottom] | [Right,Bottom] |
📝 Настройка выпадающего списка подробно описана в разделе “Выпадающий список“
🔨 Настройте свойства компонента Memo
Свойство | Значение | Примечание |
---|---|---|
Name | memSummary | |
Hint | Краткое содержание | |
ShowHint | True | |
TableName | book | |
FieldName | summary | |
Font.Size | 11 | |
Top | 96 | |
Left | 8 | |
Width | 401 | |
Height | 89 | |
ScrollBars | ssVertical | Вертикальная полоса прокрутки позволит просматривать длинные тексты |
📝 Настройка многострочного поля ввода подробно описана в разделе “Ввод длинного текста“
🔨 Настройте свойства у кнопок.
Свойство | Кнопка_1 | Кнопка_2 | Примечание |
---|---|---|---|
Name | btnSave | btnCancel | |
Caption | Сохранить | Отменить | |
Action | [Сохранить запись] | [Закрыть форму] | |
Icon | Save | Cancel | |
Top | 196 | 196 | |
Left | 210 | 314 | |
Width | 97 | 97 | |
Height | 25 | 25 | |
Anchors | [Right,Bottom] | [Right,Bottom] |
🔨 У кнопки btnSave укажите компоненты, которые являются источником данных для записи в таблицу book.

Главная форма
На главной форме отключаем редактирование внутри таблицы и добавляем три кнопки для добавления, редактирования и удаления записей.

🔨 Задайте новые значения свойствам таблицы:
Свойство | Значение | Примечание |
---|---|---|
Top | 40 | 40 пикселей выделим для кнопок… |
Height | 320 | …и уменьшим высоту таблицы на 40 пикселей |
Editable.AllowCreate | false | Отключаем редактирование внутри таблицы |
Editable.AllowEdit | false | |
Editable.AllowDelete | false |
На форме справочников нам понадобятся три кнопки: для добавления, редактирования и удаления записей.
🔨 Добавьте на форму frmMain три кнопки. Задайте значения свойствам кнопок:
Свойство | Кнопка_1 | Кнопка_2 | Кнопка_3 | Примечание |
---|---|---|---|---|
Name | btnNew | btnEdit | btnDelete | |
Caption | Добавить | Редактировать | Удалить | |
icon | New | Edit | Delete | |
Style | bsCommandLine | bsCommandLine | bsCommandLine | |
Width | 120 | 150 | 120 | |
Height | 40 | 40 | 40 | |
Top | 0 | 0 | 0 | |
Left | 0 | 120 | 270 | |
Actions | [НОВАЯ ЗАПИСЬ] | [ПОКАЗАТЬ ЗАПИСЬ] | [УДАЛИТЬ ЗАПИСЬ] |
📝 Подробнее о настройках кнопок см. раздел “Проект Библиотека v.2.2“
Форма редактирования автора
На форме редактирования необходимо добавить компонент для ввода даты, предварительно увеличив размеры формы. Добавьте новый компонент (dtpBirthday) в список для сохранения данных в кнопке btnSave.

🔨 Настройте свойства компонента Date Time Picker
Свойство | Значение | Примечание |
---|---|---|
Name | dtpBirthday | |
Hint | День рождения | |
ShowHint | True | |
TableName | author | |
FieldName | birthday | |
Font.Size | 11 | |
Top | 56 | |
Left | 8 | |
Width | 225 | |
Height | 28 |

Немного стиля
Кнопки со стилем bsCommandLine лучше сочетаются со светлым дизайном приложения, чем со стилем bsPushButton, поэтому вполне логично заменить стиль на кнопках, которые находятся на формах frmGenre и frmAuthor. Не забудьте сдвинуть таблицы, так как кнопки станут более высокими (оптимальную ширину кнопок подберите самостоятельно) и сменить цвет формы на цвет таблицы (clWindow).
🔨 Самостоятельно выполните корректировки на формах frmGenre и frmAuthor.
Подведение итогов


Теперь у каждой табличной формы есть своя форма редактирования, а вы освоили использование самых популярных компонентов: поля для ввода текста и даты, а также использование выпадающего списка для редактирования ссылочных значений. Теперь можно продолжить знакомство с другими компонентами редактирования.