reden wir von der gleichen sache?
Zitat:
In TFIBDataSet
AfterCancel
AfterClose
AfterDelete
AfterEdit
AfterInsert
AfterOpen
AfterPost
AfterRefresh
AfterScroll
BeforeCancel
BeforeClose
BeforeDelete
BeforeEdit
BeforeEndUpdateTransaction
BeforeInsert
BeforeOpen
BeforePost
BeforeRefresh
BeforeScroll
Derived from TFIBCustomDataSet
AfterEndTransaction
AfterEndUpdateTransaction
AfterFetchRecord
AfterStartTransaction
AfterStartUpdateTransaction
BeforeEndTransaction
BeforeFetchRecord
BeforeStartTransaction
BeforeStartUpdateTransaction
DatabaseDisconnected
DatabaseDisconnecting
DatabaseFree
OnCompareFieldValues
OnDisableControls
OnEnableControls
OnEndScroll
OnFieldChange
OnFillClientBlob
OnGetRecordError
OnUpdateError
OnUpdateRecord
TransactionEnded
TransactionEnding
TransactionFree
Derived from TDataSet
OnCalcFields
OnDeleteError
OnEditError
OnFilterRecord
OnNewRecord
OnPostError
Aber die Idee mit dem Flag war gut. Was ich momentan gemacht habe, ist im BeforeAction des Navigators folgenden Code einzuführen:
Delphi-Quellcode:
procedure TWBWin.DBNavigator4BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
if Button = nbPost then
TDataModule1(self.Owner).DicentriesMayPost := true;
end;
Das Posten sieht dann folgendermaßen aus:
Delphi-Quellcode:
procedure TDataModule1.DataSetDicEntriesBeforePost(DataSet: TDataSet);
begin
if (not self.DicentriesMayPost) then
begin
self.DataSetDicEntries.Cancel();
abort();
end
else
self.DicentriesMayPost := false;
end;
Der einzige Nachteil, den das hat, ist natürlich, dass wenn ich durch das Dataset scrolle während es im Edit-Mode ist, dann wird einfach nurgecancelt und dann abgebrochen (also der Pointer bleibt auf dem Eintrag); ich muss dann noch ein zweites Mal scrollen, damit's dann wirklich zum nächsten oder vorherigen Eintrag geht...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.