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.