如果在 Inno Setup 中没有选择组件,如何禁用下一步按钮?
How to disable Next button if no component is selected in Inno Setup?
我有三个组件,如果用户 select 任何组件,它都会进行安装。现在,如果用户没有 select 任何组件,我想禁用“下一步”按钮。
我正在尝试 if not IsComponentSelected('xxx')
,但它不起作用。谁能帮帮我??
没有简单的方法可以在组件选择更改时更新 Next 按钮状态。
一种更简单的方法是在单击 下一步 按钮时显示一条消息:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpSelectComponents then
begin
if WizardSelectedComponents(False) = '' then
begin
MsgBox('No component selected', mbInformation, MB_OK);
Result := False;
end;
end;
end;
如果您坚持禁用 下一步 按钮,请使用:
var
TypesComboOnChangePrev: TNotifyEvent;
procedure ComponentsListCheckChanges;
begin
WizardForm.NextButton.Enabled := (WizardSelectedComponents(False) <> '');
end;
procedure ComponentsListClickCheck(Sender: TObject);
begin
ComponentsListCheckChanges;
end;
procedure TypesComboOnChange(Sender: TObject);
begin
{ First let Inno Setup update the components selection }
TypesComboOnChangePrev(Sender);
{ And then check for changes }
ComponentsListCheckChanges;
end;
procedure InitializeWizard();
begin
WizardForm.ComponentsList.OnClickCheck := @ComponentsListClickCheck;
{ The Inno Setup itself relies on the WizardForm.TypesCombo.OnChange, }
{ so we have to preserve its handler. }
TypesComboOnChangePrev := WizardForm.TypesCombo.OnChange;
WizardForm.TypesCombo.OnChange := @TypesComboOnChange;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectComponents then
begin
ComponentsListCheckChanges;
end;
end;
要了解为什么这么小的任务需要这么多代码,请参阅
我有三个组件,如果用户 select 任何组件,它都会进行安装。现在,如果用户没有 select 任何组件,我想禁用“下一步”按钮。
我正在尝试 if not IsComponentSelected('xxx')
,但它不起作用。谁能帮帮我??
没有简单的方法可以在组件选择更改时更新 Next 按钮状态。
一种更简单的方法是在单击 下一步 按钮时显示一条消息:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpSelectComponents then
begin
if WizardSelectedComponents(False) = '' then
begin
MsgBox('No component selected', mbInformation, MB_OK);
Result := False;
end;
end;
end;
如果您坚持禁用 下一步 按钮,请使用:
var
TypesComboOnChangePrev: TNotifyEvent;
procedure ComponentsListCheckChanges;
begin
WizardForm.NextButton.Enabled := (WizardSelectedComponents(False) <> '');
end;
procedure ComponentsListClickCheck(Sender: TObject);
begin
ComponentsListCheckChanges;
end;
procedure TypesComboOnChange(Sender: TObject);
begin
{ First let Inno Setup update the components selection }
TypesComboOnChangePrev(Sender);
{ And then check for changes }
ComponentsListCheckChanges;
end;
procedure InitializeWizard();
begin
WizardForm.ComponentsList.OnClickCheck := @ComponentsListClickCheck;
{ The Inno Setup itself relies on the WizardForm.TypesCombo.OnChange, }
{ so we have to preserve its handler. }
TypesComboOnChangePrev := WizardForm.TypesCombo.OnChange;
WizardForm.TypesCombo.OnChange := @TypesComboOnChange;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectComponents then
begin
ComponentsListCheckChanges;
end;
end;
要了解为什么这么小的任务需要这么多代码,请参阅