Microsoft Word - 02.doc

Similar documents
VB程序设计教程

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - Chapter5


MVB-1001.DOC

投影片 1

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

Microsoft PowerPoint - VB5

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

Ch6 Visual Basic表單,功能表與模組

Photoshop CS3 影像創造力 基礎講堂 8 學習流程 學習重要性 學習難度 必學指令工具 實作應用範例 創造舞台燈光的漸層繪圖 延伸學習 雜訊與半透明漸層 8-1 Photoshop Photoshop 8 136

Chapter 16 集合

ACI pdf

投影片 1

2

CU0594.pdf

輕鬆學 PhotoImpact X3 1 / / / 3 0 RGB 12,255,255 小常識 3 056

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class


《Visual Basic程序设计》实验课


1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

ProgrammersGuide for Visual Basic 在此章節您將學習如何快速地使用 Microsoft Visual Basic 和 HALCON/COM 的介面, 來發展 HALCON 的應用程式, 我們將會用簡單的步驟來告訴您如何完成 而這個小程式本身就是一個 GUI 的介面 此

PowerPoint Presentation

投影片 1

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

IsPostBack 2

AutoCAD 用戶如何使用 ArchiCAD

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

封面-12

2010年3月计算机等级考试四级网络工程师笔试

The golden pins of the PCI card can be oxidized after months or years

1

投影片 1

PowerPoint 簡報

untitled

05855BB03.indd

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南


CC213

書面

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

SMM667.mps

( )... 5 ( ) ( )

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

戒菸實務個案自助手冊105年Ver.2

Book1_ans.indd

APA Preliminaries Text Reference 1. Cover Page 2. Title Page 3. Signature Page 4. Advisor s recommendation letter 5. Approval page 6. Copyri

Microsoft Word - _m30.doc

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

week06.key

Microsoft Word - ACL chapter02-5ed.docx

計算機程式及實習 期末報告ppt製作 題目:南台黑心早餐店結帳系統

健保資訊網服務系統 (VPN)- 瀏覽器設定 目 次 壹 作業目的及功能... 2 一 作業目的... 2 二 作業功能... 2 貳 瀏覽器設定說明... 3 一 Internet Explorer 8(IE 8)... 5 二 Internet Explorer 9(IE 9)... 8 三 I

Excel VBA Excel Visual Basic for Application

Microsoft PowerPoint - vb.net2.ppt

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Microsoft PowerPoint - 07_WinProg.pptx

1-6 Access 2016 實力養成暨評量解題秘笈 102. 書籍與作者 Step1 按 建立 索引標籤 資料表 群組的 資料表設計 按鈕 Step2 由上而下分別建立下列欄位並設定資料類型 : 欄位名稱 : ID, 資料類型 : 自動編號 欄位名稱 : BName, 資料類型 :

馬孝先

Win-GRAF-User_Manual-chinese

VB控件教程大全

PowerPoint Presentation

學 習 目 標 1. 了 解 有 計 畫 的 運 動 之 前, 實 施 身 體 檢 查 的 重 要 性 2. 了 解 熱 身 與 緩 和 運 動 可 以 預 防 運 動 傷 害 3. 了 解 包 紮 護 具 裝 備 與 場 地 器 材 的 維 護, 可 以 避 免 傷 害 發 生 4. 了 解 食

如何將 WinCE5.0 程式昇級為 WEC7.0 程式 平台比較 CPU PXA270 CPU AM335x CPU 型號 WP-8x3x/WP-8x4x WP-514x/WP-515x VP-25Wx WP-8x2x/WP-9x2x WP-523x VP-x23x 作業系統版本 WinCE 5.

Microsoft Word - GUI design.doc

滙豐強積金僱主熱線 滙豐強積金網頁 L-MPF001B v07/1016 (1016) H

穨ac3-3.PDF

Adobe Photoshop CS6 完美呈現 CHAPTER Black & White 黑白 如何製作出色的黑白影像 Camera Raw 的黑白轉換 三點速成黑白轉換 在 Photoshop 中

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

新 闻 学 46 7 新 闻 传 播 学 院 广 告 学 28 4 广 播 电 视 学 23 3 新 闻 学 广 告 学 ). 级 学 生 申 请 准 入 需 修 完 或 正 在 修 2 门 专 业 准 入 课 程 并 取 得 相 应 学 分 ;2). 级 学 生 申 请 准 入 需

contents 1 4 Chapter 2 Chapter 5 Chapter 管理自動儲存的版本 以文件復原窗格復原檔案 自訂快速工具 自訂快速存取工具列 自訂功能區

untitled

untitled

