代码之家  ›  专栏  ›  技术社区  ›  TenG

NSI对话中的两个无线电组

  •  0
  • TenG  · 技术社区  · 7 年前

    我在一个NSI安装程序中有一个对话页面,我想在上面有两个单选按钮组,每组有三个单选按钮。

    每个组都是独立的,两个组都需要选择。

    我有下面的代码,它显示了两个组正在创建,每个组有三个按钮,但是当安装程序运行时,所有6个按钮都被分组为一个组,这意味着我只能从6中选择1,而不是从每个组的3个按钮中选择1。

    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_的位置和大小参数如何创建的描述。我不得不反复尝试。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Anders    7 年前

    WS_GROUP

    WS_GROUP Specifies the first control of a group of controls WS-U组 第一个控件属于同一组后的Style false。下一个控件 WS-U组 Style启动下一个组(即,一个组在下一个组开始的位置结束)。

    !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 documentation 以下内容:

    宏所进行的每个测量都可以使用三种单位类型中的一种-像素, dialog units 或对话框大小的百分比。也可以是负值,表示应从末端开始测量。若要使用对话单位,度量值必须加上字母U的后缀。若要使用百分比,度量值必须加上百分比符号-%的后缀。任何其他后缀,或没有后缀,表示像素。

    对话框单元允许创建在使用不同字体或dpi时缩放良好的对话框。其像素大小在运行时根据字体和dpi确定。