Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика_программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Закладки (Bookmarks)

Закладки позволяют сохранить положение в наборе данных, чтобы позднее можно было вернуться к этому же месту. В Delphi за это отвечает только одно свойство. Все, что нужно сделать – это объявить переменную типа TBookmarkStr и присвоить ей положение, которое мы хотим запомнить:

var

bm : TBookmarkStr;

begin

bm := Table1.Bookmark;

А когда нужно вернуться на закладку, делаем обратное присваивание:

Table1.Bookmark := bm;

Чтобы освободить закладку, нужно ей просто-напросто присвоить пустую строку:

bm := '';

Как видите, закладка реализуется переменной типа TBookmarkStr, а в компоненте Table имеется свойство Bookmark такого же типа.

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

var

fMain: TfMain;

bm : TBookmarkStr;

Далее, кнопка "Установить" у нас доступна, остальные кнопки не доступны. Почему? Потому, что мы не можем перейти на закладку, или удалить ее, пока мы эту закладку не установили. Как только мы установим закладку, то наоборот, кнопки "На закладку" и "Удалить" у нас должны стать активными. А вот "Установить" - нет, потому что ее сначала нужно освободить, удалить. Имеем это в виду, и пишем код для кнопки "Установить":

//получаем закладку:

bm := fDm.Table1.Bookmark;

//разрешаем или запрещаем кнопки:

Button5.Enabled := False; //установить

Button6.Enabled := True; //на закладку

Button7.Enabled := True; //Удалить

Теперь код для кнопки "На закладку":

//перейти на закладку

fDM.Table1.Bookmark := bm;

И напоследок, код для кнопки "Удалить":

//удалить закладку:

bm := '';

//разрешаем или запрещаем кнопки:

Button5.Enabled := True; //установить

Button6.Enabled := False; //на закладку

Button7.Enabled := False; //Удалить

Вот и вся работа с закладками!

Свойства bof, eof и циклическая обработка

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

Table1.First; //перешли на первую запись

while not Table1.EOF do begin

{какие-то действия с записью}

Table1.Next; //переход на следующую запись

end; //while

Точно также, можно от конца таблицы переходить к началу, и использовать при переходе свойство Prev – переход к предыдущей записи.

Открытие и закрытие таблицы или связанных таблиц

В предыдущем примере мы во время разработки установили свойство Active таблицы в True. Однако нередко бывает, что открывать и закрывать таблицу приходится программным путем. Таким образом, для открытия таблицы мы можем использовать свойство Active или методы Open и Close, которые делают одно и то же:

//открываем таблицы:

Table1.Open;

Table2.Active := True;

//закрываем таблицы:

Table1.Close;

Table2.Active := False;