Две радиогруппы в диалоге NSIS - PullRequest
0 голосов
/ 09 июня 2018

У меня есть диалоговая страница в установщике NSIS, на которой я хочу иметь 2 группы переключателей, с 3 переключателями в каждой группе.

Каждая группа независима, и выбор необходим в обеих группах..

У меня есть следующий код, который показывает, что 2 группы создаются с 3 кнопками в каждой, но при запуске установщика все 6 кнопок группируются как 1 группа, что означает, что я могу выбрать только 1 из 6, а не 1из 3 кнопок в каждой группе.

Function settingsTypePageCreate
   nsDialogs::Create 1018
   pop $0

   ; Radio Group 1

   ${NSD_CreateGroupBox} 0 0 100% 40u "Select Method for specifying file locations"    
   Pop $1
   ${NSD_CreateRadioButton} 0 10% 100% 15u "Use Environment Variable."
   pop $2
   ${NSD_CreateRadioButton} 0 25% 100% 15u "Use central config file."
   pop $3
   ${NSD_CreateRadioButton} 0 40% 100% 15u "Use default %USERPROFILE%."
   pop $4

   ; Radio Group 2

   ${NSD_CreateGroupBox} 0 60% 100% 40u "Select location folder"    
   Pop $5
   ${NSD_CreateRadioButton} 0 70% 100% 15u "%APPDATA%"
   pop $6
   ${NSD_CreateRadioButton} 0 80% 100% 15u "%USERPROFILE%"
   pop $7
   ${NSD_CreateRadioButton} 0 90% 100% 15u "PROGRAMDATA"
   pop $8

   nsDialogs::Show
FunctionEnd

Кроме того, я не могу найти где-нибудь описание того, как параметры положения и размера для NSD_Create.Я должен сделать это методом проб и ошибок.

1 Ответ

0 голосов
/ 09 июня 2018

Стиль WS_GROUP используется для создания сгруппированных элементов управления:

WS_GROUP Указывает первый элемент управления группы элементов управления , в котором пользователь может перейти от одногопереход к следующему с помощью клавиш со стрелками.Все элементы управления, определенные с FALSE в стиле WS_GROUP после первого элемента управления, принадлежат к одной группе.Следующий элемент управления со стилем WS_GROUP начинает следующую группу (то есть одна группа заканчивается там, где начинается следующая).

!include nsDialogs.nsh

Function settingsTypePageCreate
   nsDialogs::Create 1018
   pop $0

   ; Radio Group 1
   ${NSD_CreateGroupBox} 0 0 100% 50u "Select Method for specifying file locations"    
   Pop $0
   ${NSD_CreateRadioButton} 5u 12u 70% 12u "Use Environment Variable."
   pop $2
   ${NSD_AddStyle} $2 ${WS_GROUP}
   ${NSD_CreateRadioButton} 5u 24u 70% 12u "Use central config file."
   pop $3
   ${NSD_CreateRadioButton} 5u 36u 70% 12u "Use default %USERPROFILE%."
   pop $4

   ; Radio Group 2
   ${NSD_CreateGroupBox} 0 60u 100% 50u "Select location folder"    
   Pop $0
   ${NSD_CreateRadioButton} 5u 72u 70% 12u "%APPDATA%"
   pop $6
   ${NSD_AddStyle} $6 ${WS_GROUP}
   ${NSD_CreateRadioButton} 5u 84u 70% 12u "%USERPROFILE%"
   pop $7
   ${NSD_CreateRadioButton} 5u 96u 70% 12u "PROGRAMDATA"
   pop $8

   nsDialogs::Show
FunctionEnd

Page Custom settingsTypePageCreate
Page InstFiles

Измерения описаны в документации nsDialogs :

Каждое измерение, которое выполняет макрос, может использовать один из трех типов единиц измерения - пиксели, диалоговые единицы или процент от размера диалога.Это может также быть отрицательным, чтобы указать, что это должно быть измерено от конца.Для использования диалоговых единиц измерения необходимо добавить суффикс с буквой u.Чтобы использовать процент, к измерению должен быть добавлен знак процента -%.Любой другой суффикс или отсутствие суффикса означает пиксели.

Диалоговые единицы позволяют создавать диалоговые окна, которые хорошо масштабируются, когда используются разные шрифты или DPI.Его размер в пикселях определяется во время выполнения на основе шрифта и DPI.

...