Reputation: 19107
In my application I have this settings window:
I had the idea of replicating this window as best as possible in my Inno Setup Installer.
At the moment I have the following code:
procedure pageAutoBackup_Create;
var
{ Controls }
pageAutoBackup: TWizardPage;
btnSelectBackupFolder: TNewButton;
textBackupFolder: TNewEdit;
lblWhereToBackup: TLabel;
lblPromptMode: TLabel;
comboPromptMode: TNewComboBox;
lblReminder: TLabel;
radioBackupModeManual: TNewRadioButton;
radioBackupModeAuto: TNewRadioButton;
lblHowToBackup: TLabel;
radioBackupHowEssential: TNewRadioButton;
radioBackupHowComplete: TNewRadioButton;
radioBackupHowNone: TNewRadioButton;
lblWhatToBackup: TLabel;
begin
pageAutoBackup := CreateCustomPage(wpSelectComponents, 'Automatic Backup', 'Configure automatic backup settings.');
{ lblWhatToBackup (TLabel) }
lblWhatToBackup := TLabel.Create(pageAutoBackup);
lblWhatToBackup.Parent := pageAutoBackup.Surface;
lblWhatToBackup.Enabled := True;
lblWhatToBackup.Visible := True;
lblWhatToBackup.Left := ScaleX(0);
lblWhatToBackup.Top := ScaleY(10);
lblWhatToBackup.Width := ScaleX(100);
lblWhatToBackup.Height := ScaleY(17);
lblWhatToBackup.Font.Color := $000000;
lblWhatToBackup.Color := $F0F0F0;
lblWhatToBackup.Caption := 'What to backup:';
{ radioBackupHowNone (TNewRadioButton) }
radioBackupHowNone := TNewRadioButton.Create(pageAutoBackup);
radioBackupHowNone.Parent := pageAutoBackup.Surface;
radioBackupHowNone.Enabled := True;
radioBackupHowNone.Visible := True;
radioBackupHowNone.Left := ScaleX(10);
radioBackupHowNone.Top := ScaleY(30);
radioBackupHowNone.Width := ScaleX(476);
radioBackupHowNone.Height := ScaleY(18);
radioBackupHowNone.Checked := False;
radioBackupHowNone.Font.Color := $000000;
radioBackupHowNone.Color := $F0F0F0;
radioBackupHowNone.Caption := 'Don''t perform any backup when the program shuts down';
{ radioBackupHowComplete (TNewRadioButton) }
radioBackupHowComplete := TNewRadioButton.Create(pageAutoBackup);
radioBackupHowComplete.Parent := pageAutoBackup.Surface;
radioBackupHowComplete.Enabled := True;
radioBackupHowComplete.Visible := True;
radioBackupHowComplete.Left := ScaleX(10);
radioBackupHowComplete.Top := ScaleY(54);
radioBackupHowComplete.Width := ScaleX(478);
radioBackupHowComplete.Height := ScaleY(19);
radioBackupHowComplete.Checked := False;
radioBackupHowComplete.Font.Color := $000000;
radioBackupHowComplete.Color := $F0F0F0;
radioBackupHowComplete.Caption := 'Make a complete backup when the program shuts down';
{ radioBackupHowEssential (TNewRadioButton) }
radioBackupHowEssential := TNewRadioButton.Create(pageAutoBackup);
radioBackupHowEssential.Parent := pageAutoBackup.Surface;
radioBackupHowEssential.Enabled := True;
radioBackupHowEssential.Visible := True;
radioBackupHowEssential.Left := ScaleX(10);
radioBackupHowEssential.Top := ScaleY(78);
radioBackupHowEssential.Width := ScaleX(472);
radioBackupHowEssential.Height := ScaleY(18);
radioBackupHowEssential.Checked := False;
radioBackupHowEssential.Font.Color := $000000;
radioBackupHowEssential.Color := $F0F0F0;
radioBackupHowEssential.Caption := 'Only make an essential backup when the program shuts down';
{ lblHowToBackup (TLabel) }
lblHowToBackup := TLabel.Create(pageAutoBackup);
lblHowToBackup.Parent := pageAutoBackup.Surface;
lblHowToBackup.Enabled := True;
lblHowToBackup.Visible := True;
lblHowToBackup.Left := ScaleX(0);
lblHowToBackup.Top := ScaleY(110);
lblHowToBackup.Width := ScaleX(100);
lblHowToBackup.Height := ScaleY(17);
lblHowToBackup.Font.Color := $000000;
lblHowToBackup.Color := $F0F0F0;
lblHowToBackup.Caption := 'How to backup:';
{ radioBackupModeAuto (TNewRadioButton) }
radioBackupModeAuto := TNewRadioButton.Create(pageAutoBackup);
radioBackupModeAuto.Parent := pageAutoBackup.Surface;
radioBackupModeAuto.Enabled := True;
radioBackupModeAuto.Visible := True;
radioBackupModeAuto.Left := ScaleX(10);
radioBackupModeAuto.Top := ScaleY(129);
radioBackupModeAuto.Width := ScaleX(481);
radioBackupModeAuto.Height := ScaleY(20);
radioBackupModeAuto.Checked := False;
radioBackupModeAuto.Font.Color := $000000;
radioBackupModeAuto.Color := $F0F0F0;
radioBackupModeAuto.Caption := 'Perform automatically when the program is shut down';
{ radioBackupModeManual (TNewRadioButton) }
radioBackupModeManual := TNewRadioButton.Create(pageAutoBackup);
radioBackupModeManual.Parent := pageAutoBackup.Surface;
radioBackupModeManual.Enabled := True;
radioBackupModeManual.Visible := True;
radioBackupModeManual.Left := ScaleX(10);
radioBackupModeManual.Top := ScaleY(155);
radioBackupModeManual.Width := ScaleX(479);
radioBackupModeManual.Height := ScaleY(19);
radioBackupModeManual.Checked := False;
radioBackupModeManual.Font.Color := $000000;
radioBackupModeManual.Color := $F0F0F0;
radioBackupModeManual.Caption := 'Prompt the user when the program is shut down';
{ lblPromptMode (TLabel) }
lblPromptMode := TLabel.Create(pageAutoBackup);
lblPromptMode.Parent := pageAutoBackup.Surface;
lblPromptMode.Enabled := True;
lblPromptMode.Visible := True;
lblPromptMode.Left := ScaleX(10);
lblPromptMode.Top := ScaleY(190);
lblPromptMode.Width := ScaleX(482);
lblPromptMode.Height := ScaleY(19);
lblPromptMode.Font.Color := $000000;
lblPromptMode.Color := $F0F0F0;
lblPromptMode.Caption := 'Also prompt to backup at the following intervals while the application is running:';
{ comboPromptMode (TNewComboBox) }
comboPromptMode := TNewComboBox.Create(pageAutoBackup);
comboPromptMode.Parent := pageAutoBackup.Surface;
comboPromptMode.Enabled := True;
comboPromptMode.Visible := True;
comboPromptMode.Left := ScaleX(10);
comboPromptMode.Top := ScaleY(207);
comboPromptMode.Width := ScaleX(483);
comboPromptMode.Height := ScaleY(21);
comboPromptMode.Font.Color := $000000;
comboPromptMode.ItemIndex := 0;
comboPromptMode.Color := $FFFFFF;
comboPromptMode.Items.Add('Never prompt to backup');
comboPromptMode.Items.Add('Prompt to backup everyday');
comboPromptMode.Items.Add('Prompt to backup once a week');
comboPromptMode.Items.Add('Prompt to backup once a month');
comboPromptMode.Items.Add('');
{ lblReminder (TLabel) }
lblReminder := TLabel.Create(pageAutoBackup);
lblReminder.Parent := pageAutoBackup.Surface;
lblReminder.Enabled := True;
lblReminder.Visible := True;
lblReminder.Left := ScaleX(20);
lblReminder.Top := ScaleY(236);
lblReminder.Width := ScaleX(481);
lblReminder.Height := ScaleY(23);
lblReminder.Font.Color := $000000;
lblReminder.Color := $F0F0F0;
lblReminder.Caption := '(You should restart the application atleast once a week to let it perform database maintenance)';
{ lblWhereToBackup (TLabel) }
lblWhereToBackup := TLabel.Create(pageAutoBackup);
lblWhereToBackup.Parent := pageAutoBackup.Surface;
lblWhereToBackup.Enabled := True;
lblWhereToBackup.Visible := True;
lblWhereToBackup.Left := ScaleX(0);
lblWhereToBackup.Top := ScaleY(269);
lblWhereToBackup.Width := ScaleX(100);
lblWhereToBackup.Height := ScaleY(15);
lblWhereToBackup.Font.Color := $000000;
lblWhereToBackup.Color := $F0F0F0;
lblWhereToBackup.Caption := 'Where to backup:';
{ textBackupFolder (TNewEdit) }
textBackupFolder := TNewEdit.Create(pageAutoBackup);
textBackupFolder.Parent := pageAutoBackup.Surface;
textBackupFolder.Enabled := True;
textBackupFolder.Visible := True;
textBackupFolder.Left := ScaleX(10);
textBackupFolder.Top := ScaleY(286);
textBackupFolder.Width := ScaleX(400);
textBackupFolder.Height := ScaleY(20);
textBackupFolder.Font.Color := $000000;
textBackupFolder.Color := $F0F0F0;
{ btnSelectBackupFolder (TNewButton) }
btnSelectBackupFolder := TNewButton.Create(pageAutoBackup);
btnSelectBackupFolder.Parent := pageAutoBackup.Surface;
btnSelectBackupFolder.Enabled := True;
btnSelectBackupFolder.Visible := True;
btnSelectBackupFolder.Left := ScaleX(425);
btnSelectBackupFolder.Top := ScaleY(286);
btnSelectBackupFolder.Width := ScaleX(75);
btnSelectBackupFolder.Height := ScaleY(23);
btnSelectBackupFolder.Caption := 'Browse ...';
end;
And this is what it looks like:
My initial question is:
I have two radio groups:
At the moment my radio controls are acting as one big group. How do I make it two distinct radio group modes?
Upvotes: 1
Views: 224
Reputation: 202272
In Windows, radio buttons with the same container control belong to the same group.
If you need separate groups, you have to put the radio buttons to separate container controls. In your application, you solve that by putting them into different group boxes.
The groups boxes are unfortunately not supported by Inno Setup.
Instead, you can use TPanel
control. It can be configured to render completely seamless:
Panel := TPanel.Create(WizardForm);
Panel.Caption := '';
Panel.BevelOuter := bvNone;
Panel.BevelInner := bvNone; { default }
Panel.BevelKind := bkNone;
If you put your radio buttons on separate panels, your custom page can still look exactly like it does.
Another option is to use TNewCheckListBox
with its AddGroup
.
PageAutoBackup := CreateCustomPage(...);
CheckListBox := TNewCheckListBox.Create(WizardForm);
CheckListBox.Parent := PageAutoBackup.Surface;
CheckListBox.Top := WizardForm.SelectTasksLabel.Top;
CheckListBox.Width := WizardForm.TasksList.Width;
CheckListBox.Left := WizardForm.TasksList.Left;
CheckListBox.Height :=
WizardForm.TasksList.Top + WizardForm.TasksList.Height - CheckListBox.Top;
CheckListBox.WantTabs := True;
CheckListBox.Color := clBtnFace;
CheckListBox.BorderStyle := bsNone;
CheckListBox.AddGroup('What to backup:', '', 0, nil);
CheckListBox.AddRadioButton(
'Don''t perform any backup when the program shuts down', '', 0, False, True, nil);
CheckListBox.AddRadioButton(
'Make a complete backup when the program shuts down', '', 0, False, True, nil);
CheckListBox.AddRadioButton(
'Only make an essential backup when the program shuts down', '', 0, False, True, nil);
CheckListBox.AddGroup('How to backup:', '', 0, nil);
CheckListBox.AddRadioButton(
'Perform automatically when the program is shut down', '', 0, False, True, nil);
CheckListBox.AddRadioButton(
'Prompt the user when the program is shut down', '', 0, False, True, nil);
Upvotes: 1