1. 程式人生 > >Inno Setup入門(十八)——Inno Setup類參考(4)

Inno Setup入門(十八)——Inno Setup類參考(4)

編輯框

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

TEdit = class(TCustomEdit)

property AutoSelect: Boolean; read write;

property AutoSize: Boolean; read write;

property BorderStyle: TBorderStyle; read write;

property CharCase: TEditCharCase; read write;

property Color: TColor; read write;

property Font: TFont; read write;

property HideSelection: Boolean; read write;

property MaxLength: Integer; read write;

property PasswordChar: Char; read write;

property ReadOnly: Boolean; read write;

property Text: String; read write;

property OnChange: TNotifyEvent; read write;

property OnClick: TNotifyEvent; read write;

property OnDblClick: TNotifyEvent; read write;

property OnKeyDown: TKeyEvent; read write;

property OnKeyPress: TKeyPressEvent; read write;

property OnKeyUp: TKeyEvent; read write;

end;

該類的層次模型如下:

下面的程式碼將演示建立編輯框,以及編輯框的Text屬性:

[setup]

AppName=Test

AppVerName=TEST

DefaultDirName="E:\TEST"

AppVersion=1.0

[files]

Source: "F:\desktop\Inno\ipmsg.exe";Flags:dontcopy

[code]

var

myPage:TwizardPage;

myBtn:TButton;

ed1,ed2,ed3:TEdit;

procedure ClickmyBtn(Sender: TObject);

begin

ed3.Text:=ed1.Text+' '+ed2.Text;

end;

procedure InitializeWizard();

begin

myPage:=CreateCustomPage(wpWelcome, '標題:自定義頁面', '描述:這是我的自定義頁面');

myBtn:=TButton.Create(myPage);

myBtn.Parent:=myPage.Surface;

myBtn.Caption:='點我~';

myBtn.OnClick:[email protected];

ed1:=TEdit.Create(myPage);

ed1.Parent:=myPage.Surface;

ed1.Top:=myBtn.Top+30;

ed1.Width:=myBtn.Width;

ed2:=TEdit.Create(myPage);

ed2.Parent:=myPage.Surface;

ed2.Top:=ed1.Top+30;

ed2.Width:=myBtn.Width;

ed3:=TEdit.Create(myPage);

ed3.Parent:=myPage.Surface;

ed3.Top:=ed2.Top+30;

ed3.Width:=myBtn.Width;

end;

屬性Text用於設定或獲取文字框中的內容,注意不管是設定還是獲取,引數一定必須是String的型別,執行效果如下:

如果是想實現兩個數的代數運算,而不是字串的拼接,則按鈕的OnClick過程應該做如下修改:

procedure ClickmyBtn(Sender: TObject);

var

a,b:Extended;

begin

a:=StrToFloat(ed1.Text);

b:=StrToFloat(ed2.Text);

ed3.Text:=FloatToStr(a+b);

end;

StrToFloatFloatToStr分別實現字串轉實數,實數轉字串。在第一、第二個文字框中輸入數值後,點選按鈕將第三個文字框中的內容設定為兩數的和。下面再說說其他的屬性。修改程式碼段如下:

[code]

var

myPage:TwizardPage;

myBtn:TButton;

ed1,ed2,ed3:TEdit;

a,b,c:String;

procedure ClickmyBtn(Sender: TObject);

begin

a:=ed1.Text;

b:=ed2.Text;

c:=a+b;

ed3.Text:=c;

end;

procedure InitializeWizard();

begin

myPage:=CreateCustomPage(wpWelcome, '標題:自定義頁面', '描述:這是我的自定義頁面');

myBtn:=TButton.Create(myPage);

myBtn.Parent:=myPage.Surface;

myBtn.Caption:='點我~';

myBtn.OnClick:[email protected];

ed1:=TEdit.Create(myPage);

ed1.Parent:=myPage.Surface;

