Komponenten
Syntax:
Eigenschaft State: TDataSetState
Beschreibung:Die Eigenschaft State gibt den aktuellen Modus der Datenmenge an.
Mit State können Sie den aktuellen Status einer Datenmenge ermitteln.
Der Modus bestimmt, welche Operationen mit den Daten in der Datenmenge durchgeführt werden können (z.B. Bearbeiten vorhandener oder Einfügen neuer Datensätze).
Der Modus ändert sich bei der Verarbeitung der Daten in einer Anwendung ständig.
Beim Öffnen einer Datenmenge ändert sich der Modus von dsInactive in dsBrowse.
Die Datenmenge kann dann mit der Methode Edit in den Modus dsEdit oder mit Insert in den Modus dsInsert versetzt werden.
Bei einem TTable- oder TClientDataSet-Objekt kann der Modus mit SetKey oder SetRange in dsSetKey geändert werden.
Durch das Eintragen oder Verwerfen von Änderungen sowie das Einfügen oder Löschen von Datensätzen wird der aktuelle Status in dsBrowse geändert.
Wird eine Datenmenge geschlossen, ändert sich ihr Modus in dsInactive.
Einige Modi wie dsCalcFields, dsFilter, dsNewValue, dsOldValue und dsCurValue können nicht direkt ermittelt oder gesetzt werden.
Sie werden automatisch zugewiesen, wenn OnCalcFields- und OnFilterRecord-Ereignisse ausgelöst werden oder in einer Anwendung auf bestimmte Feldeigenschaften zugegriffen wird.
Beispiel:
//Im folgenden Beispiel wird mit Hilfe eines BLOB-Streams ein String am Ende des Feldes Notes in der Tabelle Tasks angefügt.
procedure TForm1.AppendNoteClick(Sender: TObject);
var
Stream: TStream;
S: string;
begin
with Tasks do
begin
Edit;
if State = dsEdit then
begin
Stream := CreateBlobStream(FieldByName('Notes'), bmReadWrite);
try
Stream.Seek(0, 2); { 0 Bytes ausgehend vom Ende des Streams suchen }
S := ' This line will be added to the end.';
Stream.Write(PChar(S)^, Length(S));
Post;
finally
Stream.Free;
end;
end;
end;
end;