Du speicherst immer, auch wenn die Datenmenge weder im Editier- noch im Einfügemodus ist.
Wo werden denn EditModus und AppendModus gesetzt?
Für mich ist vor dem DM.Query1.Post nicht erkennbar, ob die Datenmenge aktuell verändert werden kann. Die Namensvergabe der Routinen lässt darauf schließen, dass es so sein könnte, aber sichergestellt ist es nicht.
Statt den Editier- oder Einfügemodus über irgendwelche (globalen) Variblen abzufragen, würd' ich doch lieber State abfragen. Sowas in der Art:
Delphi-Quellcode:
procedure TFormMeldung.MM_PostClick(Sender: TObject);
begin
if (DM.Query1.State in [dsEdit, dsInsert]) then begin
if DM.Query1.FieldByName('DATUM').IsNull Then DM.Query1.FieldByName('DATUM').AsDateTime := Now;
DM.Query1.Post;
end;
end;