第三章 基本輸入與輸出

26
第第第 第第第第第第第 3-1 第第Form 3-2 第第第Label 3-3 第第第Edit 3-4 第第第Button 3-5 ShowMessage 第第 3-6 InputBox 第第

Upload: leo-dorsey

Post on 03-Jan-2016

51 views

Category:

Documents


0 download

DESCRIPTION

第三章 基本輸入與輸出. 3-1 表單( Form ) 3-2 標籤盒( Label ) 3-3 文書盒( Edit ) 3-4 功能鈕( Button ) 3-5 ShowMessage 程序 3-6 InputBox 函式. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章  基本輸入與輸出

第三章 基本輸入與輸出 3-1 表單( Form ) 3-2 標籤盒( Label ) 3-3 文書盒( Edit ) 3-4 功能鈕( Button ) 3-5 ShowMessage 程序 3-6 InputBox 函式

Page 2: 第三章  基本輸入與輸出

輸入與輸出是程式設計的第一步, Delphi 的輸入與輸出方式有兩種,分別是使用元件及對話框。使用元件的方式是在表單( Form )放置輸出入元件,本章即要介紹四種最常用的輸出入元件──表單( Form )、標籤( Label )、文書盒( Edit )及功能鈕( Button )。使用對話框的輸入與輸出,將分別介紹ShowMessage ()、 MessageBox()及 InputBox ()等函式。

Page 3: 第三章  基本輸入與輸出

3-1 表單( Form )Form 的主要功能為放置各種不同的輸出入元件,以便作為繪圖及輸出入文字,是使用者與程式溝通的最主要物件。如下圖所示,當新增一個應用程式時,第一個存在的元件即是表單。

Caption 屬性Caption 是表單的標題,如上圖的表單,其預設值為 Form1 。

Name 屬性現實的社會中,每個人、事、物均有名稱, Delphi 的元件亦不例外,表單的 Name 預設值為 Form1 ,而本書中設定其物件縮碼為 frm 。(附註:什麼是物件縮碼?一個程式中若同時存在二個以上相同元件,則第一個元件為 Name1 、第二個元件為 Name2 ,例如 Form1 、 Form2... 等。但這種方式非常不利程式的閱讀,所以本書將每一元件取其物件縮碼,例如Form 縮碼為 frm 、 Label 縮碼為 lbl 、 Edit 縮碼為 edi 、 Button 縮碼為 btn 。而物件的命名則是物件縮碼後加上一個有意義的識別字,例如前面常用到的 btnStart 、 btnClose 等,即是代表 Button 元件、 Start 與Close 則代表此按鍵的功能。)一些元件的初值亦可在 Form 載入時( FormCreate 事件)給予設定,以下範例示範表單的用法。

Page 4: 第三章  基本輸入與輸出

範例 3-1a 請寫一個程式,當表單載入時,使用表單的 Caption 屬性顯示“

Hello” ;當按一下表單時顯示“ How are you” ;按二下表單時,結束程式的執行。

本例共需使用三種事件,分別是表單載入事件( FormCreate )、表單被按一下事件( FormClick )及表單被按二下( FormDblClick ),而程式執行的依據即為以上事件成立與否,這也就是目前程式開發工具的主流──事件驅動的程式設計,關於事件驅動的程式設計請參閱本書第十二章。程式說明 :

1. 如何於程式執行階段存取物件的屬性?Delphi 與 VB 均是在物件變數與屬性之間加點(.)運算

子。 2. 表單載入時,首先會執行 FormCreate 事件函式。

表單常用屬性

Page 5: 第三章  基本輸入與輸出

表單常用屬性 每個物件均有許多屬性,以下是表單常用的屬性列表,其中有很多屬

性是所有物件共通的。屬  性 說       明 預設值

Name Form 物件的名稱。 Form1

Caption Form 標題欄上的文字 Form1

Height Form 的垂直高度(單位為 Pixel )。

Width Form 的水平寬度(單位為 Pixel )。

Left Form 左上角距螢幕左邊的距離(單位為 Pixel )。

Top Form 左上角距螢幕上面的距離(單位為 Pixel )。

BorderSstle 設定 Form 邊界,共有 6種格式,但只能在執行時 bsSizeable

才會看到設定的結果:

bsDialog (雙線固定對話方塊)

bsNone (沒有框線)

bsSingle (單線固定)

bsSizeable (大小可調整)

bsSizeToolWin (可調整工具視窗)

bsToolWindow (單線固定工具視窗)

Page 6: 第三章  基本輸入與輸出

Color 設定 Form 工作區背景色 clBtnFace

+Font 選此屬性會顯示字型對話方塊,在此對話方塊中 (TFont)

可設定字型、字型樣式、大小與效果。

*Color 設定 Form 工作區的前景色。 clWindowText

*Name 可用來設定顯示字體的字型名稱,不同字型名稱 MS Sans Serif會顯示不一樣效果的字體。

*Size 字體大小。字型大小最好大於 8以上,否則中文 8

字看不清楚。

+Style 字體顯示樣式與效果。 [ ]

*fsBold True :以粗體字顯示字體。

