2017-07-12 7 views
2

タスクの1つがチェックされているときに、別の画像を表示するようにします。例えばタスクが選択されたときに画像を表示する

、私は、3つの異なるタスクを持っている場合:タスク1は、画像を表示する必要がありますチェックされている

Task 1: Standard version 
Task 2: Lite version 
Task 3: Pro version 
  • タスク2をチェックすると、タスク1イメージが非表示になり、タスク2イメージが表示されます。
  • タスク3をチェックすると、他のタスクをタスクイメージの下に隠し、タスク3のイメージを表示する必要があります。ここで

いくつかのコード

[Code] 
{ RedesignWizardFormBegin } { Don't remove this line! } 
{ Don't modify this section. It is generated automatically. } 
var 
    BitmapImage1: TBitmapImage; 

procedure RedesignWizardForm; 
begin 
    { BitmapImage1 } 
    BitmapImage1 := TBitmapImage.Create(WizardForm); 
    with BitmapImage1 do 
    begin 
    Parent := WizardForm.SelectTasksPage; 
    Left := ScaleX(320); 
    Top := ScaleY(88); 
    Width := ScaleX(57); 
    Height := ScaleY(57); 
    ExtractTemporaryFile('WizardForm.BitmapImage1.bmp'); 
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp')); 
    end; 

    with WizardForm.TasksList do 
    begin 
    Width := ScaleX(257); 
    Height := ScaleY(200); 
    Visible := False; 
    end; 
end; 

答えて

1
  • 使用IsTaskSelectedは、タスクが蜂を持っているものを見つけるためにはnが選択されます。
  • ハンドルWizardForm.TasksList.OnClickCheckおよびCurPageChangedは、選択の変更を検出し、それに応じてイメージを更新します。
[Files] 
Source: "lite.bmp"; Flags: dontcopy 
Source: "pro.bmp"; Flags: dontcopy 
Source: "std.bmp"; Flags: dontcopy 

[Tasks] 
Name: std; Description: "Standard version"; Flags: exclusive 
Name: lite; Description: "Lite version"; Flags: exclusive 
Name: pro; Description: "Pro version"; Flags: exclusive 

[Code] 
var 
    BitmapImage1: TBitmapImage; 

procedure UpdateTasksImage; 
var 
    Image: string; 
begin 
    if IsTaskSelected('pro') then Image := 'pro.bmp' 
    else 
    if IsTaskSelected('lite') then Image := 'lite.bmp' 
    else 
    if IsTaskSelected('std') then Image := 'std.bmp' 
    else Image := ''; 

    if Image <> '' then 
    begin 
    ExtractTemporaryFile(Image); 
    BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}\' + Image)); 
    BitmapImage1.Visible := True; 
    end 
    else 
    begin 
    BitmapImage1.Visible := False; 
    end; 
end; 

procedure TasksListClickCheck(Sender: TObject); 
begin 
    { Update image, when task selection changes } 
    UpdateTasksImage; 
end; 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    { Update image, when task page is entered } 
    { (as tasks can be selected by changing setup type or components) } 
    if CurPageID = wpSelectTasks then 
    begin 
    UpdateTasksImage; 
    end; 
end; 

procedure InitializeWizard; 
begin 
    BitmapImage1 := TBitmapImage.Create(WizardForm); 
    with BitmapImage1 do 
    begin 
    Parent := WizardForm.SelectTasksPage; 
    Left := ScaleX(320); 
    Top := ScaleY(88); 
    Width := ScaleX(57); 
    Height := ScaleY(57); 
    end; 

    with WizardForm.TasksList do 
    begin 
    Width := ScaleX(257); 
    Height := ScaleY(200); 
    end; 

    WizardForm.TasksList.OnClickCheck := @TasksListClickCheck 
end; 

enter image description here

enter image description here


あなたの "タスク" は、実際にセットアップの種類や構成部品であることを、私には思えるけど。ユーザーがの組み合わせをの "standard"、 "lite"、および "pro"から選択できることは私には意味がありません。 別名のオプションはありませんか?

+0

はい、そのうちの1つがチェックされている場合は他の2つがチェックされていなければなりません。 – Thebig1825

+0

なぜあなたの質問にチェックボックスを表示するのですか?それらはラジオボタンでなければなりません。また、これらはタスクではなく、セットアップタイプまたはコンポーネントです。 –

+0

とにかく、私はあなたの質問に答えました。 –

0

OnClickCheckイベント追加: 例:

var 
    BitmapImage1: TBitmapImage; 
    BitmapImage2: TBitmapImage; 
    BitmapImage3: TBitmapImage; 

procedure TasksListClickCheck(Sender: TObject); 
begin 
    if (WizardForm.TasksList.Checked[0] = True) then 
    begin 
     BitmapImage1 := TBitmapImage.Create(WizardForm); 
     with BitmapImage1 do 
     begin 
     Parent := WizardForm.SelectTasksPage; 
     Left := ScaleX(320); 
     Top := ScaleY(88); 
     Width := ScaleX(57); 
     Height := ScaleY(57); 

     ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');   
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp')); 
     end; 
    end; 

    if (WizardForm.TasksList.Checked[1] = True) then 
    begin 
     BitmapImage2 := TBitmapImage.Create(WizardForm); 
     with BitmapImage1 do 
     begin 
     Parent := WizardForm.SelectTasksPage; 
     Left := ScaleX(320); 
     Top := ScaleY(88); 
     Width := ScaleX(57); 
     Height := ScaleY(57); 
     ExtractTemporaryFile('WizardForm.BitmapImage2.bmp');   
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage2.bmp')); 
     end; 
    end; 
    if (WizardForm.TasksList.Checked[2] = True) then 
    begin 
     BitmapImage3 := TBitmapImage.Create(WizardForm); 
     with BitmapImage1 do 
     begin 
     Parent := WizardForm.SelectTasksPage; 
     Left := ScaleX(320); 
     Top := ScaleY(88); 
     Width := ScaleX(57); 
     Height := ScaleY(57); 
     ExtractTemporaryFile('WizardForm.BitmapImage3.bmp');   
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage3.bmp')); 
     end; 
    end; 
end; 

procedure InitializeWizard; 
begin   
    WizardForm.TasksList.OnClickCheck := @TasksListClickCheck 

    with WizardForm.TasksList do 
    begin 
     Width := ScaleX(257); 
     Height := ScaleY(200); 
     Visible := True; 
    end; 
end; 
関連する問題