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

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;

其继承关系如下图:
在这里插入图片描述
可见和按钮的层次模型是一样的,事实上,RadioButton和Button并没有太大的区别。唯一的区别是单选按钮的排他性。

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

[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事件,该属性所指向的过程决定了单选按钮被点击后的行为,安装文件运行到自定义页面后效果如下:
在这里插入图片描述
或许有人会问,如何在有多组不同的选项中做出选择呢?例如一边选择颜色,一边选择字体大小?对于这个问题,传统上Delphi是通过添加控件类TGroupBox来实现的,但是这个类在Pascal脚本是不支持的,所以Delphi中的方法行不通。虽然传统方法不行,并不代表Inno就无能为力了,最简单的方法就是创建两个页面,一个页面处理一种选项,另一个页面处理另一种选项(因此这里用前面的例子并不太好,主要是用来阐述单选按钮的使用),等用户都选完了之后,再统一执行。另外一种方法是使用其他控件,例如列表框(ListBox)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值