False :非粗體字。

*fsItalic True :以斜體字顯示字體。

False :非斜體字。

*fsStrikeOut True :字體顯示時加刪除線。 False

False :不加刪除線。

*fsUnderline True :字體顯示時下面加底線。 False

False :字體下面加底線。

Icon 設定 Form 縮小時所用的圖示。 [None]

Visible Form 顯現或隱藏。 True

WindowState Form 顯示的狀態,共有 3種格式: wsNormal

wsNormal- 正常( Form 為設計階段大小)

wsMinimized- 最小化( Form 縮為圖示,置於工作列上)

wsMaximized- 最大化( Form 放大佔滿整個螢幕)

Page 7: 第三章  基本輸入與輸出

[ 註 1] :有星號( * )者,表示這些屬性是某個屬性 的附屬屬性。

[ 註 2] :有加號( + )者,表示該屬性還有附屬屬性,在該屬性上按兩下,即可展開此屬性的附屬屬性,此時加號( + )將會變成減 號( - )。

Page 8: 第三章  基本輸入與輸出

表單常用事件每個物件通常均包含許多事件,以下是表單的常用事件整理,其中很多事件是共通於所有物件。

FormCreate 事件當表單載入時, Delphi 會自動執行此事件,但此事件只有在載入 Form 時才會執行,因此在程式中只會執行一次。

FormClick 事件當使用者在表單中,按一下滑鼠左鍵時(不要按到有元件的地方)就會觸動該表單的 FormClick 事件函式,並將該函式內的敘述執行一次。

FormDblClick 事件 當使用者在表單中,按二下滑鼠左鍵時(不要按到有元件的地方),就會觸動該表單的

FormDblClick 事件函式。 FormActivate 事件 當 Form 變成作用的表單(被選取的表單亦稱為使用視窗),會執行 FormActivate 事件

函式。當 Form 載入後,此事件將會緊接在 FormCreate 事件函式後執行,往後只要有Form 被選取,都會執行此事件函式一次。因此,此事件函式在程式中不只執行一次。

FormPaint 事件 當 Form 載入執行時也會執行此事件函式,且程式執行中若有其它物件覆蓋在表單上、或有改變表單的大小,都會觸動 FormPaint 事件函式。

Page 9: 第三章  基本輸入與輸出

3-2標籤盒( Label ) Label 的主要功能為輸出程式的執行結果,或於程式輸入控制項前輸出某些字元,以作為輸入的提示。

Page 10: 第三章  基本輸入與輸出

範例 3-2a 同上範例,於表單載入時,表單的標題

顯示系統時間;當按一下表單時,使用 Label 顯示“ How are you” ,並讓電腦的喇叭發出“嗶一聲”;當滑鼠於 Label上方移動時, Label 出現“ You are Welcome” 。

Page 11: 第三章  基本輸入與輸出

Label 常用屬性與方法Label 的大部分屬性都與 Form 相同,比較特別的部分說明如下:

Name 屬性 所有物件的名稱均使用 Name 屬性( Label 元件亦不例外),此屬性在本單元之後,

均不再重複介紹。 Caption 屬性 Caption 屬性用於顯示 Label 要顯示的字串。 Align 屬性

物件靠齊表單的方式,有以下幾種靠齊方式,請自行把玩,並觀察元件位置的變化alBottom :佈滿下面表單。alClient :佈滿整個表單。alLeft :佈滿左邊表單。alNone :此屬性無作用(預設性)。alRight :佈滿右邊表單。alTop :佈滿上面表單。

Alignment 屬性 標題文字的對齊方式,有以下三種:

taCenter :文字靠中。taLeftJustify:文字靠右。taRightJustify :文字靠左。

AutoSize 屬性 Label 元件的大小是否隨著文字的大小而自動調整。

Page 12: 第三章  基本輸入與輸出

3-3 文書盒( Edit )上一節的 Label僅能顯示輸出結果,他的特色是僅提供輸出功能、不能進行任何輸入,如此可防止資料遭受到使用者修改。本節的 Edit 則可作為輸出、入的工具,且其重點是應用在輸入文字及數字, Edit較特殊的屬性如下所述:

Text 屬性使用者所輸入的文、數字,型態為字串( String ),其預值為 Edit1 。

MaxLength 屬性設定可輸入的最大字元數,其預設值為 0(若設定為 0,表示無輸入上限) 

PasswordChar 屬性 若要鍵入的字元不顯示於 Edit ,可使用此屬性。例如填入星號( * ),

則使用者所輸入的字元均以星號( * )顯示。若欲正常顯示,則應使用預設值 #0。

ReadOnly 屬性邏輯值,設定 Text 的內容唯讀與否,其預設值為 False 。

Hint 屬性當滑鼠移至 Edit 上方時,所出現的提示字,其預設值為空白。

ShowHint 屬性邏輯值,設定 Hint 屬性顯示與否,其預設值為 False 。

Page 13: 第三章  基本輸入與輸出

範例 3-3a 請設計一個密碼輸入程式,由 Edit 元件輸入密碼,當使用者按

一下表單時,由 Label 元件輸出密碼內容。

