Inno Setup入门(十八)——Inno Setup类参考(4)
分類(lèi): Install Setup 2013-02-02 11:29 406人閱讀 評(píng)論(0) 收藏 舉報(bào)
編輯框
編輯框也叫文本框,是典型的窗口可視化組件,既可以用來(lái)輸入文本,也可以用來(lái)顯示文本,是程序設(shè)計(jì)中最常用的組件之一,可以獲取用戶輸入的許多信息。Pascal中的編輯框由類(lèi)Tedit實(shí)現(xiàn),該類(lèi)的定義如下:
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;
該類(lèi)的層次模型如下:
下面的代碼將演示創(chuàng)建編輯框,以及編輯框的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, '標(biāo)題:自定義頁(yè)面', '描述:這是我的自定義頁(yè)面');
myBtn:=TButton.Create(myPage);
myBtn.Parent:=myPage.Surface;
myBtn.Caption:='點(diǎn)我~';
myBtn.OnClick:=@ClickmyBtn;
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用于設(shè)置或獲取文本框中的內(nèi)容,注意不管是設(shè)置還是獲取,參數(shù)一定必須是String的類(lèi)型,運(yùn)行效果如下:
如果是想實(shí)現(xiàn)兩個(gè)數(shù)的代數(shù)運(yùn)算,而不是字符串的拼接,則按鈕的OnClick過(guò)程應(yīng)該做如下修改:
procedure ClickmyBtn(Sender: TObject);
var
a,b:Extended;
begin
a:=StrToFloat(ed1.Text);
b:=StrToFloat(ed2.Text);
ed3.Text:=FloatToStr(a+b);
end;
StrToFloat和FloatToStr分別實(shí)現(xiàn)字符串轉(zhuǎn)實(shí)數(shù),實(shí)數(shù)轉(zhuǎn)字符串。在第一、第二個(gè)文本框中輸入數(shù)值后,點(diǎn)擊按鈕將第三個(gè)文本框中的內(nèi)容設(shè)置為兩數(shù)的和。下面再說(shuō)說(shuō)其他的屬性。修改代碼段如下:
[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, '標(biāo)題:自定義頁(yè)面', '描述:這是我的自定義頁(yè)面');
myBtn:=TButton.Create(myPage);
myBtn.Parent:=myPage.Surface;
myBtn.Caption:='點(diǎn)我~';
myBtn.OnClick:=@ClickmyBtn;
ed1:=TEdit.Create(myPage);
ed1.Parent:=myPage.Surface;
ed1.Top:=myBtn.Top+30;
ed1.Width:=myBtn.Width;
ed1.CharCase:=ecUpperCase;{大寫(xiě)}
ed1.ShowHint:=True;
ed1.Hint:='字母將會(huì)變?yōu)榇髮?xiě)';
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;
上面介紹了四個(gè)屬性:CharCase將設(shè)置文本顯示的格式,可以有三個(gè)值:(ecNormal, ecUpperCase, ecLowerCase,分別為正常方式,大寫(xiě)方式,小寫(xiě)方式;PasswordChar屬性將輸入的文本替換為制定的樣式;ReadOnly屬性將使得該文本框不接受用戶輸入;Hint和ShowHint屬性是用戶的鼠標(biāo)停留在該文本框上時(shí),給出相應(yīng)的提示文本,注意只有在ShowHint設(shè)置為T(mén)rue的時(shí)候才會(huì)顯示。
另外,編輯框也能對(duì)一些事件做出相應(yīng),例如單擊、雙擊,文本內(nèi)容發(fā)生變化等,實(shí)現(xiàn)起來(lái)和按鈕的差不錯(cuò),這里就不再啰嗦了。最后需要介紹的是三個(gè)處理按鍵的屬性: OnKeyDown、OnKeyPress和OnKeyUp
這三個(gè)屬性是當(dāng)用戶光標(biāo)停留在該文本框中時(shí),當(dāng)用戶按下了鍵盤(pán)上的某個(gè)鍵時(shí),會(huì)調(diào)用該屬性指定的過(guò)程,測(cè)試代碼如下:
[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, '標(biāo)題:自定義頁(yè)面', '描述:這是我的自定義頁(yè)面');
ed:=TEdit.Create(myPage);
ed.Parent:=myPage.Surface;
ed.OnKeyDown:=@EditKeyDown;
end;
在編輯框中輸入時(shí),用戶按下Alt+C組合時(shí),將會(huì)做出響應(yīng),彈出一個(gè)消息框,這樣可以對(duì)我們感興趣的按鍵組合做出相應(yīng)的動(dòng)作,例如我們想屏蔽粘貼這項(xiàng)功能,則修改代碼如下:
procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (key=86) and (Shift=[ssCtrl]) then
Msgbox('粘貼無(wú)效,請(qǐng)手動(dòng)輸入',MBInformation,MB_OK);
ed.text:='';
end;
不過(guò)這里要說(shuō)明的是,這還不能屏蔽右鍵粘貼,只是屏蔽了Ctrl+V的方式。另外兩個(gè)按鍵屬性和這里介紹的KeyDown差不多,可對(duì)照測(cè)試一下。
轉(zhuǎn)載于:https://www.cnblogs.com/atuo/p/4777692.html
總結(jié)
以上是生活随笔為你收集整理的Inno Setup入门(十八)——Inno Setup类参考(4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 云计算设计模式(十六)——优先级队列模式
- 下一篇: linux命令:mkdir 命令详解