Inno Setup - измените цвет метки описания задачи и сделайте разрыв строки

[Components]
Name: "Slasher"; Description: "Dagon Slasher"; Types: Slasher Full
Name: "Frankenstein"; Description: "Dagon Frankenstein"; Types: Frankenstein Full

[Types]
Name: "Full"; Description: "Dagon Video Tools"
Name: "Slasher"; Description: "Dagon Slasher"
Name: "Frankenstein"; Description: "Dagon FrankenStein"

[Tasks]
Name: "Debug"; Description: "Debug. Warning: This will result in a non-functional ""Join in FrankenStein"" button in the Tools Menu."; Components: not Slasher
Name: "Vid"; Description: "Install Extra Codecs for Frankenstein"; Flags: unchecked; Components: not Slasher

я нуждаюсь Warning: This will result in... отображаться в новой строке и красным шрифтом. Я нашел решение TLama в InnoSetup: как добавить разрыв строки в описании компонента, но это приводит к List index out of bounds(0) поскольку, как видите, задача отображается в моем сценарии условно.

1 ответ

Решение

Если вы попытаетесь обновить TasksList в InitializeWizard, вы должны получить исключение, так как в этот момент TasksList еще не заполнен, независимо от того, являются ли задачи условными или нет.

TasksList заполняется только после перехода на страницу "Выбор дополнительных задач".

Таким образом, вам нужно обновить заголовок задачи только в CurPageChanged(wpSelectTasks), И тесты для not IsComponentSelected('Slasher') прежде чем сделать это (см. комментарий в коде для деталей).

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectTasks then
  begin
    { This has to be kept in sync with the expression in "Components" parameter }
    { of the respective task. Though note that in your specific case the test }
    { is redundant as when "Slasher" is selected, you have no tasks, }
    { and the "Tasks" page is completely skipped, so you do not even get  here. }
    if not IsComponentSelected('Slasher') then
    begin
      WizardForm.TasksList.ItemCaption[0] :=
        'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed id' + #13#10 +
        'venenatis erat, ac vehicula sapien. Etiam convallis ligula eros,' + #13#10 +
        'in ullamcorper turpis pulvinar sit amet.';
    end;
  end;
end;

Я уверен, что нет способа изменить цвет одной конкретной задачи. Все, что вы можете сделать, это создать отдельный TNewCheckListBox для каждой группы задач, которые должны иметь разные цвета (и установить цвет, используя .Font.Color имущество).


Если вы хотите узнать больше об этом, вам следует задать отдельный вопрос. Разрыв строки и цвет - это две разные проблемы.

Смотрите также похожий вопрос: Отключите элементы управления на основе выбора компонентов в Inno Setup.

Другие вопросы по тегам