Login | ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/winbugtracker/CodeLib-Beitrag.txt
Revision: 9
Committed: Tue Feb 23 17:10:04 2016 UTC (5 years, 7 months ago) by daniel-marschall
Content type: text/plain
File size: 1719 byte(s)

File Contents

# Content
1
2 Delphi Datenbanken: Fragen, ob man Änderungen speichern möchte
3
4 procedure TfrmBugtracker.qryBugsBeforeCancel(DataSet: TDataSet);
5 var
6 abfrage: Integer;
7 begin
8 // Tag 1 = Es wurde der "Abbrechen"-Knopf im DBNavigator gedrückt, also wollen wir keine unnötige Bestätigung
9 // Alles andere = Irgendwas anderes (z.B. Scrolling oder versehentlich versucht das Fenster zu schließen)
10 if qryBugs.Tag = 1 then exit;
11
12 abfrage := MessageDlg('Speichern?', mtConfirmation, mbYesNoCancel, 0);
13
14 if (abfrage = IDNo) or (abfrage = IDYes) or (abfrage = IDOK) then
15 begin
16 if abfrage = IDYes then
17 begin
18 if (qryBugs.state in [dsEdit, dsInsert]) then qryBugs.Post;
19 end;
20 if abfrage = IDNo then
21 begin
22 // Wir befinden uns bereits in qryBugs.Cancel, daher auskommentiert.
23 // if (qryBugs.state in [dsEdit, dsInsert]) then qryBugs.Cancel;
24 end;
25 end
26 else raise EAbort.Create('Abbruch durch Benutzer'); // Cancel geklickt
27 end;
28
29 procedure TfrmBugtracker.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
30 begin
31 if Button = nbCancel then
32 begin
33 if qryBugs.state in [dsEdit,dsInsert] then
34 begin
35 // Tag=1 soll verhindern, dass nicht gefragt wird, ob man Speichern möchte.
36 // Ansonsten würde diese Meldung kommen, denn ".Cancel" wird automatisch
37 // bei Ereignissen wie z.B. dem Scrolling aufgerufen (noch bevor
38 // OnBeforeScroll aufgerufen wird), bei dem man einen MBOnCloseQuery wünscht.
39 qryBugs.Tag := 1;
40 qryBugs.Cancel;
41 qryBugs.Tag := 0;
42 end;
43 end;
44 end;
45
46 procedure TfrmBugtracker.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
47 begin
48 qryBugs.Cancel;
49 end;