2017-08-17 1 views
0

Ich habe ein paar verschiedene Lizenzseiten mit Kontrollkästchen darauf. Die Schaltfläche Next sollte deaktiviert sein, wenn das Kontrollkästchen deaktiviert ist. Gibt es ein Ereignis, das ich verwenden kann, wenn sich das Kontrollkästchen geändert hat? Hier ist mein Code eines dieserNSIS: Benutzerdefinierte Seite auf 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

Es hilft, wenn Sie Code schreiben, der tatsächlich kompiliert! Das Lesen der Dokumentation könnte auch eine gute Idee sein ... – Anders

+0

@Anders Ich versuche in der Dokumentation eine Antwort zu finden, aber ich habe etwas falsch gemacht. Ich dachte, es sollte etwas wie .onSelectedChanged für die globale Seite sein. Ich könnte mir nicht vorstellen, dass ich $ {NSD _...} als Funktion verwenden kann. Danke! – user2455111

+1

NSD_ sind Hilfsmakros, einige rufen nur nsDialogs :: xyz ... – Anders

Antwort

1

Der eingebaute in NSIS Lizenzseite unterstützt eine Checkbox und kann mehrfach verwendet werden, aber wenn Sie auf Erstellen einer benutzerdefinierten Seite beharren Sie nur einen on* Handler hinzufügen müssen:

!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 
Verwandte Themen