zoukankan      html  css  js  c++  java
  • 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)。

  • 相关阅读:
    基于element-ui图片封装组件
    计算时间间隔具体每一天
    C语言学习笔记 —— 函数作为参数
    AtCoder Beginner Contest 049 题解
    AtCoder Beginner Contest 048 题解
    AtCoder Beginner Contest 047 题解
    AtCoder Beginner Contest 046 题解
    AtCoder Beginner Contest 045 题解
    AtCoder Beginner Contest 044 题解
    AtCoder Beginner Contest 043 题解
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5751882.html
Copyright © 2011-2022 走看看