Delphi/Lazarus: ShowModal Result
Tipp von Stefan Trost | Letztes Update am 28.02.2024 | Erstellt am 19.05.2013
ShowModal zeigt eine Form an und wartet darauf, bis diese wieder vom Nutzer geschlossen wurde. Bis zum Schließen lässt sich auch keine andere Form des Programms bedienen. Was viele jedoch nicht wissen: Es lässt sich ein Rückgabewert für das Schließen der ShowModal-Form definieren, den man dann anschließend bequem im Programm auswerten kann.
Zum Beispiel, um zu schauen, welchen Button ein Nutzer gedrückt hat.
Beispiel
Schauen wir uns dazu zunächst ein simples Beispiel an. Unsere erste Form ist Form1. Ein zweites Fenster (Form2) möchten wir mit ShowModal anzeigen lassen.
Auf Form2 haben wir zwei Buttons platziert, denen wir folgenden Code zugewiesen haben:
procedure TForm2.Button1Click(Sender: TObject); begin ModalResult := 1; end; procedure TForm2.Button2Click(Sender: TObject); begin ModalResult := 2; end;
In Form1 rufen wir diese Form mit ShowModal auf:
procedure TForm1.Button1Click(Sender: TObject); var k: integer; begin // Beispiel 1 k := Form2.ShowModal; if k = 1 then ShowMessage('Button 1 wurde geklickt!'); if k = 2 then ShowMessage('Button 2 wurde geklickt!'); // Beispiel 2 if Form2.ShowModal = 1 then begin ShowMessage('Button 1 wurde geklickt!'); end; end;
Der Wert, den wir ModalResult in den ButtonClick-Prozeduren zuweisen, ist der Rückgabewert des ShowModal-Aufrufs. Gleichzeitig wird die Form automatisch geschlossen, sobald wir ModalResult auf einen anderen Wert als Null setzen.
Im Beispiel setzen wir in Form2 mit Button1 ModalResult auf 1 und mit Button2 auf 2. Damit können wir später im Code der Form1 feststellen, welcher Button auf Form2 gedrückt wurde und zeigen für unser Beispiel entsprechende Meldungen an.
ModalResult-Buttons
Neben dieser Methode, können wir aber auch beliebigen Buttons direkt ein Standard-ModalResult zuweisen. Dafür kennen die Buttons die Eigenschaft "ModalResult", die wir (zum Beispiel über den Objektinspektor) beispielsweise auf mrOK, mrCancel, mrYes oder mrNo setzen können.
Wenn wir einen Button derartig präpariert haben, können wir das Ergebnis folgendermaßen abfragen:
if Form2.ShowModal = mrOk then begin ShowMessage('Der Button mit mrOk wurde geklickt!'); end;
Falls also ein Nutzer auf den Button mit der Eigenschaft ModalResult = mrOK geklickt hat, schließt sich die jeweilige Form automatisch und gibt uns automatisch mrOk als Result zurück. Und das ohne dass wir noch andere Eigenschaften an dem Button ändern müssten oder dem Button irgendein Event oder Code zuweisen müssten. Zusätzlich erkennen wir am Rückgabewert von ShowModal, dass der Nutzer genau diesen Button geklickt hat.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
Delphi: Event Reihenfolge einer Form - Von OnCreate bis OnDestroy
Info | 1 Kommentar
Windows Batch Script: Computer herunterfahren
Tutorial | 2 Kommentare
Chinesisches Horoskop: Tierkreiszeichen und Elemente
Info | 0 Kommentare
Delphi/Lazarus: "Wollen Sie wirklich beenden?"-Dialog beim Schließen einer Form anzeigen
Info | 0 Kommentare
Delphi/Lazarus: Byte Array als String aus HEX-Werten anzeigen
Tipp | 0 Kommentare
Lazarus: Datei als Byte-Array laden und Byte-Array als Datei speichern
Tutorial | 0 Kommentare
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
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.