1

テキスト ボックスを含むカスタム ダイアログ ページがあります。ユーザーが「次へ」ボタンを押したときに、インストールを続行できるようにする前に、テキスト ボックスにテキストがあることを確認したいと考えています。

これはどのように行うことができますか?検証が失敗した場合に nsDialogsPage を呼び出す nsDialogsPageLeave にチェックを追加しようとしましたが、これは機能しません...ページの下部にあるボタンは、リロード後にアクティブになりません。

Var Dialog
Var Text
Var Text_State

Page custom nsDialogsPage nsDialogsPageLeave



Function nsDialogsPage

nsDialogs::Create 1018
Pop $Dialog

${If} $Dialog == error
    Abort
${EndIf}

${NSD_CreateText} 0 0 50% 12u $Text_State
Pop $Text

nsDialogs::Show

FunctionEnd



Function nsDialogsPageLeave

${NSD_GetText} $Text $Text_State

FunctionEnd
4

1 に答える 1

3

私がこの状況に対処した方法は、leave 関数のテキストを検証して、コードが次のようになるようにすることです。

Function nsDialogsPage

    nsDialogs::Create 1018
    Pop $Dialog

    ${If} $Dialog == error
        Abort
    ${EndIf}

    ${NSD_CreateText} 0 0 50% 12u $Text_State
    Pop $Text

    nsDialogs::Show

FunctionEnd

Function nsDialogsPageLeave

    ${NSD_GetText} $Text $Text_State

    ${If} $Text_State == ""
        MessageBox MB_OK "Please enter some text"
        Abort
    ${EndIf}

FunctionEnd

このようにして、ユーザーは [次へ] ボタンをクリックできますが、テキストが入力されていない場合はエラー メッセージが表示され、[中止] によってインストーラーが次のページに移動するのが停止します。

于 2011-10-06T17:43:07.140 に答える