私は以下を実行しようとします。コンポーネントリスト項目にアクセスし、そのインデックスで無効にしたり、チェックを外したりします。[Components]
セクションの順番から0から始まる数字は何ですか。 fixed
フラグのないアイテム(この場合のような)は、デフォルトで有効になっているため、条件が満たされていないかどうかを確認する必要があります。また、この記事のcommented version
を確認することがあります。
[Components]
Name: Component1; Description: Component 1
Name: Component2; Description: Component 2
Name: Component3; Description: Component 3
[code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectComponents then
if not SomeCondition then
begin
WizardForm.ComponentsList.Checked[1] := False;
WizardForm.ComponentsList.ItemEnabled[1] := False;
WizardForm.ComponentsList.Checked[2] := False;
WizardForm.ComponentsList.ItemEnabled[2] := False;
end;
end;
上記溶液は、少なくとも一つの弱点を持っています。 ComponentsList.Sorted
をTrueに設定すると、インデックスは[Components]
セクションの元の注文からシャッフルされることがあります。
を使用しない場合は、上記のコードを使用すれば十分でしょう。はいの場合は、より複雑です。
コンポーネント名(各項目のItemObject
には内部でTSetupComponentEntry
オブジェクトとして保存されています)を取得する簡単な方法はありませんが、説明のみですので、項目インデックスが異なる点指定された説明で検索されています。
procedure CurPageChanged(CurPageID: Integer);
var
Index: Integer;
begin
if CurPageID = wpSelectComponents then
if not SomeCondition then
begin
Index := WizardForm.ComponentsList.Items.IndexOf('Component 2');
if Index <> -1 then
begin
WizardForm.ComponentsList.Checked[Index] := False;
WizardForm.ComponentsList.ItemEnabled[Index] := False;
end;
Index := WizardForm.ComponentsList.Items.IndexOf('Component 3');
if Index <> -1 then
begin
WizardForm.ComponentsList.Checked[Index] := False;
WizardForm.ComponentsList.ItemEnabled[Index] := False;
end;
end;
end;
こんにちは、*グレーアウトオプションを選択する*コンポーネント選択リストで無効にすることを意味しますか? – TLama
TLama:そうですね、それはまさに私が意味することです。しかし、条件が真であれば、インストールのためにそれらを選択できるはずです。 – user1320880