1. 程式人生 > >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;

其繼承關係如下圖:

可見和按鈕的層次模型是一樣的,事實上,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:[email protected];

radio2:=TRadioButton.Create(myPage);

radio2.Parent:=myPage.Surface;

radio2.Caption:='藍色';

radio2.Top:=radio1.Top+20;

font.Color:=clBlue;

radio2.Font:=font;

radio2.OnClick:[email protected];

end;

該段程式碼中重點是單選按鈕的OnClick事件,該屬性所指向的過程決定了單選按鈕被點選後的行為,安裝檔案執行到自定義頁面後效果如下:

或許有人會問,如何在有多組不同的選項中做出選擇呢?例如一邊選擇顏色,一邊選擇字型大小?對於這個問題,傳統上Delphi是通過新增控制元件類TGroupBox來實現的,但是這個類在Pascal指令碼是不支援的,所以Delphi中的方法行不通。雖然傳統方法不行,並不代表Inno就無能為力了,最簡單的方法就是建立兩個頁面,一個頁面處理一種選項,另一個頁面處理另一種選項(因此這裡用前面的例子並不太好,主要是用來闡述單選按鈕的使用),等使用者都選完了之後,再統一執行。另外一種方法是使用其他控制元件,例如列表框(ListBox)。

相關推薦

Inno Setup入門——Inno Setup參考5

單選按鈕 單選按鈕在安裝中也很常見,例如同一個程式可以選擇安裝不同的性質的功能,例如選擇32位或者64位等,兩者是排他性的,因此可以通過單選按鈕(RadioButton)來實現,在同一個容器中放置的單選按鈕是自動帶有排他性的,Pascal指令碼中單選按鈕的定義如下: T

Inno Setup入門——Inno Setup參考6

儲存框 儲存框也是典型的視窗視覺化元件,同編輯框類似,可以輸入、顯示文字,但是和編輯框不同的是,編輯框只能編輯、顯示單行文字,而儲存框則可以對多行文字進行操作。儲存框的類定義如下:< xmlnamespace prefix ="o" ns ="urn:schema

Inno Setup入門——Inno Setup參考4

編輯框 編輯框也叫文字框,是典型的視窗視覺化元件,既可以用來輸入文字,也可以用來顯示文字,是程式設計中最常用的元件之一,可以獲取使用者輸入的許多資訊。Pascal中的編輯框由類Tedit實現,該類的定義如下: TEdit = class(TCustomEdit) pro

Inno Setup入門二十三——Inno Setup參考9

bar per win rst gre mar posit osi code 今天就簡單說一下ProgressBar。 TNewProgressBar = class(TWinControl) property Min: Longint; read write;

C語言入門之結構體

太晚了(11點半了),明天繼續結構體 陣列: 是用於儲存一組相同型別的資料 結構體: 是用於儲存一組不同型別的資料 // 1.定義結構體型別 struct Person { // char name[20]; char *name;

python 入門之 – 集合型別

在 python 中,集合是一個無序的,不重複的資料組合,他的主要工作如下: 1、去重,把一個列表變成集合,就自動去重了 2、關係測試,測試兩組資料之間的交集、差集、並集等關係 我來舉個例子,前兩個月出了 iPhoneXS ,去年出了 iPhoneX,我現在想知道有多少人不僅去年買了 i

Golang從入門到精通:Golang併發程式設計之Channel

Go語言併發模型 Go 語言中使用了CSP模型來進行執行緒通訊,準確說,是輕量級執行緒goroutine之間的通訊。CSP模型和Actor模型類似,也是由獨立的,併發執行的實體所構成,實體之間也是通過傳送訊息進行通訊的。 Actor模型和CSP模型區別 A

VS2013/MFC程式設計入門常用控制元件:靜態文字框

       從本節開始講解各種常用控制元件的用法。MFC中常用控制元件主要包括:靜態文字框、編輯框、單選按鈕、複選框、分組框、列表框、組合框、圖片控制元件、列表控制元件、樹形控制元件和進度條控制元件等等。本節先來講解靜態文字框的使用。        控制元件的通知訊息

ionic入門教程第課-ionic路由詳解state、route、resolve

