2016-03-05 3 views
1
[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's solution в InnoSetup: How to add line break into component description, но это результат в List index out of bounds(0), поскольку, как видите, задача отображается условно в моем скрипте.Inno Setup - измените цвет ярлыка описания задачи и разделите его на разрыв

ответ

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).

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

+0

Да, я уже пробовал это. Наверное, я просто задам новый вопрос. Цвет очень важен. –