注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

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

2011-03-01 19:51:34|  分类: Inno Setup |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

单选按钮

单选按钮在安装中也很常见,例如同一个程序可以选择安装不同的性质的功能,例如选择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;

其继承关系如下图:

 

Inno Setup入门(十九)——Inno Setup类参考(5) - Castor - 趁年轻,多折腾~~

 

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

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

[setup]

AppName=Test

AppVerName=TEST

DefaultDirName="E:\TEST"

AppVersion=1.0

[files]

Source: "F:\desktop\Inno\ipmsg.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事件,该属性所指向的过程决定了单选按钮被点击后的行为,安装文件运行到自定义页面后效果如下:

Inno Setup入门(十九)——Inno Setup类参考(5) - Castor - 趁年轻,多折腾~~

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

  评论这张
 
阅读(4332)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016