Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Problem mit ShowModal und Exception

  Alt 19. Apr 2011, 00:28
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.
  Mit Zitat antworten Zitat