你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 图 1.5 图 三原色光的概念 R Red G Green B Blue RGB RGB R B 3 1 RGB RGB 256 0~ RGB


理性真的普遍嗎 注意力的爭奪戰 科學發展 2012 年 12 月,480 期 13

7 DataSet DataSet TableColumnDataSet DataSet NOTE DataSet DataAdapterDataSetDataAdapter DataSet DataSetDataSetDataSet NorthwindDataSet DataSet Dim Nor

1970 新技術的應用 X = 20 + B 13B δ13c X 1 X

2.4 Selenium Python Selenium Selenium Selenium Selenium pip install selenium Chrome WebDriver Google Chrome (Linux, Mac, Windows) Chrome WebDriv

基本數學核心能力測驗_行為觀察記錄紙_G2版本

Microsoft Word - 2AF63內文.doc

2 part 01 浴室 浴室收納原則 要在浴室用的東西一定要收在浴室 從內容物只剩一點的洗滌劑容器開始整理 減少相同物品的數量 多的物品只要 1~2 個就夠了 每天要用的東西別放在浴室櫃子裡

Pro/ENGINEER 訓練教材 ( 曲面 ) 目錄 1. Creo2.0 設定工作目錄 圖形

Microsoft Word - ACI chapter00-1ed.docx

untitled


2

2

運算子多載 Operator Overloading

穨文件1

Microsoft PowerPoint _cp09_繪圖功能與文字.pptx

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

¾ú¥v¬ì²Ä8¦¸-«ü¦Ò«ÊŁ±.prn, page Normalize ( <4D F736F F D20BEFAA576ACECB2C438A6B82DABFCA6D2ABCAADB12E646F63> )

Ctpu

Chapter V.S. PC

Transcription:

什麼是物件? 在物件導向程式設計裡面, 物件是指具體, 也可能是抽象的東西, 而翻遍各教科書, 它的定義也真的是很抽象, 但是用台語把 " 物件 " 念一遍, 就是 " 東西 ", 這樣還比較能理解 在一個書房裡, 第一 200 眼看到的東西可能有書桌 椅子 電腦 書架, 還有冷氣機, 這些是物件 再把視線放在書架上, 有木板 書本 固定夾, 這些是物件 ; 再拿起一本精裝書, 書套 書皮 內頁紙張, 還有印刷的文字, 這此些也是物件 從書架上拿下的精裝書, 可以發現 : 書名 " 學會寫程式 VB 6.0" 尺寸 20 公分寬 27 公分高厚度 420 頁封面顏色 綠色這些就是這本精裝書的 " 屬性 " 而書本可以移動 翻開, 冷氣機可以運轉 關機 送風, 這些是物件的 " 方法 " 回到電腦,WINDOWS 環境裡也是充斥著物件, 或者根本可以說整個 WINDOWS 都是由物件所組成 例如小算盤這個程式, 小算盤這個視窗是物件,[ 編輯 ] 功能表是物件, 那 27 個按鈕是物件, 顯示結果的文字方塊也是物件 小算盤這個視窗物件的屬性包含了 視窗名稱 小算盤 外框顏色 藍色 底色 白色 預設大小 寬 240 點 高 220 點 而小算盤這個視窗可以移動 關閉 縮小則是它的 " 方法 " 再往更小的物件看 "C" 這個按鈕 : 2-2

引進物件導向概念 chapter 2 屬性 : 尺寸 文字 字體顏色 外框顏色方法 : 清除顯示框從上述的實例應該可以對物件 屬性及方法建立較具體的概念, 如果還有些模糊也沒關係, 因為程式寫得愈多, 觀念就會愈來愈清楚 物件導向程式設計 在 VB 的程式設計裡, 我們所撰寫的程式碼是針對安排在表單裡的物件去設計的, 而且在設計階段也必須為個別的物件調整顏色 大小及位置等屬性, 換句話說, 整個設計都是以物件為主, 所以稱為 物件導向程式設計 事件導向程式設計 我們為表單裡的物件所撰寫的程式碼, 其程式的啟動執行是有條件的, 必須是某一事先設計好的事件或動作發生了, 才能執行某一段相對的程式碼, 例如上一章的範例程式, 因為程式碼寫在副程式 Command1_Click() 裡面, 所以必須 [ 輸入完畢 ] 按鈕被按下了, 才會啟動副程式裡的那一段程式碼 程式碼是針對物件的某一事件設計, 所以也稱為 事件導向程式設計 或是 事件驅動程式設計 再以小算盤為例, 當使用者執行了小算盤程式, 只是把小算盤的表單打開, 就算輸入了 6 7, 只要不點選 "=" 等號, 或按下 enter 鍵, 計算是不會執行的, 因為有關計算的程式碼是寫在 "=" 等號這個按鈕物件裡, 而且是只有滑鼠左鍵點一下 (click) 或按下 enter 這個事件發生了, 才會執行, 點滑鼠右鍵是不動的, 這就是所謂的 " 物件導向 " 或是 " 事件導向 " 2-3

2-1 常用的屬性 學習重點 認識常見的屬性 了解屬性的設定方法 色彩的表示法不同的物件有不同的屬性, 但也會有一些共通的屬性 在表單中點選不同的物件, 屬性視窗就會顯示這個物件的所有屬性, 設定屬性時, 點選該屬性右邊的內容欄就可更改 屬性視窗有 " 字母順序 " 和 " 性質分類 " 二種排列法, 前者會將所有屬性按字母順序排列, 後者則是按屬性的性質分類 底下列出幾個比較常見的屬性及不同屬性值對物件的改變 Name 控制項的名稱, 每一個控制項都會有的屬性 通常當你在表單上配置一個控制項時,VB 會自動為它訂一個 name, 如果是 textbox, 依序是 text1 text2 text3, 如果是 CommandButton, 則會是 command1 command2 command3, 其他控制項也一樣, 但也可以自行從屬性視窗中修改 自訂有個好處, 可以訂一個容易辨識的名稱, 這在表單上同時存在許多控制項時特別好用 以第一章習題第三題來說, 如果由系統自訂名稱, 用來輸入班級的文字方塊會訂成 text1, 用來輸入姓名的文字方塊會訂成 text2, 但是當你在程式碼裡看到 text1 或 text2, 可能會弄不清那一個是班級, 那一個是姓名 但如果改成 text_class 及 text_name 就會清楚多了 Name 這個屬性使用率非常高, 因為在撰寫程式碼時如使用到其它的屬性, 都必須在屬性前面加上該物件的 name 延用前面的例子來說, 文字方塊內 2-4

引進物件導向概念 chapter 2 容的屬性是 text, 如果要在程式執行時將姓名文字方塊的內容改變成 " 張三豐 ", 不可以只寫 text=" 張三豐 " 因為無法分辨是設定給姓名文字方塊, 還是給班級文字方塊, 所以必須寫成 text_name.text=" 張三豐 " 請記得, 屬性的使用方法是物件名稱.屬性名稱 = 屬性值 Apperance 設定控制項的外觀, 設成 1 是立體,0 是平面 對部份控制項是無效的, 如表單物件及 CommandButton 以下為 TextBox CommndButton CheckBox OptionButton ComboBox 及 ListBox 在 Apperance 分別設成 1 及 0 的比較 Apperance=1 Apperance=0 2-5

BackColor 設定控制項的背景色 顏色的設定方法有二種 : 從屬性視窗 BackColor 項目直接拉下選單時, 可以有 系統配色 及 調色盤 二種選擇方式, 其中系統配色不易理解, 建議直接從調色盤中挑選顏色 直接填入數字來配色, 使用的是 RGB 配色 ( 紅綠藍 ), 不談原理, 簡單的說, 寫的時候依 &HBBGGRR 格式填寫, 其中 BB 代表藍色數字,GG 代表綠色數字,RR 代表紅色數字, 每一個位數是 0 到 F 的十六進位數字, 所以 &HFF0000 藍色 &H00FF00 綠色 &H0000FF 紅色 &HFFFFFF 白色 &H000000 黑色 &H888888 灰色 RGB 是一種用在螢幕顯示的色彩空間, 由 R( 紅 )G( 綠 )B( 藍 ) 三個原色調配出所有的色彩, 表示時用 (00) 16 到 (FF) 16 表示一個色彩, 數字愈小顏色愈深, 數字越大越亮, 所以當三個色彩都等於 0 時為黑色, 三個色彩都是最大值 FF 時就配出白色 另一種指定顏色的方法可以在撰寫程式碼時使用, 但在屬性視窗中無法使用 : VB 定義了幾個常用的色彩常數, 如果要用的色彩正好在這些色彩中, 就可以直接使用 :vbblack -- 黑色,vbRed -- 紅色,vbGreen -- 綠色,vbYellow -- 黃色,vbBlue -- 藍色,vbMagenta-- 洋紅,vbCyan -- 青色,vbWhite -- 白色例如 : Text1.BackColor = vbred 2-6

引進物件導向概念 chapter 2 ForeColor 設定控制項的前景色 使用方式與 BackColor 相同, 但須注意的是, 所謂前景色, 包含了控制項的文字顏色及筆畫顏色 Font 控制項中使用到的文字字型 包含字體 大小及顏色等與文字相關的設定 如果表單中有 9 個控制項, 全部都要使用標楷體, 此時是否只能一個一個的設定? 其實有二種方法可以快速的將 9 個控制項都設為標楷體或其它字型 : (1) 使用 Pointer 工具選取所有的控制項, 再從屬性視窗中設定 font 項目, 就可以全部設定 如果不是要全選, 可以先按住 ctrl 鍵, 再點選要設定的控制項 (2) 表單中的控制項如果不設定字型, 會繼承表單字型的設定 所謂繼承是指下一層物件的屬性如果不設定, 則會沿用上一層物件相同屬性的設定 所以在表單加入控制項之前先設定好表單的字型為標楷體, 則接下來加入的物件, 其預設字型就是標楷體 不只是 font 如此, 其它屬性也具有相同的特性 Text 控制項的輸入或顯示的文字內容 在 VB6.0 專業版的控制項中只有 TextBox 及 ComboBox 使用這個屬性 Caption 也是控制項的文字內容, 但只能顯示, 不能輸入 在 VB6.0 專業版使用這個屬性的有表單 Form Label CommandButton Frame OptionButton 及 CheckBox 2-7

Enable 決定控制項能否回應使用者做出的事件 用另一種說法就是這個屬性的值可以決定控制項要不要被使用者操作 可以設成 True 或 False,Enable=False 就是設成無法操作 Enable=True 可以輸入 Enable=False 文字是灰色的, 無法輸入 TabIndex 設定控制項在表單中的定位順序 在表單中加入控制項時, 每一個控制項會有一個 TabIndex 屬性, 先加入表單的控制項,TabIndex 屬性值愈小 當表單被執行時, 鍵盤游標會先停駐在 TabIndex 值最小, 而且可以輸入或選擇的控制項上 ( 稱為 " 駐點 ") 以下方表單為例, 共有五個控制項, 其中二個文字方塊及 ComboBox 可以輸入或選擇, 正常情形下,TabIndex 的值應該是姓名文字方塊 < 地址文字方塊 < 出生地 ComboBox, 所以表單執行時鍵盤游標會停駐在姓名文字方塊, 按 Tab 鍵會移到地址文字方塊, 再按 Tab 則可以用鍵盤選擇居住地, 如果改變 TabIndex 的值, 就會改變順序 一個表單如果是做為填表用途, 則表單中會有許多的文字方塊或選單, 這時使用者可能會使用鍵盤代替滑鼠來操作, 仔細設定 TabIndex 的值, 會給使用者很好的便利性 2-8

引進物件導向概念 chapter 2 Visible 設定控制項是否要隱藏 預設為顯示, 也就是 True, 若設為 False, 則該物件雖然存在表單上, 但實際上的看不到的, 在某些情形下會有隱藏的需求 Value 設定或表示控制項是否被核取, 較常用在 CheckBox 及 OptionButton CheckBox-0 是不選定 ( 預設值 );1 為有選定 ;2 為變灰 ( 表示沒有作用 ) OptionButton-True 表示已選取了該按鈕 ;False ( 預設值 ) 表示沒有選取該按鈕 Height 與 Width 設定控制項或物件的高度及寬度 設定時單位並不是公分 英吋或是影像處理常用的 Pixel, 而是微軟為了印表所設計的特有單位叫 Twip, 好處是可以使不同的印表機印出相同尺寸的物件,1440twips 約為一英吋, 但是並不是為了顯示器所設計, 所以不同解析度的顯示器,twip 大小是不同的 在 1024 768 的顯示器下,1000twips 約為 2 公分, 但在 800 600 解析度下則會增大到約 2.6 公分 2-9

Left 及 Top 用來設定物件的最左方及最上方與收納器的距離, 通常 " 收納器 " 就是物件所在的表單 距離單位一樣是 twip FontSize 字體大小設定 例如 : 將 Text1 物件字體大小設為 20 點 Text1.FontSize=20 FontName 設定字型名稱 例如 : 將 Text1 物件的字體改為標楷體 Text1.FontName= 標楷體 MultiLine 設定 TextBox 控制項是否能夠接受和顯示多行文字 此屬性只能在表單設計時設定, 不能在程式執行時變更 這個屬性和 Visible 一樣, 用 True( 允許多行文字 ) 和 False( 不可以 ) 設定 2-10

引進物件導向概念 chapter 2 2-1-1 應用實例 ( 一 ) 試做一個填寫個人基本資料的表單, 並且執行時按 TAB 鍵可以按左到右, 上到下的順序移動駐點 在這個表單裡用到了 Label TextBox OptionButton CheckBox ComboBox ListBox 六種控制項 2-11

表單配置 Text1 Label1 Label2 Label3 Label4 Label5 Combo Form1 Label7 Text2 Text3 Option1 Option2 Check1 Check2 Check3 Label List 屬性設定 除標題字外, 其餘控制項的 Font 全設成新細明體,12 點字 其它屬性如下表 : 物件屬性設定屬性說明 Form1 Caption 個人資料設定表單標題 Label1 Caption XX 公司個人基本資料標題字 Font 標楷體,14 點字 Label2 Caption 姓名 Label3 Caption 身份證字號 Label4 Caption 性別 Label5 Caption 語言能力 Label6 Caption 休閒活動 Label7 Caption 員工代號 Text1 Text 清除 輸入員工姓名 Text2 Text 清除 輸入員工代號 2-12

引進物件導向概念 chapter 2 物件 屬性 設定 屬性說明 Text3 Text 清除 輸入身份證字號 Option1 Caption 男 Value True 預設為被選擇 Option2 Caption 女 Check1 Caption 國語 Check2 Caption 台語 Check3 Caption 客家話 Combo1 Caption 出生地 提示字 List 台北 高雄 台中 台南 桃園 出生地的選項 List1 List 旅遊 閱讀 音樂 電影 運動 休閒活動的選項 MultiSelect 1- 簡易多重選取 操作注意 : ComboBox 與 ListBox 的選擇項目輸入方法是一樣的 : 1. 以 List1 為例, 先找到 List 屬性, 點選箭頭, 輸入 " 旅遊 ", 接著不要按 Enter, 而是按 Ctrl+ Enter, 就可以繼續輸入下一筆 2. OptionButton 在同一個表單裡面, 如果不分群組, 則不論有多少個 OptionButton, 只有一個可以被選擇 預設狀態這些 OptionButton 是在未被選擇的狀態, 如果要其中一個是預設, 則將其 Value 屬性設成 True 即可, 以本例而言, 如果公司裡男性員工居多, 就可以將 " 男 " 的 OptionButton 定為預設 2-13

3. 休閒運動的選單要允許重覆選擇,ListBox 控制項的 MultiSelect 就是用來設定是否允許多選,MultiSelect 屬性值有 3 個 : 0- 不能多重選取 1- 簡易多重選取, 用滑鼠或空白鍵即可選取, 同一選項第二次點選即為取消 2- 進階多重選取, 可以配合 CTRL 及 SHIFT 鍵做不連續及連續的選取, 在本例中請設為 1 4. 表單也是物件, 它的 Caption 屬性值文字, 會顯示在表單的標題列 5. 最後設定 Text1 Text2 Text3 Option1 Check1 Check2 Ckeck3 Combo1 及 List1 的 TabIndex 屬性值, 必須依由小到大的順序設定 其中 Option2 可以不必設, 因為它與 Option1 是同一組的 6. 物件的對齊這個表單裡共計有 18 個物件, 為了整齊美觀, 要將橫向及直向的物件排列整齊,VB 的 [ 格式 ]/[ 對齊 ] 提供了對齊的操作 用將未排列整齊的物件框選起來 點選 [ 格式 ]/[ 對齊 ]/[ 主控項中間 ] 垂直對齊 水平對齊 2-14

引進物件導向概念 chapter 2 2-1-2 應用實例 ( 二 ) 將應用實例 ( 一 ) 的表單改為下圖 : 在這個範例裡面, 再把一個新控制項 Frame 帶進來, 用來將 OptionButton 分組, 如果不使用 Frame, 則表單裡 5 個不同性質的 OptionButton 只有一個可以被選取 Frame1 Frame2 Option3 Option4 Option5 屬性設定 與應用實例 ( 一 ) 相同部份不重覆列出, 一樣將新加入的控制項 Font 屬性設為新細明體,12 點字 物件 屬性 設定 屬性說明 Frame1 Caption 性別 Frame2 Caption 工作地點 Option3 Caption 台北廠 Option4 Caption 台中廠 Option5 Caption 高雄廠 2-15

操作注意 : 1. 在 Frame 中加入 OptionButton 的方式有二種, 此例正好用上這二種不同方式 : (1) 先製作性別的 Frame, 再將已存在的 " 男 " " 女 " 二個 OptionButton 剪下, 將滑鼠移到 Frame 的範圍內, 再貼上 注意, 不可以直接將 OptionButton 搬移到 Frame 裡面, 這樣的方式無法將 OptionButton 加入到 Frame (2) 製作工作地點的 Frame, 因為原本並不存在 " 台北廠 " " 台中廠 " 或 " 高雄廠 " 這幾個 OptionButton, 所以只能從工具箱重新製作, 製作時只要在 Frame 裡面拉出 OptionButton, 就可以將 Frame 與 OptionButton 結合在一起 2. 假設員工平均分佈在三個廠區, 所以三個 OptionButton 均不做預設 2-1-3 應用實例 ( 三 ) 利用物件的 Left 及 Top 屬性, 設計一個表單可以點選按鈕來移動物件 如右圖, 一開始填色的文字方塊在中間位置, 按下 [ 左 ] [ 中 ] [ 右 ] 三個按鈕, 可以使文字方塊水平往左 置中或靠右 Form1 Text1 Command1 Command3 Command2 本例除表單外, 共用了 4 個控制項, 包括 1 個 TextBox 及 3 個 CommandButton 2-16

引進物件導向概念 chapter 2 屬性設定 3 個 CommandButton 的 Font 屬性都是新細明體,14 點字 物件屬性設定屬性說明 Form1 Caption 物件移動 Text1 Text 清除 BackColor Command1 Caption 左 Command2 Caption 中 Command3 Caption 右 操作步驟 : 紅色 1. 因為是要 Text1 能水平移動, 而且按 [ 中 ] 按鈕時能回到原位置, 所以必須先知道 Text1 的原始位置 先在表單上點選 Text1, 就可以從屬性視窗裡查知 Left=1800 Top=600 請將表單視做座標軸的第四象限, 單位是 twip, 而 (Left,Top) 就相當於是座標系統的 (X,Y), 唯一的差別是 y 軸數字是正的 2. 再將 Text1 水平移至左邊預定要移過去的位置, 再查 Left 屬性值, 假設為 10 3. 再將 Text1 水平移至右邊預定要移過去的位置, 再查 Left 屬性值, 假設為 3600 4. 接下來要對三個按鈕分別撰寫程式碼 先對 [ 左 ] 按鈕點二下左鍵, 開啟程式碼視窗, 輸入 :Text1.Left=10 2-17

5. 一樣的方法,[ 中 ] 按鈕的程式碼是 : Private Sub Command2_Click() Text1.Left = 1800 End Sub [ 右 ] 按鈕的程式碼是 : Private Sub Command3_Click() Text1.Left = 3600 End Sub 6. 因為是水平移動, 所以在程式碼中並不須要去改變 Top 屬性值 7. 完成, 可以執行了 程式說明 Private Sub Command1_Click() Text1.Left = 10 End Sub 1. Sub 是副程式開頭,End Sub 是副程式結束 2. Command1_Click() 是副程式名稱, 而且從名稱可以知道這段副程式只有在 Command1 發生 Click 事件的時候才執行 ( 前面提過的 " 事件驅動 ") 3. Command1 發生 Click 事件的時候執行的程式碼是 Text1.Left = 10, 也就是將 Text1 離表單左邊的距離設為 10twips, 自然 Text1 就會往左移動了 2-18

引進物件導向概念 chapter 2 2-2 常用的方法 學習重點 熟悉常用的方法 使用 MSDN 查詢物件的方法及屬性 註解的使用 使用 SetFocus 提高操作的便利 VB 的表單及控制項, 除了有自己的屬性值外, 也有不同的方法 在物件的屬性與方法的概念上, 可以將屬性視為物件的特質, 而方法, 則可以看做是物件原本具有的能力 例如一部遙控汽車 car, 紅色, 長度 40 公分, 使用 4 顆電池, 有車燈, 這些是車子的屬性 以 VB 的語法可以寫成 : Car.Color=red Car.Length=40 Car.Cell=4 Car.Light=True 而車子在正常情況下, 它可以前進 後退 輪子右轉 輪子左轉 鳴喇叭, 這些出廠就具有的功能, 是車子的 " 方法 " 換一個方式講, 就是車子可以做的動作 當我們想讓這部車子能做前進 右轉 15 度, 再繼續前進的動作時, 以 VB 的語法就寫成 : Car.Forward Car.TurnRight 15 Car.Forward 2-19

可以看得出來, 屬性與方法的寫法不同之處在 "=", 描述物件的方法時不需要 "=", 而某些情況需要加上參數, 就像上面的右轉 15 度 以下用一個常見的方法 Move 來改寫應用實例 ( 三 ) 的範例 Move 移動表單或控制項語法 : 物件.Move left[, top, width, height] [] 表示可省略例如要將 A 物件移至 Left=10,Top=300 的位置, 就寫成 A.Move 10,300 除 Left 外, 其它參數可以省略, 這時就是水平移動 2-2-1 應用實例 ( 四 ) 請打開應用實例三所用的專案及表單, 在 [ 左 ] [ 中 ] [ 右 ] 三個 CommandButton 之中任一個點滑鼠左鍵二下, 打開程式碼視窗, 直接將三個事件程序修改成 Private Sub Command1_Click() Text1.Move 10 End Sub Private Sub Command2_Click() Text1.Move 1800 End Sub Private Sub Command3_Click() Text1.Move 3600 End Sub 關閉程式碼視窗, 執行程式, 會發現與原來的結果完全相同 程式說明 : 2-20

引進物件導向概念 chapter 2 Private Sub Command1_Click() Text1.Left=10 End Sub Private Sub Command1_Click() Text1.Move 10 End Sub 原程式的 Text1.Left=10 是以改變 Text1 物件的 Left 屬性使 Text1 改變位置, 而 Text1.Move10 是使 Text1 做出動作 (Text1 物件的 " 方法 "), 而這個動作就是移動到距離左邊緣 10twips 的位置, 雖然結果相同, 但方式不同 使用 MSDN 查詢可用的屬性及方法 如何知道物件或控制項有那些屬性? 有那些方法可使用? 屬性比較簡單, 在表單裡點選任一個控制項, 在屬性視窗裡列出的, 就是該物件全部的屬性 要查物件的方法, 先點選工具箱裡的控制項, 按下 [F1] 鍵開啟 MSDN, 再點選 [ 方法 ], 就會跳出另一個視窗, 列出這個物件的所有可用方法 2-21

點選需要說明的項目, 再點選 [ 顯示 ] 就會看到詳細的方法說明 除了 Move 外, 底下再介紹幾個較常使用的方法及其應用 Clear 清除物件內容 適用於 : ComboBox 及 ListBox AddItem 加入項目 適用於 : ComboBox 及 ListBox 語法 : 物件.AddItem 文字 例如 : List1.AddItem 台北市 就可在 List1 這個 ListBox 加入一個項目, 內容是 台北市 RemoveItem 移除項目 適用於 : ComboBox 及 ListBox 語法 : 例如 : 物件.RemoveItem index index 是項目的位置,0 表示第一個 List1.RemoveItem 2 就會移除 List1 裡面的第 3 個項目 2-22

引進物件導向概念 chapter 2 SetFocus 將駐點移至該物件或控制項 適用於 : 幾乎所有控制項 語法 : 例如 : 物件.SerFocus Text2.SetFocus 就會強制性的將駐點移到 Text2 物件 何謂駐點? 表單上無論有多少物件, 執行時同一時間只能有一個物件可以對使用做出反應, 例如表單上有二個文字方塊, 游標在那一個文字方塊, 輸入的字就在那一個文字方塊 ; 表單上有二個按鈕, 不使用滑鼠, 直接按 ENTER 鍵, 那一個按鈕有虛線框, 就是按下那一個按鈕, 這時稱這個物件取得 駐點 未取得駐點 取得駐點 ( 有文字游標 ) 2-2-2 應用實例 ( 五 ) 這個練習可以運用到 Clear AddItem RemoveItem 及 SetFocus 四個方法, 並且了解 SetFocus 對使用者操作便利性的重要 2-23

表單配置 List1 Command1 Label1 Text1 Command2 Command 3 屬性設定 所有字型為新細明體,12 點字 物件 屬性 設定 屬性說明 Form1 Caption 加入與移除 表單標題 Label1 Caption 加入項目 提示文字 List1 List 清除 List1 一開始完全空白 Text1 Text 清除 Text1 一開始是空的 TabIndex 0 使 Text1 一開始就取得駐點 Command1 Caption 清除 Command2 Caption 加入項目 Command3 Caption 移除項目 2-24

引進物件導向概念 chapter 2 說明 : Text1 的 TabIndex 設為 0, 成為表單中所有物件中 TabIndex 值最小的, 使程式一執行,Text1 便取得駐點而出現輸入文字的游標, 使用者可以馬上輸入, 不必再以滑鼠點選或是利用 Tab 鍵移動駐點, 這樣的設計給使用者很大的便利, 在設計表單上是很重要的技巧 程式碼中會使用到的方法 : 物件. 方法啟動的物件事件說明 List1.Clear Command1 Click 點選 " 清除 " 按鈕時將 List1 裡已有的項目清除 List1.AddItem Text1.text Command2 Click 點選 " 加入項目 " 鈕時, 將 Text1 文字方塊的內容 加進 List1 List1.RemoveItem 0 Command3 Click 點選 " 移除項目 " 按鈕時 將 List1 中的第一個項目 移除 Text1.SetFocus Command2 Command3 Click 每次 " 加入項目 " 或 移除項目 後, 將停駐點移回 Text1, 方便操作者繼續輸入 程式碼列表 Private Sub Command1_Click() List1.Clear ' 清除 List1 End Sub Private Sub Command2_Click() List1.AddItem Text1.Text ' 將 Text1 的內容加入 List1 Text1.Text ="" ' 清除 Text1 內容 Text1.SetFocus 'Text1 取得駐點 End Sub Private Sub Command3_Click() List1.RemoveItem 0 ' 清除 List1 的第一項 Text1.SetFocus 'Text1 取得駐點 End Sub 2-25

程式說明 1. 在這個範例中開始加進了程式註解, 以方便閱讀 程式註解程式註解用來加在程式碼中, 說明程式目的 變數或物件的用途及敘述說明等等 程式註解做得好, 日後程式維護就會較容易 但是註解是不可執行的, 必須使 VB 能辨識出註解, 才不會產生程式錯誤, 方法有二種 : 1. 加單引號開頭, 可以單獨一行, 也可以加在程式碼後面 2. REM 開頭, 只能單獨一行, 不能加在程式碼後面 2. 每次輸入並且加入 List1 之後, 除了把駐點移回 Text1 外, 也應將 Text1 清除, 方便再輸入, 但 TextBox 並沒有類似 Clear 的方法可清除, 只好將 Text1.Text 屬性改變成空字串 " " ( 兩個雙引號 ) 試試看把 Text1.SetFocus 改成 Text1.SetFocus, 加上單引號變成註解, 讓 VB 不執行這一行, 再執行看看, 操作方便嗎? 空字串是不是空白? 1. 在 VB 語言中, 文字資料稱為字串 ( 第三章另做詳細說明 ), 使用時必須以雙引號將字串括起來 2. 空白在 VB 中是一個字 (ASCII 編號 32), 只是沒有線條, 而空字串是沒有內容的字串, 所以 "" "" 2-26

引進物件導向概念 chapter 2 3. 這個程式實際上並不完整, 有 BUG 存在 試試看將 List1 的內容全部移除後繼續按 " 移除項目 " 鈕, 會如何? 這是因為 List1 已經空了, 再做 List1.RemoveItem 0, 就無法執行 要防止這個錯誤出現, 須在執行 List1.RemoveItem 0 前, 先檢查 List1 的項目個數, 若大於 0, 才執行 但這部份須使用到判斷敘述 IF, 所以在此就先略過 加入結束按鈕 在目前做過的範例中, 執行後都是按工具列的或用關閉程式視窗的方式結束程式, 實務上應該是放一個按鈕做為結束用, 這個按鈕的程式碼很簡單, 一個 END 敘述就可以了 Private Sub Command4_Click() End End Sub 2-27

2-3 習題 一. 選擇題 1. ( ) 下列描述何者是錯誤的?(A) 一個物件可以有許多種不同的事件 (B) 一個物件有許多種屬性 (C) 甲物件有 X 屬性, 在同一個表單裡的其它物件也會有 X 屬性 (D) 表單也是一個物件 2. ( ) 程式註解除了使用 REM, 也可以用那一符號代替?(A)? (B) [ (C) & (D) 3. ( ) 有關 CheckBox 與 OptionButon 的描述何者錯誤?(A) CheckBox 可以複選 (B) OptionButton 只能是單選 (C) 屬性值 Value=2 時,CheckBox 為核取 (D) 屬性值 Value=True, 表示 OptionButton 被選取 4. ( ) ListBox 控制項在表單中的預設名稱是 (A) List1 (B) Lb1 (C) List (D) Box1 5. ( ) 文字方塊的文字內容是設定在那一個屬性?(A) Caption (B) Text (C) Data (D) TabIndex 6. ( ) Label 的文字內容是設定在那一個屬性?(A) Caption (B) Text (C) Data (D) TabIndex 7. ( ) 要製作這樣的功能, 應該使用那一個控制項? (A) CommandButton (B) LlistBox (C) OptionButton (D) ComboBox 8. ( ) 那一個控制項常被用來將其它控制項分類或分組?(A) ListBox (B) TextBox (C) Frame (D) ComboBox 9. ( ) 文字方塊預設只能輸入一行文字, 如果要做多行文字輸入, 必須改變那一個屬性?(A) TabIndex (B) Tag (C) MultiLine (D) Enable 10. ( ) 物件可以由那一個方法的取得駐點?(A) TabIndex (B) SetFocus (C) Value (D) Move 2-28