11 Stimme

Delphi/Lazarus: ModalResult ohne Button setzen

Frage von Gast | 14.12.2015 um 18:24

Ich habe eine Form, mit zwei Buttons, die ModalResult auf mrOk oder mrCancel setzen. Das funktioniert perfekt. Ich rufe die Form mit ShowModal auf und wenn der Nutzer auf einen der Buttons klickt, schließt das Fenster und ich kann das Ergebnis auswerten.

Nun möchte ich aber auch erlauben, dass der Nutzer nicht nur auf den Button klicken kann, sondern auch mit einer Tastenkombination das Fenster schließen kann. Dazu habe ich KeyPreview auf true und folgende Prozedur definiert.

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; 
   Shift: TShiftState);
begin

  if key = ord(#13) then begin
     ModalResult := mrOk;
     Close;
  end;

end; 

Der Aufruf erfolgt folgendermaßen:

if Form2.ShowModal = mrOk then begin
   // Code nach Okay
end else begin
   // Code nach Abbruch
end;

Leider funktioniert das überhaupt nicht. Das ModalResult ist immer mrNone, obwohl ich es ja eigentlich auf mrOK gesetzt habe. Was mache ich hier falsch?

AntwortenPositivNegativ
1Beste Antwort1 Stimme

Das Problem liegt an dem Aufruf von Close, den du verwendest. Du solltest stattdessen das Close einfach weglassen, also:

if key = ord(#13) then begin
   ModalResult := mrOk;
end;

So hat es in meinem Test gerade funktioniert. Die Form schließt dann trotzdem automatisch, darum brauchst du dich nicht zu kümmern.
14.12.2015 um 19:44

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.