Hallo,
ich habe folgendes Problem. Beim Formularschliessen wird beim OnCloseQuery abgefragt, welches Status die Datenmenge hat. Und wenn der Satz "State in [dsEdit,dsInsert]" hat, dann wird der Datensatz gespeichert. Es funktioniert nur, wenn ich Formular beim Klicken auf das Kreuzchen schliesse. Wenn ich mit ESC raus gehe, dann State=dsBrowse. (obwohl ich genau weis, dass der Satz noch nicht gespeichert ist, und man kann es eindeutig in DBGrid sehen)
Und dann wird der Datensatz nicht gespeichert.
Es soll doch keine Unterschiede geben, ob ich aufs Kreuzchen klicke oder ESC-Taste drucke?!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm_sortiment.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_escape then Close; end;
procedure TForm_sortiment.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if xtab.State in [dsInsert, dsEdit] then begin if messagedlg('Sie haben Daten nicht gespeichert!'+chr(13)+'Jetzt speichern?',mtConfirmation,[mbyes,mbno],0)=mryes then xtab.Post else if xtab.state=dsedit then xtab.cancel else xtab.delete; end; xtab.close; release; end; |