物件名稱 物件類別 屬 性 值 說   明 Form1 TForm Name Form1 表單Edit1 TEdit Name Edit1

Text

PasswordChar * 使用者所輸入的字元均以 * 字元顯示

MaxLength 8 設定輸入字元上限為 8

Hint 請輸入密碼ShowHint True 設定輸出 Hint 屬性

的內容Label1 TLabel Name Label1

Caption 輸出密碼

Page 14: 第三章  基本輸入與輸出

Form 、 Label 與下一節的 Button 均使用 Caption 屬性顯示其輸出結果,但請特別留意 Edit卻使用 Text 作為輸出入的屬性。

範例 3-3a 程式說明 :

Page 15: 第三章  基本輸入與輸出

3-4 功能鈕( Button ) 在前面幾節裡,都是使用按一下表單的

方式來執行某項命令。然此種方式無法順利引導使用者執行單一項功能、也無法同時執行多個命令,本節將介紹一個正式的功能按鈕( Button )解決以上問題。 Button 元件最常使用的功能為 Click 事件,其標題亦為 Caption 屬性,請看以下範例說明。

Page 16: 第三章  基本輸入與輸出

範例 3-4a 請寫一個可以執行算術的加、減、乘及除法運

算程式。程式說明 :

Delphi 對資料型態的要求非常嚴謹,不像 VB可以彈性設定。本例的 Edit 與 Label 的屬性:Text 與 Caption ,其格式均為字串,故要進行算術運算以前均要先轉為整數( StrToInt )或浮點數( StrToFloat ),待數值運算完畢後再轉為字串( IntToStr或 FlootToStr )輸出。

Page 17: 第三章  基本輸入與輸出

範例 3-4b 同上範例,但為每個功能鈕製作快速鍵

Page 18: 第三章  基本輸入與輸出

3-5 ShowMessage 程序 Delphi 的輸入或輸出資料,除了可以使用上面

的元件外,亦可使用程序或函式,例如本節要介紹的 ShowMessage 程序及下一節的 InputBox 函式、 MessageBox 函式。

ShowMessage 的語法如下,它可以將指定的Msg 字串輸出。

procedure ShowMessage(const Msg: string);

Page 19: 第三章  基本輸入與輸出

範例 3-5a 示範 ShowMessage 的用法。

Page 20: 第三章  基本輸入與輸出

3-6 InputBox 函式 上一節的 ShowMessage僅能輸出字串,

本節的 InputBox 除了可輸出字串外、亦可輸入字串。其語法如下,其中 ACaption 是對話框的標題、 APrompt 是對話框的提示字串、 ADefault 是輸入的預設值,其格式均為 String 。 function InputBox(const ACaption,

APrompt, ADefault: string): string;

Page 21: 第三章  基本輸入與輸出

範例 3-6a 示範 InputBox 函式的用法。

Page 22: 第三章  基本輸入與輸出

3-7MessageBox 函式 於程式的執行中常有一些無法預期的事件或訊息, Del

phi提供此一對話函式供使用者使用,如此即可縮短程式撰寫時間,並提昇人機使用介面的親和性。 MessageBox 的語法如下,它是封裝Windows API MessageBox 的函式。

傳回之數值 m := MessageBox (輸出字串,標題, n) 以上語法說明如下:

1. 輸出字串與標題均為字串型態。2. m 、 n 均為 Integer型態。3. n 之值可為下列之值或累加。若為累加,則輸出之格式亦是個別情況的組合。

Page 23: 第三章  基本輸入與輸出

 型   態  值 說明一、功能鈕種類 0 出現“確定”按鈕

1 出現“確定”、“取消”按鈕2 出現“終止 (A)”、“重試 (R)”及“忽略 (I)

”等按鈕3 出現“是 (Y)”、“否 (N)”及“取消”按鈕4 出現“是 (Y)”、“否 (N)”按鈕5 出現“重試 (R)”、“取消”按鈕6 出現“取消”、“重試 (R)”、“繼續”等按鈕

二、圖示 16 出現 × 圖示32 出現 ? 圖示48 出現 ! 圖示64 出現 i 圖示

三、預設按鈕 0 以第一個按鈕為預設按鈕256 以第二個按鈕為預設按鈕512 以第三個按鈕為預設按鈕

Page 24: 第三章  基本輸入與輸出

4. 依使用者所按的按鈕所傳回值,如下表:

傳回值 按  鈕

1 確定

2 取消

3 終止

4或 10 重試

5 忽略

6 是

7 否

11 繼續

Page 25: 第三章  基本輸入與輸出

範例 3-7a 本例示範 MessageBox 函式的用法。

Page 26: 第三章  基本輸入與輸出

習題 1. 自由落體的距離與時間關係如下:

s=v0t+g.t2請寫一個程式可以輸入初速 vo 及經時間 t 後,而得其落體距離。

2. 假設 y = f(x) = x3-6x2+11x-6 ,請寫一程式,可以輸入 x 值,而得對應的 y 值。

3. 請寫一個程式(1)可以輸入兩個點的座標。(2)按一下“開始”按鍵,可得兩點距離。