Приложения для работы с локальными базами данных_______________527

Проверьте все это, построив простое приложение, вид которого показан на
рис. 9.46. Индикатор Кэширование переключает режим кэширования. Кнопка
Фиксация фиксирует все сделанные изменения в базе данных. Кнопка Отмена отме-
няет сделанные изменения. Когда приложение закрывается, надо проверить, не
работало ли оно в режиме кэширования и не было ли сделано изменений, которые
не зафиксированы в базе данных. Если были, то следует спросить пользователя о не-
обходимости их сохранения и при положительном ответе зафиксировать изменения.

Рис. 9.46

Приложение, демонстрирующее
кэширование данных

Коды этого приложения очень простые. Для таблицы Tablel свойство Cached-
Updates первоначально надо задать равным true. В приложение можно ввести пе-
ременную modif, которая будет фиксировать наличие не сохраненных изменений:

bool modif = false;

Для события OnClick индикатора Кэширование надо предусмотреть обработ-
чик:

Tablel->CachedUpdates = ! Tablel->CachedUpdates;

BApplyUpdates->Enabied = Tablel->CachedUpdates;

BCancelUpdates->Enabled = Tabiel->CachedUpdates;

if (Tablel->CachedUpdates) modif = false;

Он изменяет режим кэширования таблицы, делает доступными или недоступ-
ными в зависимости от режима кнопки Фиксация (ее имя — BApplyUpdates) и От-
мена (ее имя — BCancelUpdates) и, если включается режим кэширования, то сбра-
сывается в false значение modif.

Для события AfterEdit компонента Tablel можно предусмотреть обработчик:

if (Tablel->CachedUpdates) modif = true;

который фиксирует в переменной modif факт редактирования записи.
Обработчик события OnClick кнопки Фиксация имеет вид

Tablel->ApplyUpdates() ;

Tablel->CommitUpdates() ;

modif = false;

Обработчик события OnClick кнопки Отмена имеет вид

Tablel->CancelUpdates();

modif = false;

В обоих обработчиках переменная modif сбрасывает в false, фиксируя отсутст-
вие не сохраненных изменений.