Проверьте ввод текстового поля перед продолжением - PullRequest
1 голос
/ 06 октября 2011

У меня есть настраиваемая диалоговая страница, которая содержит текстовое поле. Когда пользователь нажимает кнопку «Далее», я хочу убедиться, что в текстовом поле есть текст, прежде чем продолжить установку.

Как это можно сделать? Я попытался добавить проверку в nsDialogsPageLeave, где я вызываю nsDialogsPage, если проверка не удалась, но это не работает ... кнопки внизу страницы не активны после перезагрузки.

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

1 Ответ

3 голосов
/ 06 октября 2011

То, как я справился с этой ситуацией, заключается в проверке текста в функции выхода так, чтобы ваш код стал:

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

Таким образом, пользователь может нажать кнопку «Далее», но он получит сообщение об ошибке, если текст не был введен, и прерывание прекратит переход установщика на следующую страницу.

...