Syntax:
function findPrior: boolean;
Beschreibung:
Die Methode FindPrior implementiert eine virtuelle Methode, die unter Berücksichtigung aller Filter den vorhergehenden Datensatz einer Datenmenge aktiviert.
FindFirst gibt false zurück, wenn der erste Datensatz der Datenmenge nicht aktiviert werden konnte. Die Methode wird in abgeleiteten Klassen überschrieben, um unter Berücksichtigung aller Filter den vorhergehenden Datensatz der Datenmenge zu aktivieren. In abgeleiteten Klassen gibt FindPrior true zurück, wenn der Datensatzwechsel erfolgreich war.
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;