2016-05-17 26 views
2

私は3つのコンポーネントを持っており、ユーザーがコンポーネントを選択すると、インストールが行われます。ユーザーがコンポーネントを選択しない場合は、[次へ]ボタンを無効にします。Inno Setupでコンポーネントが選択されていない場合、[次へ]ボタンを無効にする方法は?

私はif not IsComponentSelected('xxx')を試していますが、動作していません。誰も助けてくれますか?

+0

@ Martin Prikrylあなたは私にこれを助けてくれますか? – preethi

+0

誰も私にこれを行うためのいくつかの他の方法を提案できますか? – preethi

+0

まだ参加していないユーザーに@を使用して通知することはできません。 –

答えて

1

次のボタンの状態をコンポーネント選択の変更で簡単に更新する方法はありません。簡単に

方法はボタンがクリックされたメッセージを表示することです:

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; 

このようなコードが必要な理由を理解するには少し仕事、を参照してくださいInno Setup ComponentsList OnClick event

関連する問題