AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erhalte falsches modalResult

Ein Thema von delphicoder123 · begonnen am 28. Feb 2019 · letzter Beitrag vom 1. Mär 2019
 
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Erhalte falsches modalResult

  Alt 1. Mär 2019, 10:04
Code:
  TForm1 = class(TForm)
    btnOK: TButton;
    btnAbbrechen: TButton;
    procedure btnOKClick(Sender: TObject);
    procedure btnAbbrechenClick(Sender: TObject);
    function modalErgebnis(): String;
    procedure FormActivate(Sender: TObject);
  end;

...

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;
  • Wenn man auf die Variable des Forms (bei dir Form1) innerhalb der Form-Unit direkt zugreift, kann das in manchen Fällen Probleme geben. Ich würde an deiner Stelle lieber Self. statt Form1. verwenden oder den Namen komplett weglassen. Aus anderen Units z. B. Unit2 musst du natürlich Form1. voranstellen um auf das Form1 aus Unit1 zuzugreifen können.
  • Wie old7 schon geschrieben hat, muss natürlich das Form via ShowModal aufgerufen werden damit du an ModalResult rankommst (Rückgabe-Wert von ShowModal).
  • Du musst das ModalResult bei den Buttons nicht zwangsläufig im Code setzen. Du kannst einfach die ModalResult-Eigenschaft des Buttons im Objekt-Inspector festlegen. Bei einem Klick wird das ModalResult automatisch übergeben.
  • Wenn du mehrere Buttons hast mit jeweils unterschiedlichen ModalResults kannst du die Auswertung mit Case statt If machen.

Delphi-Quellcode:
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;
Der Else-Zweig ist Optional.
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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