今天好好的跟大家講講ionic的路由配置。 問到的朋友有點多,因為這個內容比較多,所以我一直想等我多瞭解一些再出關於路由的教程。 但是有些很簡單的也有朋友不理解,所以我就提前出了這篇教程。 希望能對大家有點幫助,關於我遺漏的部分,後面再發教程補充吧。 但是基本的內容,簡單的

Unity Shader入門精要筆記:雙面渲染的透明效果

本系列文章由Aimar_Johnny編寫,歡迎轉載,轉載請標明出處,謝謝。 前面文章介紹了透明度測試和透明度混合,基本滿足了透明的效果需求,但嚴格來說,現實中透明除了能看到後面物體的樣子,也應該能看到透明物體內部的樣子,但前面的方法我們都看不到其內部結構,這是因為預

Java 從入門到進階之路

在之前的文章我們介紹了一下 Java 中的Object,本章我們來看一下 Java 中的包裝類。 在 Java 中有八個基本型別:byte,short,int,long,float,double,char,boolean,是以值的形式存在的,所以他們並沒有面向物件的特徵,自然也不繼承自 Object,所以不能

Spring Boot入門系列整合mybatis,使用註解實現動態Sql、引數傳遞等常用操作!

前面介紹了Spring Boot 整合mybatis 使用註解的方式實現資料庫操作,介紹瞭如何自動生成註解版的mapper 和pojo類。 接下來介紹使用mybatis 常用註解以及如何傳引數等資料庫操作中的常用操作。 其實,mybatis 註解方式 和 XML配置方式兩者的使用基本上相同,只有在構建 SQL

聊聊高並發理解並發編程的幾種&quot;性&quot; -- 可見性,有序性,原子性

sock clas 關註 條件 infoq zed 應該 單獨 ssa 這篇的主題本應該放在最初的幾篇。討論的是並發編程最基礎的幾個核心概念。可是這幾個概念又牽扯到非常多的實際技術。比方Java內存模型。各種鎖的實現,volatile的實現。原子變量等等,每個都可以展開

Scala入門到精通——第二二節 高級

www 不同 out not cloneabl etag new 創建方式 技術分享 作者:搖擺少年夢 視頻地址:http://www.xuetuwuyou.com/course/12 本節主要內容 this.type使用 類型投影 結構類型

安裝命令

配置文件 軟件包 import 認證 安裝命令:yum,rpm19.1.rpm功能:rpm軟件包管理器常用選項:-ivh 安裝軟件包-Uvh 升級軟件包,如果原來軟件包不存在則安裝-Fvh 升級軟件包,如果原來的軟件包不存在則停止升級-e 卸載軟件包--nodeps 忽略依

Scala入門到精通——第二四節 高級

func double tor 結構體 入門到精通 strac 命令 person 字節碼 作者:擺擺少年夢 視頻地址:http://blog.csdn.net/wsscy2004/article/details/38440247 本節主要內容

selenium測試Java--截圖

int tput apache [] catch take screens umt ott package com.test.screenshot; import java.io.File; import java.io.IOException; import org

Python學習筆記

插入 imp 集合類 屬性 counter 以及 雙向 ror 簡單的 一、collections介紹   collections是Python中內建的一個集合模塊,提供了許多有用的集合類 二、namedtuple   namedtuple是一個函數,用來創建一個類似類的自

Linux系列教程——Linux文件系統管理之手工分區

image u盤 true 掛載 但是 常用 選項 光盤 幫助   上篇博客我們首先介紹了硬盤為什麽要分區,以及Linux系統的幾種分區類型,然後介紹了Linux系統幾個常用的文件系統命令,最後講解了掛載命令,並通過實例演示了如何掛載光盤和U盤。   本篇博客我們將介紹l

Linux命令 查看系統負載 uptime

time 長時間 連接 時間間隔 過大 post 依次 查看 local 一、命令介紹 Linux 系統中 uptime 命令主要用於獲取主機運行時長和查詢Linux系統負載等信息。 uptime 命令可以顯示系統已經運行了多長時間,信息顯示依次為:現在時間、系統已經運行時