Delphi-Quellcode:
try
//Daten speichern ; hier tritt beispielsweise eine Exception auf, weil eine benötigte Eingabe fehlt o.ä.
Form2.Close;
except
messagedlg(
'
Es ist ein Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingaben.', mtError, [mbOK], 0);
form1.ClientDataSet1.Delete;
end;
So wie ich das verstehe, sollte das Formular nach obenstehendem Code im Fehlerfall nicht geschlossen werden oder bin ich da einem Irrtum aufgesessen?
Würde ich anders lösen. Deklariere im Datenmodul eine Funktion mit Boolean-Rückgabewert:
Delphi-Quellcode:
FUNCTION TDatenmodul1.DatensatzSpeichern(Sender: TObject) : BOOLEAN;
BEGIN
try
Dataset.Post;
Result := TRUE;
except
Result := FALSE;
end;
END;
Dann rufst du diese Function mittels entsprechendem Übernahme-Button auf:
Delphi-Quellcode:
PROCEDURE TFormEingabeModal.ButtonEingabenUebernehmenClick(Sender: TObject);
BEGIN
IF Datenmodul1.DatensatzSpeichern(Sender)
THEN CLOSE
ELSE Showmessage('Es ist ein Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingaben.');
END;
Als Alternative zum Übernahme-Button setzt du noch einen Cancel-Button auf dein Modalform, damit der Benutzer die Eingabe abbrechen kann:
Delphi-Quellcode:
PROCEDURE TFormEingabeModal.ButtonEingabenUebernehmenClick(Sender: TObject);
BEGIN
CLOSE;
END;
Sieht dann ungefähr so aus.