Subversion Repositories winbugtracker

Compare Revisions

Regard whitespace Rev 8 → Rev 9

/CodeLib-Beitrag.txt
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;