0,0 → 1,49 |
|
Delphi Datenbanken: Fragen, ob man Änderungen speichern möchte |
|
procedure TfrmBugtracker.qryBugsBeforeCancel(DataSet: TDataSet); |
var |
abfrage: Integer; |
begin |
// Tag 1 = Es wurde der "Abbrechen"-Knopf im DBNavigator gedrückt, also wollen wir keine unnötige Bestätigung |
// Alles andere = Irgendwas anderes (z.B. Scrolling oder versehentlich versucht das Fenster zu schließen) |
if qryBugs.Tag = 1 then exit; |
|
abfrage := MessageDlg('Speichern?', mtConfirmation, mbYesNoCancel, 0); |
|
if (abfrage = IDNo) or (abfrage = IDYes) or (abfrage = IDOK) then |
begin |
if abfrage = IDYes then |
begin |
if (qryBugs.state in [dsEdit, dsInsert]) then qryBugs.Post; |
end; |
if abfrage = IDNo then |
begin |
// Wir befinden uns bereits in qryBugs.Cancel, daher auskommentiert. |
// if (qryBugs.state in [dsEdit, dsInsert]) then qryBugs.Cancel; |
end; |
end |
else raise EAbort.Create('Abbruch durch Benutzer'); // Cancel geklickt |
end; |
|
procedure TfrmBugtracker.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn); |
begin |
if Button = nbCancel then |
begin |
if qryBugs.state in [dsEdit,dsInsert] then |
begin |
// Tag=1 soll verhindern, dass nicht gefragt wird, ob man Speichern möchte. |
// Ansonsten würde diese Meldung kommen, denn ".Cancel" wird automatisch |
// bei Ereignissen wie z.B. dem Scrolling aufgerufen (noch bevor |
// OnBeforeScroll aufgerufen wird), bei dem man einen MBOnCloseQuery wünscht. |
qryBugs.Tag := 1; |
qryBugs.Cancel; |
qryBugs.Tag := 0; |
end; |
end; |
end; |
|
procedure TfrmBugtracker.FormCloseQuery(Sender: TObject; var CanClose: Boolean); |
begin |
qryBugs.Cancel; |
end; |