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:
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;
Statt nur eines Wertes kann man natürlich beliebig viele als Parameter übergeben.
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.');