• Inno Setup入门(十九)——Inno Setup类参考(5)


    单选按钮

    单选按钮在安装中也很常见,例如同一个程序可以选择安装不同的性质的功能,例如选择32位或者64位等,两者是排他性的,因此可以通过单选按钮(RadioButton)来实现,在同一个容器中放置的单选按钮是自动带有排他性的,Pascal脚本中单选按钮的定义如下:

    TRadioButton = class(TButtonControl)

      property Alignment: TAlignment; read write;

      property Caption: String; read write;

      property Checked: Boolean; read write;

      property Color: TColor; read write;

      property Font: TFont; read write;

      property OnClick: TNotifyEvent; read write;

      property OnDblClick: TNotifyEvent; read write;

    end;

    其继承关系如下图:

     

    可见和按钮的层次模型是一样的,事实上,RadioButtonButton并没有太大的区别。唯一的区别是单选按钮的排他性。

    下面的代码将在自定义向导页上添加一个文本框和两个单选按钮:

     

    [setup]

    AppName=Test

    AppVerName=TEST

    DefaultDirName="E:TEST"

    AppVersion=1.0

    [files]

    Source: "F:desktopInnoipmsg.exe";Flags:dontcopy

    [code]

    var

           myPage:TwizardPage;

           radio1,radio2:TRadioButton;

           lbl:TLabel;

           font:TFont;

    {radio1的事件响应过程}

    procedure ClickRadio1(Sender: TObject);

    begin

           lbl.Font.Color:=clRed;

    end;

    {radio2的事件响应过程}

    procedure ClickRadio2(Sender: TObject);

    begin

           lbl.Font.Color:=clBlue;

    end;

    procedure InitializeWizard();

    begin

           myPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');

           lbl:=TLabel.Create(myPage);

           lbl.Parent:=myPage.Surface;

           lbl.Caption:='改变单选按钮的选项,我就会变色';

           radio1:=TRadioButton.Create(myPage);

           radio1.Parent:=myPage.Surface;

           radio1.Caption:='红色';

           radio1.Top:=lbl.Top+20;

           font:=TFont.Create();

           font.Color:=clRed;

           radio1.Font:=font;

           radio1.OnClick:=@ClickRadio1;

           radio2:=TRadioButton.Create(myPage);

           radio2.Parent:=myPage.Surface;

           radio2.Caption:='蓝色';

           radio2.Top:=radio1.Top+20;

           font.Color:=clBlue;

           radio2.Font:=font;

           radio2.OnClick:=@ClickRadio2;

    end;

    该段代码中重点是单选按钮的OnClick事件,该属性所指向的过程决定了单选按钮被点击后的行为,安装文件运行到自定义页面后效果如下:

           或许有人会问,如何在有多组不同的选项中做出选择呢?例如一边选择颜色,一边选择字体大小?对于这个问题,传统上Delphi是通过添加控件类TGroupBox来实现的,但是这个类在Pascal脚本是不支持的,所以Delphi中的方法行不通。虽然传统方法不行,并不代表Inno就无能为力了,最简单的方法就是创建两个页面,一个页面处理一种选项,另一个页面处理另一种选项(因此这里用前面的例子并不太好,主要是用来阐述单选按钮的使用),等用户都选完了之后,再统一执行。另外一种方法是使用其他控件,例如列表框(ListBox)。

  • 相关阅读:
    ubuntu下libjson-c库的使用问题备忘
    SAX PULL解析实例
    C# 自己定义 implicit和explicit转换
    游戏行业创业分析
    【kotlin】long转化为date类型 或者date字符串
    【kotlin】报错 Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type List<String>?
    【spring boot】注解@ApiParam @PathVariable @RequestParam三者区别
    【Mybatis】 Mybatis在xml文件中处理大于号小于号的方法【问题】
    【hql】spring data jpa中 @Query使用hql查询 问题
    【IntelliJ IDEA】2017.3.4版本永久破解
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5751882.html
Copyright © 2020-2023  润新知