In my Delphi Project i want to have a \'Settings\' button that when clicked, opens a second form (i think this is the correct term, i essentially want a new window to open)
I usually design the settings form and add a class function execute to it, that changes a record containing fields for the settings like this:
Tf_MySettings = class(TForm)
// ...
private
procedure SetData(const _Settings: TSettingsRec);
procedure GetData(out _Settings: TSettingsRec);
public
class function Execute(_Owner: TComponent; var _Settings: TSettingsRec): boolean;
end;
implementation
function Tf_MySettings.Execute(_Owner: TComponent; var _Settings: TSettingsRec): boolean;
var
frm: Tf_MySettings;
begin
frm := Tf_MySettings.Create(_Owner);
try
frm.SetData(_Settings);
// for this to work, the OK button must have ModalResult=mrOK
Result := frm.ShowModal = mrOK;
if Result then
frm.GetData(_Settings);
finally
frm.Free;
end;
end;
procedure Tf_MySettings.SetData(const _Settings: TMySettingsRec);
begin
ed_Name.Text := _Settings.Name;
// ...
end;
procedure Tf_MySettings.GetData(out _Settings: TMySettingsRec);
begin
_Settings.Name := ed_Name.Text;
// ...
end;
You call it like this:
if Tf_MySettings.Execute(self, _Settings) then begin
// settings have been changed
end;