2017-08-17 17 views
0

私はいくつかの異なるライセンスページにチェックボックスを付けました。チェックボックスがオフの場合は、Nextボタンを無効にする必要があります。チェックボックスの状態が変更された場合に使用できるイベントはありますか?ここでの1の私のコードは、このNSIS:StateChangedのカスタムページ

var Window 
var labelDescription 
var checkBoxIsUserAgree 

Function CreateCustomLicense1 
    nsDialogs::Create 1018 
    Pop $Window 

    GetDlgItem $0 $HWNDPARENT 
    EnableWindow $0 0 
    ${NSD_CreateLabel} 13u 22u 270u 96u "Description" 
    Pop $labelDescription 
    ${NSD_CreateCheckBox} 10u 110u 100u 15u "I Agree" 
    $checkBoxIsUserAgree 
FunctionEnd 

Function ShowCustomLicence1 
    Call CreateCustomLicense1 
    nsDialogs::Show 
Function 

Function .oncheckBoxIsUserAgreeStateChanged ; what event I can use for track checkbox state changing 
EnableWindow $0 1 
FunctionEnd 
+0

実際にコンパイルするコードを投稿すると役立ちます。ドキュメントを最初に読むことは良いアイデアかもしれません... – Anders

+0

@アンダー私はドキュメントで答えを見つけることを試みますが、私は間違った何かを探していました。グローバルページのために.onSelectedChangedのようなものでなければならないと思った。 $ {NSD _...}を関数として使うことができるとは想像もできませんでした。どうも! – user2455111

+1

NSD_はヘルパーマクロで、nsDialogs :: xyzを呼び出すものもあります。 – Anders

答えて

1

チェックボックスがNSISライセンスページサポートを内蔵し、複数回使用することができますが、カスタムページを作成する上で主張すればあなただけのon*ハンドラを追加する必要があります。

!include nsDialogs.nsh 

Var checkBoxIsUserAgree 

Function ShowCustomLicence1 
    nsDialogs::Create 1018 
    Pop $1 

    GetDlgItem $0 $HWNDPARENT 1 
    EnableWindow $0 0 
    ${NSD_CreateLabel} 13u 22u 270u 90u "Description" 
    Pop $1 
    ${NSD_CreateCheckBox} 10u 110u 100u 15u "I Agree" 
    Pop $checkBoxIsUserAgree 
    ${NSD_OnClick} $checkBoxIsUserAgree oncheckBoxIsUserAgreeStateChanged1 

    nsDialogs::Show 
FunctionEnd 


Function oncheckBoxIsUserAgreeStateChanged1 
    Pop $1 ; Throw away parameter 
    ${NSD_GetState} $checkBoxIsUserAgree $1 
    EnableWindow $0 $1 
FunctionEnd 

Page Custom ShowCustomLicence1 
Page InstFiles 
関連する問題