Inno Setup入门(十八)——Inno Setup类参考(4)
分類: Install Setup 2013-02-02 11:29 406人閱讀 評論(0) 收藏 舉報
編輯框
編輯框也叫文本框,是典型的窗口可視化組件,既可以用來輸入文本,也可以用來顯示文本,是程序設計中最常用的組件之一,可以獲取用戶輸入的許多信息。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:=@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用于設置或獲取文本框中的內容,注意不管是設置還是獲取,參數一定必須是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;
StrToFloat和FloatToStr分別實現字符串轉實數,實數轉字符串。在第一、第二個文本框中輸入數值后,點擊按鈕將第三個文本框中的內容設置為兩數的和。下面再說說其他的屬性。修改代碼段如下:
[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:=@ClickmyBtn;
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屬性將使得該文本框不接受用戶輸入;Hint和ShowHint屬性是用戶的鼠標停留在該文本框上時,給出相應的提示文本,注意只有在ShowHint設置為True的時候才會顯示。
另外,編輯框也能對一些事件做出相應,例如單擊、雙擊,文本內容發生變化等,實現起來和按鈕的差不錯,這里就不再啰嗦了。最后需要介紹的是三個處理按鍵的屬性: OnKeyDown、OnKeyPress和OnKeyUp
這三個屬性是當用戶光標停留在該文本框中時,當用戶按下了鍵盤上的某個鍵時,會調用該屬性指定的過程,測試代碼如下:
[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:=@EditKeyDown;
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差不多,可對照測試一下。
轉載于:https://www.cnblogs.com/atuo/p/4777692.html
總結
以上是生活随笔為你收集整理的Inno Setup入门(十八)——Inno Setup类参考(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算设计模式(十六)——优先级队列模式
- 下一篇: 关于方程求根的解决方案