ed1.Top:=myBtn.Top+30;

ed1.Width:=myBtn.Width;

ed1.CharCase:=ecUpperCase;{大寫}

ed1.ShowHint:=True;

ed1.Hint:='字母將會變為大寫';

ed2:=TEdit.Create(myPage);

ed2.Parent:=myPage.Surface;

ed2.Top:=ed1.Top+30;

ed2.Width:=myBtn.Width;

ed2.PasswordChar:='#';{密碼樣式}

ed3:=TEdit.Create(myPage);

ed3.Parent:=myPage.Surface;

ed3.Top:=ed2.Top+30;

ed3.Width:=myBtn.Width*2;

ed3.ReadOnly:=true;{只讀}

end;

上面介紹了四個屬性:CharCase將設定文字顯示的格式,可以有三個值:(ecNormal, ecUpperCase, ecLowerCase,分別為正常方式,大寫方式,小寫方式;PasswordChar屬性將輸入的文字替換為制定的樣式;ReadOnly屬性將使得該文字框不接受使用者輸入;HintShowHint屬性是使用者的滑鼠停留在該文字框上時,給出相應的提示文字,注意只有在ShowHint設定為True的時候才會顯示。

另外,編輯框也能對一些事件做出相應,例如單擊、雙擊,文字內容發生變化等,實現起來和按鈕的差不錯,這裡就不再囉嗦了。最後需要介紹的是三個處理按鍵的屬性: OnKeyDownOnKeyPressOnKeyUp

這三個屬性是當用戶游標停留在該文字框中時,當用戶按下了鍵盤上的某個鍵時,會呼叫該屬性指定的過程,測試程式碼如下:

[code]

var

myPage:TwizardPage;

ed:TEdit;

procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (key=67) and (Shift=[ssAlt]) then

Msgbox('你按下了Alt+c',MBInformation,MB_OK);

end;

procedure InitializeWizard();

begin

myPage:=CreateCustomPage(wpWelcome, '標題:自定義頁面', '描述:這是我的自定義頁面');

ed:=TEdit.Create(myPage);

ed.Parent:=myPage.Surface;

ed.OnKeyDown:[email protected];

end;

在編輯框中輸入時,使用者按下Alt+C組合時,將會做出響應,彈出一個訊息框,這樣可以對我們感興趣的按鍵組合做出相應的動作,例如我們想遮蔽貼上這項功能,則修改程式碼如下:

procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (key=86) and (Shift=[ssCtrl]) then

Msgbox('貼上無效,請手動輸入',MBInformation,MB_OK);

ed.text:='';

end;

不過這裡要說明的是,這還不能遮蔽右鍵貼上,只是遮蔽了Ctrl+V的方式。另外兩個按鍵屬性和這裡介紹的KeyDown差不多,可對照測試一下。

相關推薦

Inno Setup入門——Inno Setup參考4

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

Inno Setup入門——Inno Setup參考6

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

Inno Setup入門——Inno Setup參考5

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

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

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

Python爬蟲從入門到放棄之 Scrapy爬取所有知乎用戶信息(上)

user 說過 -c convert 方式 bsp 配置文件 https 爬蟲 爬取的思路 首先我們應該找到一個賬號,這個賬號被關註的人和關註的人都相對比較多的,就是下圖中金字塔頂端的人,然後通過爬取這個賬號的信息後,再爬取他關註的人和被關註的人的賬號信息,然後爬取被關註人

Redis入門到高可用——Redis Sentinel

tin In red edi info height 技術 wid sent 一、Redis Sentinel架構 Redis入門到高可用(十八)——Redis Sentinel

C語言入門之指標、字串、函式

如何利用指標運算元組 int ages[3] = {1, 3 , 5}; ages[0] = 998; printf("ages[0] = %i\n", ages[0]); int *p = ages; // int *p = &a

java多執行緒快速入門

Lock鎖是JDK1.5之後推出的併發包裡面的關鍵字(注意捕獲異常,釋放鎖) Lock與synchronized的區別   Lock鎖可以人為的釋放鎖(相當於汽車中的手動擋)   synchronized當執行緒執行完畢或者丟擲異常的話,鎖自動釋放(相當於汽車中的自動擋) Condition用法  

java多線程快速入門

user static 的區別 con als sync ack pack exceptio Lock鎖是JDK1.5之後推出的並發包裏面的關鍵字(註意捕獲異常,釋放鎖) Lock與synchronized的區別   Lock鎖可以人為的釋放鎖(相當於汽車中的手動擋)   

Spring Boot 初級入門教程 —— 整合 MyBatis 另外一種開發方式

在前面兩篇文章《Spring Boot 初級入門教程(十五) —— 整合 MyBatis》和《Spring Boot 初級入門教程(十七) —— 通過 Oracle 資料庫測試已整合 MyBatis(附原始碼)》中,介紹瞭如何在 SpringBoot 中整合 MyBatis 以及通過 MySQL

python 入門之 – 資料字典

通過標題名稱可以知道,字典是用來查詢資料的,它是以 key 和 value 的形式存在的,在學習資料字典之前我來用幾個例子說明一下,如: info = [ ['張三',21,'男','程式設計師'], ['李四',18,'女','設計師'], ['王五',26,'

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

程序,執行緒,並行和併發 一個應用程式是執行在機器上的一個程序;程序是一個執行在自己記憶體地址空間裡的獨立執行體。一個程序由一個或多個作業系統執行緒組成,這些執行緒其實是共享同一個記憶體地址空間的一起工作的執行體。幾乎所有’正式’的程式都是多執行緒的,以便讓使

Unity Shader入門精要筆記:透明度混合

本系列文章由Aimar_Johnny編寫,歡迎轉載,轉載請標明出處,謝謝。 前面章節介紹過,透明度混合是實現了真正的半透效果。它會以當前片元透明度作為混合因子,與已經儲存在顏色緩衝區中的顏色進行混合,得到新的顏色。同時要關掉深度寫入,小心物體的渲染順序。 為了進行

Python爬蟲從入門到放棄之 Scrapy爬取所有知乎使用者資訊(上)

本文出自“python修行路”部落格,http://www.cnblogs.com/zhaof/p/7215617.html爬取的思路首先我們應該找到一個賬號,這個賬號被關注的人和關注的人都相對比較多的,就是下圖中金字塔頂端的人,然後通過爬取這個賬號的資訊後,再爬取他關注的人和被關注的人的賬號資訊,然後爬取被

Python 爬蟲從入門到進階之路

在之前的文章我們通過 scrapy 框架 及 scrapy.Spider 類做了一個《糗事百科》的糗百爬蟲,本章我們再來看一下相較於 scrapy.Spider 類更為強大的 CrawlSpider 類。 CrawlSpider 是Spider的派生類,Spider 類的設計原則是隻爬取start_url列

Apache Flink 零基礎入門Flink windows和Time操作

Time型別 在Flink中常用的Time型別: 處理時間 攝取時間 事件時間 處理時間 是上圖

Spring Boot入門系列整合mybatis,使用註解的方式實現增刪改查

之前介紹了Spring Boot 整合mybatis 使用xml配置的方式實現增刪改查,還介紹了自定義mapper 實現複雜多表關聯查詢。雖然目前 mybatis 使用xml 配置的方式 已經極大減輕了配置的複雜度,支援 generator 外掛 根據表結構自動生成實體類、配置檔案和dao層程式碼,減輕很大一

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

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

Python

地址 聯網 ren 英雄 eth 參數 攻擊 聲明 機制 一 什麽是面向對象的程序設計及為什麽要有它 面向過程的程序設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麽時候處理什麽東西。 優點是:極大的降低了程序的復

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

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