2017-01-03 31 views
1

私はそれがコード化するのは簡単だと思ったが、実際にはTNewCheckListBoxのチェックボックスとチェックボックスのチェックされていない値を取り戻すという問題に直面しているという事実がある。Inno Setup TNewCheckListBoxのチェックボックスまたはラジオボタンの値を取得する方法は?

NextButtonClickイベントで簡単にアクセスできるように、グローバルインスタンスとしてチェックボックスとラジオボタンを設定しようとしました。

しかし、私は

はPROCを呼び出すことができませんでした取得このサンプル・テストインチここではうまくいかない何

[Code] 
var 
    PageChoixComposants: TWizardPage; 
    CB1, CB2: TNewCheckBox; 
    OB1, OB2: TNewRadioButton; 

procedure InitializeWizard; 
var 
    CheckListBox: TNewCheckListBox; 
begin 
    PageChoixComposants := CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TNewCheckListBox'); 

    CheckListBox := TNewCheckListBox.Create(PageChoixComposants); 
    CheckListBox.Width := PageChoixComposants.SurfaceWidth; 
    CheckListBox.Height := ScaleY(97); 
    CheckListBox.Flat := True; 
    CheckListBox.Parent := PageChoixComposants.Surface; 
    CB1 := CheckListBox.AddCheckBox('CB1', '', 0, True, True, False, True, nil); 
    OB1 := CheckListBox.AddRadioButton('CB1 OB1', '', 1, True, True, nil); 
    OB2 := CheckListBox.AddRadioButton('CB1 OB2', '', 1, False, True, nil); 
    CB2 := CheckListBox.AddCheckBox('CB2', '', 0, True, True, False, True, nil); 
end; 

////////////////////////////////////////////////////////////////////// 
function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    if (CurPageID=PageChoixComposants.ID) then 
    begin  
     if CB1.Checked = True then 
     begin 
      MsgBox('CB1 checked', mbInformation, MB_OK); 
     end; 
    end; 
    Result := True; 
end; 

////////////////////////////////////////////////////////////////////// 

?あなたの返信用
おかげで;)

答えて

0

AddCheckBoxAddRadioButton方法は、ないTNewCheckBox/TNewRadioButtonInteger返します。

コードがコンパイルされるのは驚くべきことです。コンパイラの不足のように見えます。

返される数値は、チェックボックス/ラジオボタンのインデックスを表します。 TNewCheckListBox.Checked(または.State)プロパティと共にインデックスを使用して、チェックボックス/ラジオボタンの状態を照会します。

正しいコードは次のとおりです。

var 
    PageChoixComposants: TWizardPage; 
    CheckListBox: TNewCheckListBox; 
    CB1, CB2: Integer; 
    OB1, OB2: Integer; 

procedure InitializeWizard; 
begin 
    PageChoixComposants := 
    CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TNewCheckListBox'); 

    CheckListBox := TNewCheckListBox.Create(PageChoixComposants); 
    CheckListBox.Width := PageChoixComposants.SurfaceWidth; 
    CheckListBox.Height := ScaleY(97); 
    CheckListBox.Flat := True; 
    CheckListBox.Parent := PageChoixComposants.Surface; 
    CB1 := CheckListBox.AddCheckBox('CB1', '', 0, True, True, False, True, nil); 
    OB1 := CheckListBox.AddRadioButton('CB1 OB1', '', 1, True, True, nil); 
    OB2 := CheckListBox.AddRadioButton('CB1 OB2', '', 1, False, True, nil); 
    CB2 := CheckListBox.AddCheckBox('CB2', '', 0, True, True, False, True, nil); 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    if CurPageID = PageChoixComposants.ID then 
    begin  
    if CheckListBox.Checked[CB1] then 
    begin 
     MsgBox('CB1 checked', mbInformation, MB_OK); 
    end; 
    end; 
    Result := True; 
end; 
+0

ええ、それはそれはあなたに感謝です! 私はこのコードを使用して自分で解決策を見つけました:私はちょうど方法その事実を逃した ... [0]、その後 CheckListBox.Checked場合しかし、私はそれがより良い名前のインスタンス参照「CB1」などを維持見つけます整数を返しました。 – BenDev

関連する問題