2016-06-17 40 views

答えて

3

いいえ、Inno Setupはマルチカラム(チェック)リストボックスをサポートしていません。


しかし、あなただけで簡単に3つの別々のチェックリストボックスで、「追加タスクの選択」ページを標準のルックアンドフィールを持つカスタムページを実装することができます。その後、あなたはFilesが好きセクションにカスタムタスクをバインドする代わりにTasks parameterCheck parameterを使用することができ、Iconsなど

[Files] 
Source: "FileForSubTask_0_1.txt"; DestDir: "{app}"; Check: GetCustomTask(0, 1); 
Source: "FileForSubTask_0_2.txt"; DestDir: "{app}"; Check: GetCustomTask(0, 2); 
... 

[Code] 

var 
    CustomSelectTasksPage: TWizardPage; 
    TasksLists: array of TNewCheckListBox; 

const 
    TaskColumns = 3; 

procedure InitializeWizard(); 
var 
    TasksList: TNewCheckListBox; 
    I, GapWidth: Integer; 
begin 
    CustomSelectTasksPage := 
    CreateCustomPage(
     wpSelectTasks, SetupMessage(msgWizardSelectTasks), SetupMessage(msgSelectTasksDesc)); 

    SetArrayLength(TasksLists, TaskColumns); 

    GapWidth := ScaleX(16); 

    for I := 0 to TaskColumns - 1 do 
    begin 
    TasksList := TNewCheckListBox.Create(WizardForm); 
    TasksList.Width := 
     (CustomSelectTasksPage.SurfaceWidth - (GapWidth * (TaskColumns - 1))) div 
     TaskColumns; 
    TasksList.Left := I * (TasksList.Width + GapWidth); 
    TasksList.Top := 0; 
    TasksList.Height := WizardForm.InnerNotebook.Height - ScaleY(8); 

    TasksList.BorderStyle := bsNone; 
    TasksList.Color := clBtnFace; 
    TasksList.ShowLines := False; 
    TasksList.MinItemHeight := ScaleY(22); 
    TasksList.ParentColor := True; 
    TasksList.WantTabs := True; 

    TasksList.Parent := CustomSelectTasksPage.Surface; 

    TasksLists[I] := TasksList; 
    end; 

    TasksLists[0].AddCheckBox('TASK 0:0', '', 0, False, True, False, False, nil); 
    TasksLists[0].AddCheckBox('Subtask 0:1', '', 1, False, True, False, False, nil); 
    TasksLists[0].AddCheckBox('Subtask 0:2', '', 1, False, True, False, False, nil); 

    TasksLists[1].AddCheckBox('TASK 1:0', '', 0, False, True, False, False, nil); 
    TasksLists[1].AddCheckBox('Subtask 1:1', '', 1, False, True, False, False, nil); 
    TasksLists[1].AddCheckBox('Subtask 1:2', '', 1, False, True, False, False, nil); 

    TasksLists[2].AddCheckBox('TASK 2:0', '', 0, False, True, False, False, nil); 
    TasksLists[2].AddCheckBox('Subtask 2:1', '', 1, False, True, False, False, nil); 
    TasksLists[2].AddCheckBox('Subtask 2:2', '', 1, False, True, False, False, nil); 
end; 


function GetCustomTask(ListIndex: Integer; TaskIndex: Integer): Boolean; 
begin 
    Result := TasksLists[ListIndex].Checked[TaskIndex]; 
end; 

Custom tasks page

+0

ありがとうございました:) –

関連する問題