Syntax:
function GetBookmark: TBookmark;
Beschreibung:
Die Methode GetBookmark weist dem aktiven Datensatz in der Datenmenge eine Positionsmarke zu.
Mit GetBookmark können Sie für den aktiven Datensatz in der Datenmenge eine Positionsmarke einrichten. Anschließend können Sie jederzeit zu diesem Datensatz zurückkehren.
GetBookmark setzt voraus, dass bereits eine Variable für die Positionsmarke (in Delphi vom Typ TBookmark) in der Anwendung deklariert ist. Verwenden Sie GetBookmark, um der Variablen einen Wert zuzuweisen. Dieser Wert kann dann in späteren Aufrufen von GotoBookmark und FreeBookmark verwendet werden.
Die durch den Aufruf von GetBookmark zugewiesenen Systemressourcen müssen mit FreeBookmark wieder freigegeben werden, wenn die Positionsmarke nicht mehr benötigt wird.
Hinweis: GetBookmark verwendet eine als protected deklarierte Methode, die den Wert der Positionsmarke abruft. Nachkommen von TDataSet stellen durch die Implementierung dieser Methode ihre spezielle Unterstützung für Positionsmarken bereit. Unidirektionale Datenmengen unterstützen keine Positionsmarken. Wenn Sie GetBookmark für solche Datenmengen aufrufen, erhalten Sie einen bedeutungslosen Wert.
Beispiel:
//In diesem Beispiel wird eine Schaltfläche verwendet, um den Wert eines Feldes im vorhergehenden Datensatz in das entsprechende Feld des aktuellen Datensatzes zu kopieren.
procedure TForm1.CopyDataClick(Sender: TObject);
var
SavePlace: TBookmark;
PrevValue: Variant;
begin
with MyData do
begin
{ Positionsmarke abrufen, damit wir zum selben Datensatz zurückkehren können }
SavePlace := GetBookmark;
try
{ Zu vorhergehendem Datensatz wechseln }
FindPrior;
{ Wert abrufen }
PrevValue := Fields0.Value;
{ Zurück zu Positionsmarke wechseln.
Dies ist aber nicht mehr der nächste Datensatz,
wenn die Datenmenge asynchron geändert wird. }
GotoBookmark(SavePlace);
{ Wert zuweisen }
Fields0.Value := PrevValue;
{ Positionsmarke freigeben }
finally
FreeBookmark(SavePlace);
end;
end;
end;
Damit die Schaltfläche deaktiviert wird, wenn kein vorhergehender Datensatz vorhanden ist, wird über das Ereignis OnDataChange des DataSource-Objekts ermittelt, ob der Benutzer zum Anfang der Datei gelangt ist (Eigenschaft BOF wird true). Ist dies der Fall, wird die Schaltfläche deaktiviert.
procedure TForm1.MyDataDataChange(Sender: TObject; Field: TField);
begin
if MyData.Bof then
CopyData.Enabled := False
else
CopyData.Enabled := True;
end;