![]() |
Erhalte falsches modalResult
Hallo,
nach dem Klick auf den Ok bzw. Abbrechen Button möchte ich als Result mrOK bzw. mrCancel erhalten. Was ist an meinem Code falsch? Ich erhalte gleich beim Starten des Programms die Meldung "False". Beim Klicken auf die Buttons aber keine Meldung.
Code:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) btnOK: TButton; btnAbbrechen: TButton; procedure btnOKClick(Sender: TObject); procedure btnAbbrechenClick(Sender: TObject); function modalErgebnis(): String; procedure FormActivate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btnOKClick(Sender: TObject); begin Form1.ModalResult:=mrOk; end; procedure TForm1.FormActivate(Sender: TObject); begin ShowMessage( modalErgebnis() ); end; procedure TForm1.btnAbbrechenClick(Sender: TObject); begin Form1.ModalResult:=mrCancel; end; function TForm1.modalErgebnis(): String; begin if Form1.ModalResult=mrOk then begin result:='OK'; end else if Form1.ModalResult=mrCancel then begin result:='Abbrechen'; end else begin result:='False'; end; end; end. |
AW: Erhalte falsches modalResult
Liste der Anhänge anzeigen (Anzahl: 1)
Du brauchst mindestens zwei Formulare :wink:
Das 1. ruft das 2. mit ShowModal auf und wertet das Ergebnis des Aufrufs aus. Siehe angehängte Mini-Demo für Delphi7. Im 2. Formular ist Alles über den OI eingestellt. |
AW: Erhalte falsches modalResult
Angesichts deiner Fragen wäre es interessant zu erfahren, was du tatsächlich vor hast.
In
Delphi-Quellcode:
ist Sender immer die auslösende Komponente, auch wenn du diese Ereignisbehandlungsprozedur zusätzlich noch Button2, Button3,..,ButtonX zuweisen würdest.
procedure TForm1.Button1Click(Sender: TObject);
Delphi-Quellcode:
ergibt dann z.B. die Beschriftung des jeweils gedrückten Buttons. Oder die Eigenschaft "Tag" der Komponenten, eine beliebige Ganzzahl, die man zu solchen Identifizierungen auch nutzen kann.
(Sender as TButton).Caption
|
AW: Erhalte falsches modalResult
Zitat:
|
AW: Erhalte falsches modalResult
Nö... Alles funktioniert...
|
AW: Erhalte falsches modalResult
Du hast im Ereignis „OnActivate“ ja weder mrOk noch mrCancel als ModalResult definiert, daher erscheint logischerweise „false“ als Ausgabe.
|
AW: Erhalte falsches modalResult
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Erhalte falsches modalResult
delphicoder123: Ich lege Dir aufgrund Deiner Fragen dringend nahe, eine Einführung in die Programmierung mit Delphi zu lesen. Z.B. folgendes freies eBook:
![]() Sherlock |
AW: Erhalte falsches modalResult
Zitat:
Delphi-Quellcode:
Der Else-Zweig ist Optional.
procedure TForm1.Button1Click(Sender: TObject);
begin case Form2.ShowModal of begin mrOK: ShowMessage('OK gedrückt'); mrCancel: ShowMessage('Abbrechen gedrückt'); mrYes: ShowMessage('Ja gedrückt'); mrNo: ShowMessage('Nein gedrückt'); ... end else ShowMessage('Ein ModalResult wurde zurückgegeben das nicht im Case steht!'); end; |
AW: Erhalte falsches modalResult
Zitat:
Noch was: Die gängige Konvention für modale Dialoge ist, dass der OK-Button die Default-Eigenschaft auf true gesetzt hat, während der Cancel-Button die Cancel-Eigenschaft auf True gesetzt hat. Damit kann der Benutzer einfach die Return/Enter-Taste benutzen, um den OK-Button auszulösen, bzw. die ESC-Taste, um den Cancel-Button auszulösen, und zwar auch, wenn keiner der Buttons gerade den Fokus hat. Das geht nur dann nicht, wenn das Control mit Fokus diese Tasten selbst bearbeitet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz