610 likes | 741 Views
計算機程式. 廖文淵 Department of Computer Science and Engineering De-Lin Institute of Technology andres@dlit.edu.tw. 第四章 表單與基本輸出入. 4-1 表單 外觀 進入整合開發環境後,它就已經預先開啟了一個空白的表單 --Form1. Icon. Caption. Height. Appearance. BorderStyle. Width. 屬性值. 說 明. 0. 沒有框線. 1. 單線固定. 2. 大小可調整 ( 預設值 ).
E N D
計算機程式 廖文淵 Department of Computer Science and Engineering De-Lin Institute of Technology andres@dlit.edu.tw
第四章 表單與基本輸出入 • 4-1表單 • 外觀 • 進入整合開發環境後,它就已經預先開啟了一個空白的表單--Form1 Icon Caption Height Appearance BorderStyle Width
屬性值 說 明 0 沒有框線 1 單線固定 2 大小可調整(預設值) 3 雙線固定對話方塊 4 單線固定工具視窗 5 可調整工具視窗 • 常用的表單屬性 • 整體外觀 • Appearance:表單的顯示方式: • 0表平面顯示 • 1表立體顯示(預設值) • BorderStyle:表單的框線格式: 控制功能表不見了
Caption:這是表單的標題屬性,也就是在表單上方所顯示的字串。Caption:這是表單的標題屬性,也就是在表單上方所顯示的字串。 這是「標題」(Caption屬性) 這也是「標題」(Caption屬性)
表單的顏色或背景背景 • BackColor:表單的背景顏色。 • 按一下Backcolor屬性值右邊向下的箭頭,會看到以下的兩頁畫面: • 調色盤:指定表單的顏色,不論外在環境如何改變,一定都會按照設計者所指定的顏色來呈現。 • 系統配色:使用目前環境下各種物件的顏色。這些顏色可以在「控制台/顯示器/外觀」中來設定。
ForeColor:這是指表單的前景顏色。 • 例如:表單上所顯示字串的顏色就是ForeColor(藍色),表單的底色就是BackColor(白色)。 • Picture:設定表單是否要以張圖片作為它的背景。 • 在Picture屬性欄右邊按鈕[…]處click,選取您喜愛的圖片,將圖加入表單中。
表單控制功能表 • ControlBox:預設值是True。False時,表單在執行時不會出現表單控制功能表(或稱為:系統功能表),也不會出現MaxButton及MinButton。 • MaxButton:按下「放到最大」,這個表單會放大到螢幕的最大界限。預設值是True。 • MinButton:按下它,這個表單會變為最小化的狀態。預設值是True,也就是表單會出現MinButton。 • 這幾個屬性跟BorderStyle有關係,例如將BorderStyle設為”1-固定單線”,則MinButton及MaxButton屬性值會自動變成False。 按下這個小圖示,開啟控制功能表 MinButton MaxButton 表單控制功能表
修改表單屬性實作 • 範例: • 開始執行時的畫面如下圖所示 • 注意表單背景、右上角的小圖示、左上角的關閉鈕等特徵。 • 用滑鼠在表單上Click,每Click一下,表單上就會列印出現在的系統日期及時間
屬性欄 屬性值 Name FormTest BorderStyle 1-單線固定 Caption 表單測試 ForeColor &H0000FFFF&(黃色) Icon program files\Microsoft Visual Studio\Common\Graphics\Icons\Computer\pc4.ico Picture EX4-2\Lake.jpg Width 4575 Height 3330 • 說明: • 以下是這個唯一的表單物件相關的屬性設定值 • 用滑鼠在表單上Click時,要顯示現在的系統日期及時間,因此我們必須在Form的Click事件程序中撰寫將現在日期及時間顯示在表單上的程式碼 • 將這個表單的BorderStyle設定為”1-單線固定”,因此在表單的右上角不會出現最大化及最小化按鈕 • 如果要結束程式,請用滑鼠按下在右上方的關閉鈕
步驟: • 設定專案名稱 • 在專案總管中以滑鼠點選專案名稱(預設為Project1) • 在屬性視窗中找到Name屬性欄,並將其值設為TestProject A、 選擇專案總管 中的專案名稱 B、修改專案的 Name屬性
設定表單上的屬性 • 設定表單名稱 i. 請在專案總管上選擇表單(預設為Form1) ii. 找到在屬性視窗中的Name屬性,並將其值設 為FormTest • 設定表單的BorderStyle屬性為:1-單線固定 • 設定表單標題文字:請在屬性視窗中找到Caption屬性欄,並將其值設為:表單測試 A、修改表單的Name屬性 B、修改表單的BorderStyle屬性 C、修改Caption屬性
設定表單的ForeColor i. 找到屬性視窗中的ForeColor屬性,並按下右 邊的[▼]按鈕。 ii. 按下按鈕之後,會出現兩頁選擇顏色的表 格;請在”調色盤”頁籤上選擇黃色。 i、按下ForeColor右邊的[▼]按鈕 ii、選擇”調色盤”頁籤的黃色色塊
設定圖示(Icon) i. 找到Icon屬性欄,並按下右邊的[…]按鈕 ii. 在”載入圖示”對話方塊上面找到:program files\Microsoft Visual Studio\Common\Graphics\Icons\Computer\pc4.ico這個檔案,然後按下[開啟舊檔(O)]按鈕。 i、按下Icon右邊的[…]按鈕 ii、找到所需的.ICO檔案 iii、按下開啟舊檔(O)按鈕
設定背景圖(Picture) i. 找到Picture屬性欄,並按下右邊的[…]按鈕 ii. 請在”載入圖片”對話方塊上,找到附書光碟 中第四章EX4-2目錄下的Lake.JPG圖檔,並按 下[開啟舊檔(O)]按鈕 i、按下Picture右邊的[…]按鈕 ii、找到所需的圖檔 iii、按下[開啟舊檔(O)]按鈕
設定表單的寬、高 • 在屬性視窗中找到Width屬性,將其值設定為4575 • 找到Height屬性,設定為3330 3330 4575
撰寫事件程序碼 • 在表單上以滑鼠Double-click,開啟程式碼視窗 在表單上Double-click就可以開啟程式碼視窗
在程式碼視窗上選擇Form_Click事件程序 找到Form物件的Click事件程序 • 填入程式碼
按下鍵盤上的[F5]按鈕開始執行 以滑鼠在視窗上click • 試著以滑鼠在視窗背景圖上Click,每Click一下應該顯示一次系統日期及時間 每Click一下就會顯示一次系統日期及時間
順序 事件程序 1 Form_Initialize 2 Form_Load 3 Form_Resize 4 Form_Activate 5 Form_Gotfocus 6 Form_Paint • 表單常用的事件程序 當表單顯示在螢幕上時,它所觸發事件程序如下表所示。其中比較常用的只有兩個: • Form_Load • Form_Activate
Form_Load事件程序 • Form_Load事件會發生在程式被載入記憶體後、尚未顯示在螢幕前 • 通常會在Form_Load事件程序中做模組等級的變數或物件初始值設定工作 • 除非表單的AutoRedraw=True,否則在Form_Load中輸出(例如:Print)的資料將無法正確顯示 • Form_Activate事件程序 • Form_Active事件發生在一個視窗變成Active(現用視窗)時 • 如果只為了測試的目的,可以將Print方法寫在這個事件程序中 • 一般視窗程式很少直接將結果輸出至表單上。如果結果是以文字方式呈現,則多半會輸出至標籤(Label)控制項上;如果是圖形,則會輸出至影像(Image)或圖形(Picture)控制項上
4-2命令鈕(Command Button) • 放置命令鈕 • 在代表命令鈕的圖示上Double-click • 或以拖放(Drag-and-Drop)的方式 在表單中的命令鈕 在工具箱中的命令鈕圖示
命令鈕常用的屬性 • Caption:按鈕上的文字 • Cancel: • 命令鈕的Cancel屬性為True時,在表單處於作用中(Active)的狀態下,按下鍵盤上的[ESC]就會執行其click事件程序 • 在同一個表單中,只能有一個命令鈕的Cancel屬性可以被設為True • Default: • 命令鈕的Default屬性為True時,在表單處於作用中(Active)的狀態下,而且表單上沒有其他命令鈕獲得輸入焦點(Focus,或稱為駐點),按[Enter]鍵就會執行其Click事件程序 • 在同一個表單上只能有一個命令鈕的Default屬性被設定為True。 • Enabled:預設值為True。當這個屬性設定為False時,命令鈕會以淡色(或模糊)的方式來顯示,此時命令鈕不能接受使用者以滑鼠或是鍵盤輸入訊息
命令鈕實作 • 範例 • 表單上有兩個命令鈕,上面的文字分別寫著[顯示(D)]及[結束(X)],如下圖所示 • 滑鼠移動到按鈕上時,按鈕都會顯示出簡單的”提示”
以滑鼠按下[顯示(D)]按鈕時,表單上會顯示出”按下命令鈕”以滑鼠按下[顯示(D)]按鈕時,表單上會顯示出”按下命令鈕” • 以滑鼠按下[結束(X)]按鈕,或者按下鍵盤上的[ESC],程式及結束執行 按下[顯示(D)],將字串顯示於表單上 按下[結束(X)],或鍵盤上的[ESC],則結束程式執行
說明 • 表單中放置了兩個命令鈕,分別為cmdDisplay及cmdEnd。 • 用滑鼠在命令鈕上Click時,表單上要顯示出字串;因此必須在cmdDisplay的Click事件程序中撰寫顯示字串在表單上的程式碼—print “按下命令鈕”。 • 要結束程式,用滑鼠在命令鈕cmdEnd上Click,或是按下鍵盤的[ESC]按鍵。換句話說,要在cmdEnd_Click事件程序中填入End敘述,而且要把cmdEnd的Cancel屬性設為True。 • 為了能讓命令鈕顯示出提示(Hint)方塊,因此必須在兩個命令鈕的ToolTipText中填入適當的字串。
步驟 • 先在表單上放置兩個命令鈕 cmdDisplay cmdEnd
屬性欄 屬性欄 屬性欄 屬性值 屬性值 屬性值 Name Name Name frmButtonTest cmdDisplay cmdEnd Caption Caption BorderStyle 1-單線固定 結束(&X) 顯示(&D) Default Cancel True True Caption 命令鈕測試 ToolTipText ToolTipText 結束程式執行 在表單上顯示字串 • 以下是表單及命令鈕物件相關的屬性設定值 表單Form1 • 命令鈕cmdDisplay • 命令鈕cmdEnd
請分別在cmdDisplay及cmdEnd的click事件程序中填入程式碼:請分別在cmdDisplay及cmdEnd的click事件程序中填入程式碼: Private Sub cmdDisplay_Click() Print "按下命令鈕" End Sub Private Sub cmdEnd_Click() End End Sub • 完成後,按下[F5]測試執行
命令鈕常用的事件程序 • Click事件程序當然是最主要的 • GotFocus事件程序 • 輸入焦點轉移到某一個控制項時,該控制項的GotFocus事件程序就會被引發 • 如果在Form上有任何可見的(Visible=True)控制項,那麼Form的GotFocus事件程序就不會被引發 • LostFocus事件程序 • 將輸入焦點轉移到某一個控制項上時,原來擁有輸入焦點的控制項就會引發LostFocus事件程序
命令鈕常用的方法 • SetFocus方法 • 語法:ObjectName.SetFocus • 命令鈕經過SetFocus方法後,即可取得輸入的焦點(Focus),也就是說使用者按[Space]鍵,將會執行這個命令鈕的Click事件程序
特別說明 Visual Basic的基本敘述 • End敘述 • 在Visual Basic程式中專門用來結束程式執行,幾乎所有Visual Basic程式都會有它的存在。 • 註解 • 註解是專門給人看的,以方便日後修改及維護。 • 在Visual Basic中,註解必須以Rem或 ’開頭,其後跟隨任何文字,例如:Rem 這是一列註解文字‘ 這是另一列註解文字 • 其中Rem必須放在每一列開始的地方,而’可以放在程式的任何地方
符 號 作 用 + 加法運算 - 減法運算 表示負數 * 乘法運算 / 除法運算 \ 整數除法運算 mod 產生除法運算後的餘數 ^ 次方運算 • 4-3運算式 • 算術運算子(Arithmetic Operator)
執行後的結果 • 字串運算子 • +、&運算子 • “+”與“&”為連接字串的運算子,功能完全一樣s1 = “This is”+“ a Test”‘結果為“This is a Test“s2 = ”學貫”&“行銷公司”’結果為“學貫行銷公司” • 固定長度字串變數並不太適合用來作字串連接運算 • 建議儘可能用“&”作為字串連接符號
格 式 樣版字串 結果為True的被搜尋字串 意 義 結果為False的被搜尋字串 ? 忽略單一字元 m*j "mj"、"msj"、"mmxj"、"mMJj" "mm"、"mjm" * 忽略零到多個字元 Xbook* "Xbook Corp."、"Xbook" "學貫(Xbook)" # 忽略單一阿拉伯數字字元 s?t "sat"、"sit" "seat"、"st"、”shit” [字元] 是否含有中刮號中列舉的字元 No.## "No.01"、"No.99" "No.1"、"No.a1" [!字元] 是否不含中刮號中列舉的字元 [ABC] "A"、"B"、"C" "a"、"b"、"D" [!ABC] "D"、"a"、"b" "A"、"B"、"C" • Like運算子 • Like是作為字串比較的運算子,比對字串時可以用萬用字元(Wild Card)來做為比對的樣版 • 格式 • 被搜尋的字串 Like樣版(Partten)字串
[A-Z] 表示大寫字母A到Z的區間 [A-Z0-9] 表示大寫字母A到Z,以及阿拉伯數字0到9的區間 • 如果必須在樣版字串中表示一到多個連續的區間,則可以用下列的表示法 • 樣版字串中的特殊字元(例如:“[”、“?”、“#”、“*”),必須用中括號將其框住,例如:b = "A*B=C" Like "?[*]?=?" '結果為True
運算式實作 • 範例 • 計算下列式子的X值 • 以Visual Basic的語法寫出根公式,即可將結果算出 • 下面的就是利用根公式將X算出來的畫面 按下關閉鈕可以關閉視窗、結束程式執行
說明 • 表單中並不需要放置任何的控制項,只要將運算結果在Form_Activate事件程序中、以Print方法輸出即可。 • 運算結果會因覆蓋等原因被消去,可將表單的AutoRedraw屬性設為True來避免。 • 要結束程式執行,以滑鼠在表單右上方的關閉鈕上Click即可,不需要另外撰寫程式。
步驟 • 進入Visual Basic整合開發環境後,直接在表單上Double-click,開啟程式碼視窗 • 拉下右邊的下拉式清單方塊,選擇Activate事件程序
在Form_Activate事件程序中填入以下的程式碼 Private Sub Form_Activate() Dim a As Integer, b As Integer, c As Integer Print "當X^2+X-6=0,X=?“ a = 1 b = 1 c = -6 Print "X= " & (-b + (b ^ 2 - 4 * a * c) ^ 0.5) / (2 * a) Print "X= " & (-b - (b ^ 2 - 4 * a * c) ^ 0.5) / (2 * a) End Sub
4-4座標系統 • CurrentX、CurrentY屬性欄 • Form的座標系統是以左上角為原點(0,0) • 越往右邊則CurrentX值越大,越往下方CurrentY值越大 工作區的左上角為原點(0,0) 越往右CurrentX值遞大 越往下CurrentY值越大
程式一開始執行時,CurrentX及CurrentY的值是(0,0) • 以Print等方法將資料列印在螢幕上後,CurrentX及CurrentY的值就會隨之改變,紀錄著下次要輸出資料的位置 • CurrentX及CurrentY在設計階段並不會出現在屬性視窗中,但是可以在執行時讀取或設定
特別說明 Cls方法 • Form上提供了另一個清除已輸出資料的方法—Cls • 呼叫Cls之後,會將Form上的資料清除乾淨,然後將CurrentX及CurrentY重新移回原點(0,0)
指訂座標輸出實作 • 範例 • 在表單上輸出兩個字串,先在表單中間輸出一個,再回到表單原點輸出另一個字串,如下圖所示 2.再回到(0,0)的地方輸出一個字串 1.先在(500,500)的地方輸出一個字串
說明 • 先在座標(500,500)的地方顯示一個字串”目前座標起點(500,500)” • 再將CurrentX及CurrentY移回原點(0,0),輸出另一個字串”目前座標起點(0,0)“
步驟 • 進入Visual Basic整合開發環境後,直接在表單上Double-click,開啟程式碼視窗 • 拉下右邊的下拉式清單方塊,選擇Activate事件程序 • 在Form_Activate事件程序中填入以下的程式碼Private Sub Form_Activate() CurrentX = 500 : CurrentY = 500 Print “目前座標起點(500,500)” CurrentX = 0 : CurrentY = 0 Print “目前座標起點(0,0)”End Sub
座標單位 • TWIP • CurrentX與CurrentY在預設是以TWIP為單位 • TWIP是一個邏輯單位,每一個TWIP相當於1/1440英吋(1/567公分) • 使用邏輯單位的好處是可以降低硬體的影響--裝置獨立(Device Indepandance) • POINT • 一個POINT相當於20個TWIP,也就是1/72英吋 • 字型(Font)大小的單位就是Point • TWIP與Pixel間的轉換 • Screen物件中的TwipsPerPixelX及TwipsPerPixelY屬性欄記錄著這Pixel實體單位與Twip邏輯單位的對應關係 • Printer物件中也有TwipsPerPixelX與TwipsPerPixelsY兩個屬性欄
ScaleMode 值 所代表的座標系統單位 0 使用者自訂 1 Twip 2 點(Point) = 20Twips 3 像素(Pixel) 4 字元(Character) 5 英吋(Inch) = 72Points = 1440Twips 6 公釐(Millimeter) 7 公分(Centimeter) = 567Twips • 改變 • 透過ScaleMode屬性欄來修改座標系統 • 當ScaleMode=0,且設定ScaleHeight = 100表示將目前表單工作區(Client Area)的橫座標切割成100等分,以一個等分當作一個單位。 同樣的,ScaleWidth就是關於縱座標方面的設定
4-5選擇字型 • 選擇字型:FontName屬性欄 • 只要在FontName屬性欄中填入字型的名稱,就會採用該字型來輸出 • 範例 • 在表單以三種不同的中文字型字串,如下圖所示
說明 • 用三種不同字型,將同一字串在Form_Activate事件程序中,以Print方法列印出來 • 步驟 • 在表單上Double-click,開啟程式碼視窗 • 拉下右邊的下拉式清單方塊,選擇Activate事件程序 • 在Form_Activate事件程序中填入以下的程式碼Private Sub Form_Activate() Dim sTest As String sTest = “中文字形示範”FontName = “新細明體”Print sTest FontName = “標楷體”Print sTest FontName = “細明體”Print sTest End Sub
字型的大小:FontSize屬性欄 • FontSize屬性欄控制輸出字型的大小,字型大小是以Point為單位 • FontSize屬性欄中,最大可以設到2048 Points 字型大小