Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


Цитата BSL:
Загвоздка в том я смогу создать свою страницу, но как научить ее отображать её или нет в зависимости от выбранной секции »
Делается точно также, но с небольшой "модификацией". Нечто подобное делал для себя, вот кусок скрипта:
читать дальше »
Код: Выделить весь код
!include "MUI2.nsh"
!include "dialogs.nsh"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
  !define MUI_PAGE_CUSTOMFUNCTION_SHOW COMPONENTSSHOW
!insertmacro MUI_PAGE_COMPONENTS
  Page custom PortShow PortLeave
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"

ShowInstDetails show
InstallDir "$EXEDIR"
OutFile Test.exe
Caption "Test"

Var Dialog
Var Label
Var Number
Var Port

Section /o "Port" SecPort
  MessageBox MB_OK "Номер выбраннога порта: $Port" ;показываю в качестве примера значение $0
SectionEnd

Function COMPONENTSSHOW ;функция при открытии стр. компонентов
   ${If} ${SectionIsSelected} SecPort ;если выбрана секция
      GetDlgItem $0 $HWNDPARENT 1
      ${NSD_SetText} $0 `$(^NextBtn)` ;переименовываем кнопку
   ${ElseIfNot} ${SectionIsSelected} SecPort ;если не выбрана секция
      GetDlgItem $0 $HWNDPARENT 1
      ${NSD_SetText} $0 `$(^InstallBtn)` ;переименовываем кнопку
   ${EndIf}
FunctionEnd

Function .onSelChange
   ${If} ${SectionIsSelected} SecPort ;если выбрана секция
      GetDlgItem $0 $HWNDPARENT 1
      ${NSD_SetText} $0 `$(^NextBtn)` ;переименовываем кнопку
   ${ElseIfNot} ${SectionIsSelected} SecPort ;если не выбрана секция
      GetDlgItem $0 $HWNDPARENT 1
      ${NSD_SetText} $0 `$(^InstallBtn)` ;переименовываем кнопку
   ${EndIf}
FunctionEnd

Function PortShow
  ${If} ${SectionIsSelected} SecPort ;проверка выбрана ли нужная секция
     nsDialogs::Create 1018
       Pop $Dialog
       ${NSD_CreateLabel} 0 0u 130u 13u "Введите в поле ввода номер порта:"
       Pop $Label
       ${NSD_CreateNumber} 0 13u 40% 13u "" ;ввод только цифры
       Pop $Number
       ${NSD_SetTextLimit} $Number 4 ;лимит на 4 символа
     nsDialogs::Show
  ${EndIf}
FunctionEnd

Function PortLeave
  ${NSD_GetText} $Number $Port ;считываем текст контрола
  StrLen $2 $Port ;считываем количество введенных символов с $Port в $2
  IntCmp $2 4 +2 0 0 ;если меньше или больше 4 символов - возврат назад
  Abort
FunctionEnd

И обязательно все функции, которые работают с секциями, размещать в скрипте после всех секций - для корректного считывания индетификаторов секций.

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:57, 21-02-2011 | #960