Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
KSE KSE вне форума

Новый участник


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

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


Отписываю.

Я хотел сделать так, чтобы до выбора одного из вариантов кнопка "далее" была неактивна.
После выбора варианта - активировать кнопку "далее". При нажатии кнопки далее осуществлялся переход на ту или иную страницу в зависимости от выбора.
Проблему решил след. образом

Код: Выделить весь код
...
; Мои две custom страницы
Page custom configurring
Page custom configmaster
...
переменные и т.д.
...

Function configurring
StrCpy $Reservefiles "0" ; По умолчанию файлы не резервируются

!insertmacro MUI_HEADER_TEXT "Мастер кофигурирования параметров" ""
nsDialogs::Create 1018
        Pop $Dialog1
	${If} $Dialog1 == error
	Abort
	${EndIf}
	
             ; Деактивация кнопки далее, и тот и тот вариант работает.
	;GetDlgItem $0 $HWNDPARENT 1
	;EnableWindow $0 0
	EnableWindow $mui.Button.Next 0
	
   	${NSD_CreateRadioButton} 0 0 100% 10u "&Запустить мастер кофигурирования параметров (рекомендуется)"
	Pop $Confmaster
        ${NSD_OnClick} $Confmaster confway
        ${NSD_CreateLabel} 17 10u 100% 20u "&С помощью ....."
        Pop $Description

	${NSD_CreateRadioButton} 0 36u 100% 10u "&Сконфигурировать по умолчанию"
	Pop $Confdefault
        ${NSD_OnClick} $Confdefault confway
        ${NSD_CreateLabel} 17 46u 100% 10u "&Все настройки будут установлены по умолчанию."
        Pop $Description

	${NSD_CreateRadioButton} 0 65u 100% 10u "&Не изменять конфигурацию"
	Pop $Confstay
	${NSD_OnClick} $Confstay confway
	${NSD_CreateLabel} 17 75u 100% 10u "&Все параметры и файлы конфигурации будут оставлены без изменений."
        Pop $Description
        
        ${NSD_CreateCheckBox} 0 98u 100% 10u "&Сделать резервную копию игры."
        Pop $Reserve
        ${NSD_OnClick} $Reserve Reserve
        ${NSD_CreateLabel} 17 108u 100% 100% "&Предыдущая версия игры будет скопирована в папку backup. В случае деинсталяции данного пачта все файлы и ключи будут востановлены."
        Pop $Description
	
	nsDialogs::Show

FunctionEnd

Function confway
	Pop $Confmaster
	${NSD_GetState} $Confmaster $0
	Pop $Confdefault
	${NSD_GetState} $Confdefault $1
	Pop $Confstay
	${NSD_GetState} $Confstay $2
	${If} $0 == 1
	EnableWindow $mui.Button.Next 1
	StrCpy $master "1"
	${EndIf}
	${If} $1 == 1
	EnableWindow $mui.Button.Next 1
	StrCpy $master "2"
	${EndIf}
	${If} $2 == 1
	EnableWindow $mui.Button.Next 1
	StrCpy $master "3"
	${EndIf}
FunctionEnd

Function Reserve
Pop $Reserve
${NSD_GetState} $Reserve $3
	${If} $3 == 1
	StrCpy $Reservefiles "1"
	EnableWindow $mui.Button.Next 0
        ${Else}
        StrCpy $Reservefiles "0"
        EnableWindow $mui.Button.Next 0
	${EndIf}
FunctionEnd

Function configmaster
IntCmp $master 1 Goto 0 0 ; Если переменная $master равно 1, то перейти к .. и т.д.
Abort
Goto:
!insertmacro MUI_HEADER_TEXT "&Мастер кофигурирования параметров" ""
nsDialogs::Create 1018
Pop $Dialog2
${If} $Dialog2 == error
Abort
${EndIf}

	EnableWindow $mui.Button.Next 0
	
	; Выбор монитора (заголовок)
	${NSD_CreateLabel} 0 0 220u 10u "....."
.....
Конечно я выбрал немного инной способ
я использовал logiclib и nsDialogs


K.A.V.
Насчет моего предыдущего поста я не сильно понял, как

StrCmp $mon "1" 0 +4
StrCmp $2 "1" 0 +3
StrCmp $R1 "1" 0 +2
StrCpy $freq "60"
такой код может быть проще? Как я уже говорил, таких вот столбиков

${If} $mon == 1
${AndIf} $2 == 1
${AndIf} $R1 == 1
StrCpy $freq "60"
${EndIf}

У меня будет очень много! Где то 90!

Какая может быть замена такому варианту. Так как он выглядит убедительней, но работать не хочет.
Код: Выделить весь код
${If} $mon == 1
       ${If} $2 == 1
              ${If} $R1 == 1
              StrCpy $freq "60"
              ${EndIf}
              ${If} $R2 == 1
              StrCpy $freq "75"
              ${EndIf}
       ${EndIf}
       {If} $3 == 1
              ${If} $R1 == 1
              StrCpy $freq "65"
              ${EndIf}
              ${If} $R2 == 1
              StrCpy $freq "85"
              ${EndIf}
       ${EndIf}
${ElseIf} $mon == 2
       ${If} $2 == 1
              ${If} $R1 == 1
              StrCpy $freq "55"
              ${EndIf}
              ${If} $R2 == 1
              StrCpy $freq "45"
              ${EndIf}
       ${EndIf}
       ${If} $3 == 1
              ${If} $R1 == 1
              StrCpy $freq "35"
              ${EndIf}
              ${If} $R2 == 1
              StrCpy $freq "25"
              ${EndIf}
       ${EndIf}
${EndIf}

Последний раз редактировалось KSE, 24-12-2009 в 17:03.


Отправлено: 16:53, 24-12-2009 | #240