Быстрый переход к помеченным записям
Закладки, как инструмент работы с записями набора данных, позволяют осуществлять быстрое перемещение на нужную запись. Набор данных может содержать неограниченное число закладок, каждая из которых представляет собой указатель. Закладку можно создать только для текущей записи набора данных.
При работе с закладками используются три основных метода:
Кроме этого, можно использовать метод Bookmarkvalid, который проверяет, указывает ли закладка на реально существующую запись. Метод compareBookmark позволяет сравнить между собой две закладки:
var Bookmarkl, Bookmark2: TBookmark;
...
if Tablel.CompareBookmark(Bookmarkl, Bookmark2) = 1
then ShowMessage (' Закладки одинаковы') ;
В наборе данных имеется свойство Bookmark, которое содержит название текущей закладки.
Рассмотрим небольшой пример, где право управлять закладками предоставлено пользователю (рис. 14.4). На форме, помимо других элементов управления (среди которых есть компонент TDBGrid), имеются две кнопки. Кнопка startBookmark помечает текущую запись, кнопка stopBookmark переходит к закладке, а затем уничтожает ее.
Рис. 14.4. Главная форма проекта DemoBookmark
Листинг 14.2. Пример использования закладок .
implementation
{$R *.DFM}
var SaveRecPos: TBookMark;
procedure TMainForm.FormShow(Sender: TObject);
begin
try
Cust.Open;
BookmarkControl.Brush.Color := clBtnFace;
except
ShowMessage('Ошибка открытия набора данных');
end;
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Cust.Close;
end;
procedure TMainForm.StartBookmarkClick(Sender: TObject);
begin
if Not Cust.BookmarkValid(SaveRecPos)
then SaveRecPos := Cust.GetBookmark;
BookmarkControl.Brush.Color := cILime
end;
procedure TMainForm.StopBookmarkClick(Sender: TObject);
begin
with Cust do begin if Not BookmarkValid(SaveRecPos)
then Exit;
GotoBookmark(SaveRecPos);
FreeBookmark(SaveRecPos);
SaveRecPos := Nil;
end;
BookmarkControl.Brush.Color := clBtnFace;
end;
end.
Использование метода Bookmarkvaiid позволяет корректно переопределять закладку, если она уже установлена, и избежать ошибок при произвольных нажатиях кнопок. Компонент BookmarkControl типа TShape сигнализирует о том, что закладка установлена или удалена.
Примечание
Закладки также используются в компоненте TDBGrid. Он имеет свойство SelectedRows типа TBookmarkList, которое представляет собой список закладок, указывающих на одновременно выделенные записи.