procedure GotoBookmark

Syntax:
procedure GotoBookmark(Bookmark: TBookmark);


Beschreibung:

Die Methode GotoBookmark implementiert eine virtuelle Methode, um in der Datenmenge auf den Datensatz zu positionieren, auf den ein bestimmtes Bookmark zeigt.

GotoBookmark ruft eine interne Methode auf, die in TDataSet nur eine leere Hülle ist. Diese interne Methode wird in abgeleiteten Klassen neu deklariert und implementiert, damit GotoBookmark den im Parameter Bookmark angegebenen Datensatz zum aktiven Datensatz machen kann.

Hinweis: Unidirektionale Datenmengen unterstützen keine Bookmarks. Wenn Sie GotoBookmark für eine solche Datenmenge aufrufen, ändert sich der aktive Datensatz nicht.
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;