![]() |
Formular soll beim Schließen ein Wert zurückgeben
Hallo zusammen,
wie schaffe ich es, dass beim Schließen des zweiten Formulars, ein Wert(z.B. string) an das erste Formular übergeben wird? Wenn möglich, ohne globale oder public Variablen zu verwenden. Wäre nett, wenn ihr mir eine ausführliche Antwort geben könntet, da ich noch Anfänger bin und manchmal Verständnisprobleme habe. Vielen Dank |
AW: Formular soll beim Schließen ein Wert zurückgeben
Was spricht für diesen Anwendungsfall denn gegen ein öffentliches Feld?
Code:
...
public // in Form2 FVariable: string; ...
Code:
Alternativ kannst Du auch eine dritte unit nehmen, in der die Datenhaltung in einem eigenen Objekt gemacht wird. Kommt wie so oft auf den Anwendungsfall an und ob es wirklich nur eine Variable ist oder ein Dutzend.
// in Form1 der Aufruf
Form2:=TForm2.Create(self); try if Form2.ShowModal = mrOK then begin ShowMessage(Form2.FVariable); end; finally Form2.free end; |
AW: Formular soll beim Schließen ein Wert zurückgeben
Ich füge für solche Fälle (also Dialoge, die immer modal angezeigt werden und (geänderte) Werte zurückliefern), eine public class function Execute hinzu:
Delphi-Quellcode:
Statt nur eines Wertes kann man natürlich beliebig viele als Parameter übergeben.
class function TMyDialog.Execute(_Owner: TWinControl; var _SomeValue: integer): boolean;
var frm: TMyDialog; begin frm := TMyDialog.Create(_Owner); try TForm_CenterOn(frm, _Owner); frm.SetData(_SomeValue); Result := (frm.ShowModal = mrOK); if Result then frm.GetData(_SomeValue); finally FreeAndNil(frm); end; end; Dazu kommen dann noch jeweils die .SetData und .GetData Methoden mit passenden const bzw. out Parametern. Die setzen die Controls entsprechend der Werte bzw. lesen die Werte aus den Controls aus. Aufruf dann mit
Delphi-Quellcode:
if TMyDialog.Execute(Self, SomeValue) then
WriteLn('Wert wurde auf ', SomeValue, ' gesetzt.'); |
AW: Formular soll beim Schließen ein Wert zurückgeben
Zitat:
Wäre es auch irgendwie mit einer private Variablen möglich? Würde ModalResult := mrCancel oder ModalResult := mrOK etwas bringen? |
AW: Formular soll beim Schließen ein Wert zurückgeben
Zitat:
Delphi-Quellcode:
in Form1 der Aufruf
TForm2 = class(TForm)
private fMyVar:String; public ... property MyVar:string read fMyVar; end;
Delphi-Quellcode:
Du könntest dem property dann auch noch einen Getter und Setter verpassen und darin in Form2 die entsprechenden Controls setzen bzw auslesen.
Form2:=TForm2.Create(self);
try if Form2.ShowModal = mrOK then begin ShowMessage(Form2.MyVar); end; finally Form2.free end; |
AW: Formular soll beim Schließen ein Wert zurückgeben
Zitat:
Delphi-Quellcode:
Wenn du mehr als nur OK und Abbrechen Button hast gehts auch so:
if DeinForm.ShowModal = mrOK then
//OK gedrückt else // anderes ModalResult
Delphi-Quellcode:
var
FormResult: TModalResult; begin FormResult := DeinForm.ShowModal; case FormResult of mrOK: // OK gedrückt; mrYes: // Ja gedrückt; ... end; // Du kannst das case auch um einen Else-Zweig erweitern: FormResult := DeinForm.ShowModal; case FormResult of mrOK: // OK gedrückt; mrYes: // Ja gedrückt; end else // ein anderes modalresult das nicht im case ist... end; |
AW: Formular soll beim Schließen ein Wert zurückgeben
Zitat:
...:cat:... |
AW: Formular soll beim Schließen ein Wert zurückgeben
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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