第三章 以 borland c++ builder 開發 視窗介面為基之 i/o 控制技術

81
著著著著著 著著著著著 © 2004 © 2004 著著著 著著著 著著著 著著著 著著著 著著著 1 第第第 第 Borland C++ Builder 第第 第第第第第第第 I/O 第第第第

Upload: abie

Post on 14-Feb-2016

72 views

Category:

Documents


9 download

DESCRIPTION

第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術. 內容大綱. 緒論 微電腦 I/O 控制系統 圖形介面暨視窗為基的應用程式 Borland C++ Builder 程式開發 本書實習實作使用到的 BCB VCL 元件 總結. 緒論. 微電腦 I/O 控制系統到處可見 控制技術良劣,會影響操控效能 本書探討個人電腦 I/O 控制技術 使用 PC 的輸出入埠,進行控制資料的輸出入 操控介面完全仰賴控制軟體 圖形為主的視窗介面控制技術. 緒論 ( 續 ). 個人電腦平台下的軟體開發工具不勝枚舉 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊11

第三章 以 Borland C++ Builder 開發視窗介面為基之 I/O 控制技術

Page 2: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊22

內容大綱 緒論緒論 微電腦微電腦 I/OI/O 控制系統控制系統 圖形介面暨視窗為基的應用程式圖形介面暨視窗為基的應用程式 Borland C++ Builder Borland C++ Builder 程式開發程式開發 本書實習實作使用到的本書實習實作使用到的 BCB VCLBCB VCL 元件元件 總結總結

Page 3: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊33

緒論 微電腦微電腦 I/OI/O 控制系統到處可見控制系統到處可見 控制技術良劣,會影響操控效能控制技術良劣,會影響操控效能 本書探討個人電腦本書探討個人電腦 I/OI/O 控制技術控制技術

使用使用 PCPC 的輸出入埠,進行控制資料的輸出入的輸出入埠,進行控制資料的輸出入 操控介面完全仰賴控制軟體操控介面完全仰賴控制軟體 圖形為主的視窗介面控制技術圖形為主的視窗介面控制技術

Page 4: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊44

緒論 ( 續 )

個人電腦平台下的軟體開發工具不勝枚舉個人電腦平台下的軟體開發工具不勝枚舉 MS MS 的的 Visual StudioVisual Studio Borland Borland 的的 C++ BuilderC++ Builder 、、 JBuilderJBuilder 、、 DelphiDelphi SUN SUN 的的 JAVAJAVA

微電腦微電腦 I/OI/O 控制技術和程式開發系統或語言無關控制技術和程式開發系統或語言無關 使用功能強大且容易上手的程式開發工具使用功能強大且容易上手的程式開發工具

要求讀者程式實作要求讀者程式實作 Borland Borland 的 的 C++ Builder C++ Builder 讀者必須具備使用及撰寫讀者必須具備使用及撰寫 C/C++C/C++ 的能力的能力

Page 5: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊55

內容大綱 ( 我們在哪裡 ?)

緒論緒論 微電腦微電腦 I/OI/O 控制系統控制系統 圖形介面暨視窗為基的應用程式圖形介面暨視窗為基的應用程式 Borland C++ Builder Borland C++ Builder 程式開發程式開發 本書實習實作使用到的本書實習實作使用到的 BCB VCLBCB VCL 元件元件 總結總結

Page 6: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊66

微電腦 I/O 控制系統 微電腦控制系統的應用到處可見微電腦控制系統的應用到處可見

3C3C 產品的民生消費物品產品的民生消費物品 大型公共設施工業設備、或國防武器大型公共設施工業設備、或國防武器

內有獨立運作或協調運轉的電腦控制系統內有獨立運作或協調運轉的電腦控制系統

Page 7: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊77

微電腦 I/O 控制系統 ( 續 )

簡單的控制系統簡單的控制系統 作成微電腦晶片,直接控制設備作成微電腦晶片,直接控制設備 控制的動作較簡單控制的動作較簡單 毋須高度複雜的運算毋須高度複雜的運算 功能較簡單且較經濟功能較簡單且較經濟

如:玩具內的聲光控制,簡便型計算機如:玩具內的聲光控制,簡便型計算機

Page 8: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊88

微電腦 I/O 控制系統 ( 續 )

複雜或高彈性控制系統複雜或高彈性控制系統 採用專用的控制系統採用專用的控制系統

可能採用專用的或泛用的電腦系統可能採用專用的或泛用的電腦系統 控制邏輯或是控制程式是以軟體寫成控制邏輯或是控制程式是以軟體寫成

隨時可以更新和變更隨時可以更新和變更 提供較大的操控彈性。提供較大的操控彈性。 如:暖氣空調設備、升降梯、火災受訊設備、門如:暖氣空調設備、升降梯、火災受訊設備、門禁系統禁系統

Page 9: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊99

機電控制系統控制技術類型 硬式控制法硬式控制法

完全採用硬體設備完全採用硬體設備 譬如:公寓的供水系統—兩段浮筒和抽水馬達及繼電器譬如:公寓的供水系統—兩段浮筒和抽水馬達及繼電器

軟式控制法軟式控制法 使用操控軟體和微電腦使用操控軟體和微電腦 使用標準人機介面設備使用標準人機介面設備

滑鼠、鍵盤滑鼠、鍵盤 譬如:無人駕駛的捷運車系統、工廠的無人搬運車控制系譬如:無人駕駛的捷運車系統、工廠的無人搬運車控制系統、核電廠的廠區控制系統、或複雜加工機台的控制系統統、核電廠的廠區控制系統、或複雜加工機台的控制系統

Page 10: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1010

機電系統硬式控制法

感測器 致動器實際連線

Page 11: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1111

機電系統軟式控制法

軟體操控感測器 致動器

Page 12: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1212

控制系統概觀 一定會有前面章節敘述過的感測器和致動器一定會有前面章節敘述過的感測器和致動器 感測器是系統的輸入,致動器是系統輸出感測器是系統的輸入,致動器是系統輸出 二者間的關聯就是所謂的控制邏輯二者間的關聯就是所謂的控制邏輯

硬式控制模式將控制邏輯硬生生地以線路連結硬式控制模式將控制邏輯硬生生地以線路連結 軟式控制則以邏輯程式或操控軟體,彈性地銜接二軟式控制則以邏輯程式或操控軟體,彈性地銜接二者者

Page 13: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1313

內容大綱 ( 我們在哪裡 ?)

緒論緒論 微電腦微電腦 I/OI/O 控制系統控制系統 圖形介面暨視窗為基的應用程式圖形介面暨視窗為基的應用程式 Borland C++ Builder Borland C++ Builder 程式開發程式開發 本書實習實作使用到的本書實習實作使用到的 BCB VCLBCB VCL 元件元件 總結總結

Page 14: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1414

圖形介面暨視窗為基的應用程式 視窗為基的電腦作業系統已成主流視窗為基的電腦作業系統已成主流

Apple Macintosh OSApple Macintosh OS Microsoft WindowsMicrosoft Windows 以以 XWindowXWindow 為基的 為基的 Unix Unix 作業系統作業系統

Sun Sun 工作站電腦的 工作站電腦的 SolarisSolaris LinuxLinux 系統上的系統上的 Red HatRed Hat

電腦應用程式普遍採用圖形式人機交談介面電腦應用程式普遍採用圖形式人機交談介面 滑鼠成為個人電腦和工作站電腦的標準配備滑鼠成為個人電腦和工作站電腦的標準配備 典型的圖形式人機交談介面:典型的圖形式人機交談介面:

使用者操控滑鼠,在視窗為基的應用程式內,顯示的各種控制項使用者操控滑鼠,在視窗為基的應用程式內,顯示的各種控制項 (cont(controls)rols) 上,以滑鼠或敲擊、或快擊兩次、或拖拉等動作,下達各式操作上,以滑鼠或敲擊、或快擊兩次、或拖拉等動作,下達各式操作指令指令

Page 15: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1515

圖形式人機交談方式 提供了直覺的軟體操作方式提供了直覺的軟體操作方式 合乎人類的習性合乎人類的習性 易讓操作者聯想或監看操控結果易讓操作者聯想或監看操控結果 本書探討的微電腦本書探討的微電腦 I/OI/O 控制技術需要圖形介面控制技術需要圖形介面

採用圖形式人機交談介面採用圖形式人機交談介面 達成圖形監視和控制的效果達成圖形監視和控制的效果

Page 16: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1616

內容大綱 ( 我們在哪裡 ?)

緒論緒論 微電腦微電腦 I/OI/O 控制系統控制系統 圖形介面暨視窗為基的應用程式圖形介面暨視窗為基的應用程式 Borland C++ Builder Borland C++ Builder 程式開發程式開發 本書實習實作使用到的本書實習實作使用到的 BCB VCLBCB VCL 元件元件 總結總結

Page 17: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1717

Borland C++ Builder 程式開發 BCBBCB 提供視窗程式開發者 提供視窗程式開發者 RAD (Rapid Application DeRAD (Rapid Application De

velopment)velopment) 的技術的技術 採用採用 RADRAD 技術開發視窗為基的應用程式技術開發視窗為基的應用程式

以一個主視窗作為主要的系統介面以一個主視窗作為主要的系統介面 BCB BCB 的程式開發專案的程式開發專案 (Project)(Project) 便是以「表單」為主要介面便是以「表單」為主要介面 表單本身就是一個視窗,內有各式各樣的「控制項」表單本身就是一個視窗,內有各式各樣的「控制項」 (controls)(controls) 應用程式開發人員規劃各個表單的內容,並仔細設計分析各個應用程式開發人員規劃各個表單的內容,並仔細設計分析各個表單的邏輯流程,以展現應用程式應有的功能表單的邏輯流程,以展現應用程式應有的功能

程式撰寫便是處理各個控制項接收訊息或事件時的處理程序程式撰寫便是處理各個控制項接收訊息或事件時的處理程序

Page 18: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1818

BCB 提供的 IDE (Integrated Development Environment) 整合開發環境

程式編輯環境程式編輯環境 指令或函式語法提示環境指令或函式語法提示環境 編譯指令和執行程式編譯指令和執行程式 原始程式除錯和模擬執行結果原始程式除錯和模擬執行結果 程式執行和測試環境程式執行和測試環境 應用程式包裝環境應用程式包裝環境 其他資料庫取用,資源編輯和構建等支援環境其他資料庫取用,資源編輯和構建等支援環境

Page 19: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊1919

BCB 程式開發 IDE

Page 20: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2020

BCB 係提供 VCL (Visual Component Library) 元件庫

繼承架構嚴謹的各式類別和元件繼承架構嚴謹的各式類別和元件 建立物件直接使用或擴充它建立物件直接使用或擴充它 提供各式各樣的功能提供各式各樣的功能

各式各式 Wizard Wizard 精靈工作的以進行的元件庫精靈工作的以進行的元件庫 智慧型應用程式框架開發環境智慧型應用程式框架開發環境

Page 21: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2121

使用 BCB 新建一個應用程式 系統會內定為使用者撰寫一個專用的系統會內定為使用者撰寫一個專用的 TForm1TForm1類別,繼承自類別,繼承自 VCLVCL 內的內的 TForm TForm 類別類別 附有一個表單的定義檔附有一個表單的定義檔 (Unit1.dfm)(Unit1.dfm)

程式開發者使用程式開發者使用 VCLVCL 內的各種元件,以類似堆內的各種元件,以類似堆積木的方式,透過積木的方式,透過 IDEIDE環境下的表單設計介面,環境下的表單設計介面,以圖像拖拉在表單上添加各種元件以圖像拖拉在表單上添加各種元件 設計過程系統會幫您撰寫相關的設計過程系統會幫您撰寫相關的 C++C++ 程式在程式在 TFTF

orm1orm1 類別程式內類別程式內

Page 22: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2222

VCL 內的元件 執行時可顯現於表單者執行時可顯現於表單者

表單中的控制項表單中的控制項 扮演使用者和系統的交談介面扮演使用者和系統的交談介面 透過這些控制項內的事件處理函式透過這些控制項內的事件處理函式 (event handlers)(event handlers)觸動行功能。觸動行功能。

沒有視覺顯示功能者沒有視覺顯示功能者 提供物件協助提供物件協助

如:如: AnsiStringAnsiString 類別類別

Page 23: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2323

表單控制項 控制項元件控制項元件

僅扮演介面角色只紀錄本身的特性僅扮演介面角色只紀錄本身的特性 (attributes)(attributes) 和狀和狀態態 (states)(states) 供使用者和程式辨視供使用者和程式辨視

其內的特性其內的特性 (attributes)(attributes) 和狀態和狀態 (states) (states) ,描述應用,描述應用程式資訊程式資訊

添加於表單類別內的添加於表單類別內的 VCLVCL 元件均以元件均以 C++C++ 物件指標物件指標 (o(object pointer)bject pointer) 指稱指稱

Page 24: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2424

內容大綱 ( 我們在哪裡 ?)

緒論緒論 微電腦微電腦 I/OI/O 控制系統控制系統 圖形介面暨視窗為基的應用程式圖形介面暨視窗為基的應用程式 Borland C++ Builder Borland C++ Builder 程式開發程式開發 本書實習實作使用到的本書實習實作使用到的 BCB VCLBCB VCL 元件元件 總結總結

Page 25: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2525

本書實習實作使用到的 BCB VCL 元件 僅介紹與本書目標相關的程式開發,所需的僅介紹與本書目標相關的程式開發,所需的 VCVC

LL 元件元件 元件的屬性和成員函式也僅介紹與本課程相關者元件的屬性和成員函式也僅介紹與本課程相關者

其他的元件,讀者可視需要直接參閱其他的元件,讀者可視需要直接參閱 BCBBCB 提供提供的線上說明資料的線上說明資料 參閱相關說明,並透過參閱相關說明,並透過 IDEIDE環境在程式開發環境下環境在程式開發環境下自行演練各種屬性變更自行演練各種屬性變更

Page 26: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2626

BCB VCL 元件 表單元件 表單元件 (TForm) (TForm) 按鈕元件 按鈕元件 (Tbutton) (Tbutton) 群組框元件 群組框元件 (TGroupBox) (TGroupBox) 捲選盒元件 捲選盒元件 (TComboBox) (TComboBox) 面板元件 面板元件 (TPanel) (TPanel) 碼表元件 碼表元件 (TTimer) (TTimer) 標籤元件 標籤元件 (TLabel)(TLabel) 輸入元件 輸入元件 (TEdit)(TEdit) 升降元件 升降元件 (TUpDown)(TUpDown)

Page 27: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2727

表單元件 (TForm)

不直接使用不直接使用 不直接定義一個不直接定義一個 TFormTForm類別的物件使用類別的物件使用 使用物件導向程式語言的繼承特性,以使用物件導向程式語言的繼承特性,以 TFormTForm類別類別為繼承對象,另行設計一個使用者可以盡情擴充的新為繼承對象,另行設計一個使用者可以盡情擴充的新表單類別表單類別

自動由自動由 BCBBCB 處理處理自動產生一個繼承自自動產生一個繼承自 TFormTForm類別的新表單類別,類別的新表單類別,名為名為 TForm1TForm1 產生一個產生一個 unit1.hunit1.h ,, unit1.cppunit1.cpp ,及一個描述表單佈,及一個描述表單佈置的置的 unit1.dfmunit1.dfm等檔案等檔案

Page 28: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2828

TForm 元件的主要屬性和內容

類別名稱,內定為TForm1,建議開發者改成較符合定義的名稱。名稱變更後,BCB會將原始程式內的類別名稱變更。Name

視窗抬頭。設定為能反映表單內涵或用途的說明。Caption

說明屬性名稱

類別名稱,內定為TForm1,建議開發者改成較符合定義的名稱。名稱變更後,BCB會將原始程式內的類別名稱變更。Name

視窗抬頭。設定為能反映表單內涵或用途的說明。Caption

說明屬性名稱

Page 29: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊2929

TForm 元件接受的主要事件和處理邏輯

在該事件的處理函式內寫程式執行滑鼠游標移動時的功能。常用於使用者押著滑鼠鍵拖拉滑鼠再釋放滑鼠鍵時的動作。

OnMouseMove

在該事件的處理函式內寫程式執行滑鼠按鈕按鈕鬆開時的功能。

OnMouseUp

在該事件的處理函式內寫程式執行滑鼠按鈕壓下時的功能。至於左、右、中鍵的辨識,以及是否同時按下如Shift等特殊鍵的辨識,均透過事件以參數傳遞給事件處理函式。

OnMouseDown

在該事件的處理函式內進行表單的內容初始化,如清單內的項目設定、各物件初始狀態設定等。

OnCreate

說明事件名稱

在該事件的處理函式內寫程式執行滑鼠游標移動時的功能。常用於使用者押著滑鼠鍵拖拉滑鼠再釋放滑鼠鍵時的動作。

OnMouseMove

在該事件的處理函式內寫程式執行滑鼠按鈕按鈕鬆開時的功能。

OnMouseUp

在該事件的處理函式內寫程式執行滑鼠按鈕壓下時的功能。至於左、右、中鍵的辨識,以及是否同時按下如Shift等特殊鍵的辨識,均透過事件以參數傳遞給事件處理函式。

OnMouseDown

在該事件的處理函式內進行表單的內容初始化,如清單內的項目設定、各物件初始狀態設定等。

OnCreate

說明事件名稱

Page 30: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3030

按鈕元件 (Tbutton)

典型的表單控制項典型的表單控制項 常常作為使用者執行程式某項功能的介面常常作為使用者執行程式某項功能的介面 可動態設定能否使用的狀態可動態設定能否使用的狀態 (Enabled)(Enabled)

可動態設定藏、現可動態設定藏、現 (Visible)(Visible) 的狀態的狀態

Page 31: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3131

TButton 元件構建工具及示意

Page 32: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3232

Tbutton 元件的主要屬性和內容

該元件的顯現或隱藏狀態屬性。Visible

啟動或抑制該按鈕的使用能力。常常配合呈式系統狀態改變時進行true及false變更。Enabled

按鈕功能或內涵說明。可以在程式執行中變更以提示該按鈕的功能,也可同時反應不同的按鈕功能。如一個Caption為新增資料的按鈕,當使用者押按後進入新增模式,此時會將按鈕的Caption改成儲存,進行儲存功能。

Caption

按鈕名稱,常在程式中使用。以C++指標方式指稱該按鈕,進行該控制項屬性的變更。最好不要用內定的名稱,自行設定有意義的名稱。

Name

說明屬性名稱

該元件的顯現或隱藏狀態屬性。Visible

啟動或抑制該按鈕的使用能力。常常配合呈式系統狀態改變時進行true及false變更。Enabled

按鈕功能或內涵說明。可以在程式執行中變更以提示該按鈕的功能,也可同時反應不同的按鈕功能。如一個Caption為新增資料的按鈕,當使用者押按後進入新增模式,此時會將按鈕的Caption改成儲存,進行儲存功能。

Caption

按鈕名稱,常在程式中使用。以C++指標方式指稱該按鈕,進行該控制項屬性的變更。最好不要用內定的名稱,自行設定有意義的名稱。

Name

說明屬性名稱

Page 33: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3333

Tbutton 元件接受的主要事件和處理邏輯

按鈕元件遭滑鼠鍵釋放時產生的事件。處理函式內將反映該按鈕形狀呈現回彈時的功能:譬如停止該單音的演奏。OnMouseUp

按鈕元件遭滑鼠鍵押下時產生的事件。處理函式內將反映該按鈕形狀呈現下壓時的功能:譬如開始演奏某一單音。

OnMouseDown

按鈕元件遭滑鼠點押成功(滑鼠押下和釋放均在本元件內)產生的事件。處理函式內容除了可以偵測及改變其他元件的屬性外,也可偵測及改變自己的屬性。

OnClick

說明事件名稱

按鈕元件遭滑鼠鍵釋放時產生的事件。處理函式內將反映該按鈕形狀呈現回彈時的功能:譬如停止該單音的演奏。OnMouseUp

按鈕元件遭滑鼠鍵押下時產生的事件。處理函式內將反映該按鈕形狀呈現下壓時的功能:譬如開始演奏某一單音。

OnMouseDown

按鈕元件遭滑鼠點押成功(滑鼠押下和釋放均在本元件內)產生的事件。處理函式內容除了可以偵測及改變其他元件的屬性外,也可偵測及改變自己的屬性。

OnClick

說明事件名稱

Page 34: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3434

Exercise 3-1 :實作一個電子琴演奏介面 在表單上佈置一個琴鍵畫面在表單上佈置一個琴鍵畫面

內含一組琴鍵按鈕有八個白鍵和五個黑鍵內含一組琴鍵按鈕有八個白鍵和五個黑鍵 在類別下預先增添二個成員函式在類別下預先增添二個成員函式

void play_a_key( int num ) void play_a_key( int num ) 驅動電腦喇叭發出琴音驅動電腦喇叭發出琴音

void stop_a_key()void stop_a_key()停止喇叭的發音停止喇叭的發音

Page 35: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3535

Exercise 3-1 :實作一個電子琴演奏介面( 續 )

在琴鍵按鈕的在琴鍵按鈕的 OnMouseDownOnMouseDown 滑鼠事件處理函滑鼠事件處理函式中,以該琴鍵的琴音計數為參數呼叫式中,以該琴鍵的琴音計數為參數呼叫 play_a_play_a_key()key() 函式函式

在表單類別的在表單類別的 OnMouseUp OnMouseUp 事件下添加處理函事件下添加處理函式呼叫式呼叫 stop_a_key()stop_a_key()

將所有的琴鍵的將所有的琴鍵的 OnMouseUp OnMouseUp 事件處理函式導事件處理函式導引到引到 FormMouseUp()FormMouseUp() 處理函式處理函式

Page 36: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3636

Exercise 3-1 的琴鍵表單介面

Page 37: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3737

群組框元件 (TGroupBox)

將一些控制項組成一個群組將一些控制項組成一個群組 視覺上可與其他控制項區隔視覺上可與其他控制項區隔 框內的控制項彼此維持相對位置,以整體方式框內的控制項彼此維持相對位置,以整體方式一齊佈設在表單上,有助於表單的編排設計一齊佈設在表單上,有助於表單的編排設計 主要的物件屬性是顯示群組頭銜的主要的物件屬性是顯示群組頭銜的 CaptionCaption 屬屬性性

Page 38: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3838

群組框元件 TGroupBox 構建工具及示意

Page 39: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊3939

捲選盒元件 (TComboBox)

常見的表單控制項元件常見的表單控制項元件 讓使用者設定某項資料值讓使用者設定某項資料值 資料值只能由一堆固定的值中選擇資料值只能由一堆固定的值中選擇 一堆固定的值列成一個捲選清單一堆固定的值列成一個捲選清單

Page 40: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4040

TComboBox 元件構建工具及示意

Page 41: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4141

TComboBox 元件的主要屬性和內容

目前選取的清單選項內容,資料形態為一個字串。透過Text屬性的擷取,程式可以辨識使用者設定的資料值。如果是數值,則須透過StrToInt()或StrToFloat()等公用函式進行數值擷取。

Text

設定捲選盒代表的資料時的選項清單,以字串陣列方式收錄。常在執行時期動代設定各個選項內容。Items

捲選盒名稱,以C++指標方式指稱該捲選盒,進行屬性的設定或變更。當選項清單需在執行時期設定時,透過Name進行相關選項內容的設定。最好不要用內定的名稱,自行設定有意義的名稱。

Name

說明屬性名稱

目前選取的清單選項內容,資料形態為一個字串。透過Text屬性的擷取,程式可以辨識使用者設定的資料值。如果是數值,則須透過StrToInt()或StrToFloat()等公用函式進行數值擷取。

Text

設定捲選盒代表的資料時的選項清單,以字串陣列方式收錄。常在執行時期動代設定各個選項內容。Items

捲選盒名稱,以C++指標方式指稱該捲選盒,進行屬性的設定或變更。當選項清單需在執行時期設定時,透過Name進行相關選項內容的設定。最好不要用內定的名稱,自行設定有意義的名稱。

Name

說明屬性名稱

Page 42: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4242

Exercise 3-2 :設計微電腦 I/O 控制的主要人機介面 使用使用 BCBBCB建立一個應用程式,儲存成建立一個應用程式,儲存成 control.bcontrol.b

prpr

將內定的將內定的 TForm1TForm1表單的表單的 namename屬性設為屬性設為 IOCoIOControlFMntrolFM

自行使用資源自行使用資源 (resources)(resources) 編修工具,設計一個編修工具,設計一個小圖像並將它設為本專案的圖像小圖像並將它設為本專案的圖像 將將 TIOControlFMTIOControlFM 表單的表單的 CaptionCaption屬性設為「微屬性設為「微電腦電腦 I/OI/O 控制控制 CC 語言實作」語言實作」

Page 43: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4343

Exercise 3-2 :設計微電腦 I/O 控制的主要人機介面 ( 續 ) 加入一個群組框元件,頭銜設為「加入一個群組框元件,頭銜設為「 82558255 模式設定」模式設定」

加入一個捲選盒元件加入一個捲選盒元件 在在 ItemsItems 屬性內新增一筆字串「屬性內新增一筆字串「 0x990x99 」」

加入一個按鈕元件加入一個按鈕元件 CaptionCaption 設成「控制模式設定」設成「控制模式設定」 在它的在它的 OnClickOnClick 事件中添加事件處理函式事件中添加事件處理函式

本函式將由您撰寫本函式將由您撰寫 I/OI/O 程式,將捲選盒選定的控制資料輸出,程式,將捲選盒選定的控制資料輸出,以設定一個以設定一個 I/OI/O 介面卡內介面卡內 82558255 晶片的控制模式晶片的控制模式 使用者選的模式資料,以字串方式存放在捲選盒的使用者選的模式資料,以字串方式存放在捲選盒的 TextText屬性內 屬性內

Page 44: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4444

Exercise 3-2 微電腦 I/O 控制實習的表單介面

Page 45: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4545

面板元件 (TPanel)

是一個矩形包容器元件是一個矩形包容器元件 收納其他元件一起處理收納其他元件一起處理 特別用於表單佈置時,以各個面板元件為單位特別用於表單佈置時,以各個面板元件為單位停駐在視窗邊緣或中間停駐在視窗邊緣或中間 面板元件可設定它的顏色,因此我們可使用它面板元件可設定它的顏色,因此我們可使用它來代表控制系統的燈號來代表控制系統的燈號

Page 46: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4646

TPanel 元件構建工具及示意

Page 47: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4747

TPanel 元件的主要屬性和內容

填塗顏色。其值代表螢幕顯現的顏色,VCL設有常用顏色的代碼,均以cl開頭,如:clMaroon代表暗紅色。顏色也可以十六進位的常數表示。其格式為:0X00bbggrr。bb, gg, rr內容是十六進位值,分別代表藍、綠、紅色光的成分。範例:藍色:0x00ff0000;綠色:0x0000ff00;紅色:0x000000ff;黃色:0x0000ffff;青色:0x00ffff00;洋紅色:0x00ff00ff。

Color

通常清除成空白,也可以以文字描述它代表的內容。如:「正常」或「錯誤」等訊息。Caption

面板名稱,以C++指標方式指稱該面板,進行屬性的設定或變更。最好不要用內定的名稱,自行設定有意義的名稱。Name

說明屬性名稱

填塗顏色。其值代表螢幕顯現的顏色,VCL設有常用顏色的代碼,均以cl開頭,如:clMaroon代表暗紅色。顏色也可以十六進位的常數表示。其格式為:0X00bbggrr。bb, gg, rr內容是十六進位值,分別代表藍、綠、紅色光的成分。範例:藍色:0x00ff0000;綠色:0x0000ff00;紅色:0x000000ff;黃色:0x0000ffff;青色:0x00ffff00;洋紅色:0x00ff00ff。

Color

通常清除成空白,也可以以文字描述它代表的內容。如:「正常」或「錯誤」等訊息。Caption

面板名稱,以C++指標方式指稱該面板,進行屬性的設定或變更。最好不要用內定的名稱,自行設定有意義的名稱。Name

說明屬性名稱

Page 48: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4848

碼表元件 (TTimer)

用於須定時反覆定時執行一些運算的情形用於須定時反覆定時執行一些運算的情形 如:執行動畫時,每如:執行動畫時,每 1/301/30秒必須執行更新畫面一次秒必須執行更新畫面一次(以最新的位置和方位繪出場景內各個物件)(以最新的位置和方位繪出場景內各個物件) 如:微電腦如:微電腦 I/OI/O 控制系統,必須隨時掃描輸入訊號控制系統,必須隨時掃描輸入訊號

用於每到設定的間隔時間到時,產生時間到的用於每到設定的間隔時間到時,產生時間到的事件事件 處理程序在時間到事件的處理函式中實作處理程序在時間到事件的處理函式中實作

VCLVCL 設有設有 TTimerTTimer 元件和時間到事件元件和時間到事件 OnTimerOnTimer 計時並設定相關的處理函式計時並設定相關的處理函式

Page 49: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊4949

碼表元件 (TTimer)( 續 )

在設定的時間間隔到時,會產生在設定的時間間隔到時,會產生 OnTimerOnTimer 時間時間到事件到事件 應用程式可動態地變更間隔時間,以加快或減應用程式可動態地變更間隔時間,以加快或減慢事件產生的頻率慢事件產生的頻率 應用程式可視情況隨時啟動或停止碼表應用程式可視情況隨時啟動或停止碼表 碼表元件是沒有視覺顯示功能的碼表元件是沒有視覺顯示功能的 VCLVCL 元件元件

程式執行時,不會有任何圖像顯示程式執行時,不會有任何圖像顯示

Page 50: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5050

TTimer 元件構建工具及示意

Page 51: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5151

TTimer 元件主要屬性和內容

碼表計時的間隔時間,單位是千分之一秒。當碼表元件被啟動後(Enabled被設為true),經過該段時間即產生OnTimer時間到事件。觸發該事件的處理函式,同時繼續進行下一個時間到事件的計時。間隔時間可在程式執行時動態變更,以加快或減慢時間到事件產生的頻率。

Interval

啟動或停止該碼表的計時功能。構建時通常設為false。透過其他的控制項由使用者啟動碼表。啟動方法只需將碼表的Enabled屬性設為true。同理,擬停止碼表計時是,只要將它設成false。

Enabled

碼表名稱,使用於程式中以指稱該碼表。最好不要用內定的名稱,自行設定有意義的名稱,以C++指標方式使用。Name

說明屬性名稱

碼表計時的間隔時間,單位是千分之一秒。當碼表元件被啟動後(Enabled被設為true),經過該段時間即產生OnTimer時間到事件。觸發該事件的處理函式,同時繼續進行下一個時間到事件的計時。間隔時間可在程式執行時動態變更,以加快或減慢時間到事件產生的頻率。

Interval

啟動或停止該碼表的計時功能。構建時通常設為false。透過其他的控制項由使用者啟動碼表。啟動方法只需將碼表的Enabled屬性設為true。同理,擬停止碼表計時是,只要將它設成false。

Enabled

碼表名稱,使用於程式中以指稱該碼表。最好不要用內定的名稱,自行設定有意義的名稱,以C++指標方式使用。Name

說明屬性名稱

Page 52: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5252

TTimer 元件接受的主要事件和處理邏輯

時間到事件。在其處理函式內寫程式,以執行時間到事件產生時的運算程序。處理內容也可判斷情況改變該碼表的Enabled屬性,以停止計時動作,或是變更事件產生的間隔時間。

OnTimer

說明事件名稱

時間到事件。在其處理函式內寫程式,以執行時間到事件產生時的運算程序。處理內容也可判斷情況改變該碼表的Enabled屬性,以停止計時動作,或是變更事件產生的間隔時間。

OnTimer

說明事件名稱

Page 53: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5353

Exercise 3-3 :加入微動開關實習介面 承續範例二,在表單中加入一個群組框元件,承續範例二,在表單中加入一個群組框元件,頭銜設成「微動開關實習」頭銜設成「微動開關實習」

在其內加入一個方形面板元件在其內加入一個方形面板元件 ColorColor 屬性設為屬性設為 clMaroonclMaroon 的暗紅色,模擬控制系的暗紅色,模擬控制系統的燈號統的燈號

加入一個碼表元件加入一個碼表元件 IntervalInterval 設為設為 100100 ,每秒發出十次時間到事件,每秒發出十次時間到事件 狀態狀態 EnabledEnabled 設為設為 falsefalse 透過它的透過它的 OnTimerOnTimer 事件內新增內定的處理函式事件內新增內定的處理函式

Page 54: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5454

Exercise 3-3 :加入微動開關實習介面 ( 續 )

本函式在後半段課程將由您撰寫本函式在後半段課程將由您撰寫 I/OI/O 程式掃描微程式掃描微動開關的訊號,並據以改變面板元件的顏色,模動開關的訊號,並據以改變面板元件的顏色,模擬燈號的亮、滅擬燈號的亮、滅 加入一個按鈕元件加入一個按鈕元件

CaptionCaption 設成「開始偵測」設成「開始偵測」 在它的在它的 OnClickOnClick事件中添加內定的事件處理函式事件中添加內定的事件處理函式

檢查該按鈕的名稱若是「開始偵測」,啟動碼表,檢查該按鈕的名稱若是「開始偵測」,啟動碼表,並將名稱改成「停止」並將名稱改成「停止」相反地,若按鈕的名稱不是「開始偵測」,停止相反地,若按鈕的名稱不是「開始偵測」,停止碼表並將名稱重新改回「開始偵測」碼表並將名稱重新改回「開始偵測」

Page 55: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5555

Exercise 3-3 加入微動開關實習介面後的表單

Page 56: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5656

Exercise 3-4 :加入光遮斷開關實習介面 承續範例三,加入一個群組框元件承續範例三,加入一個群組框元件

頭銜設成「光遮斷開關實習」頭銜設成「光遮斷開關實習」 加入一個方形面板元件加入一個方形面板元件

ColorColor 設為設為 clOliveclOlive 的暗黃色,模擬控制系統的燈號的暗黃色,模擬控制系統的燈號 加入一個碼表元件加入一個碼表元件

IntervalInterval 設為設為 100100 起始狀態起始狀態 EnabledEnabled 設為設為 falsefalse 透過它的透過它的 OnTimerOnTimer事件內新增內定的處理函式事件內新增內定的處理函式

本函式在後半段課程將由您撰寫本函式在後半段課程將由您撰寫 I/OI/O 程式掃描光遮斷開關的程式掃描光遮斷開關的遮斷與否訊號,並據以改變面板元件的顏色,模擬燈號的亮、遮斷與否訊號,並據以改變面板元件的顏色,模擬燈號的亮、滅滅

Page 57: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5757

Exercise 3-4 :加入光遮斷開關實習介面( 續 )

加入一個按鈕元件加入一個按鈕元件 CaptionCaption 設成「啟動開關」設成「啟動開關」 在它的在它的 OnClickOnClick 事件中添加內定的事件處理函式事件中添加內定的事件處理函式

檢查該按鈕的名稱若是「啟動開關」,將透過檢查該按鈕的名稱若是「啟動開關」,將透過 I/OI/O 晶片送訊晶片送訊號給控制系統,以啟動整個系統再將名稱改成「停止」號給控制系統,以啟動整個系統再將名稱改成「停止」 相反地,若按鈕的名稱不是「啟動開關」,停止系統功能相反地,若按鈕的名稱不是「啟動開關」,停止系統功能

加入一個按鈕元件加入一個按鈕元件 CaptionCaption 設成「開始偵測」設成「開始偵測」 在它的在它的 OnClickOnClick 事件中添加內定的事件處理函式事件中添加內定的事件處理函式

檢查該按鈕的名稱若是「開始偵測」,啟動碼表,並將名檢查該按鈕的名稱若是「開始偵測」,啟動碼表,並將名稱改成「停止」稱改成「停止」 相反地,若按鈕的名稱不是「開始偵測」,停止碼表並將相反地,若按鈕的名稱不是「開始偵測」,停止碼表並將名稱改回「啟動開關」名稱改回「啟動開關」

Page 58: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5858

Exercise 3-4 加入光遮斷開關實習介面後的表單

Page 59: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊5959

Exercise 3-5 :添加近接開關實習人機介面 承續範例四,加入一個群組框元件,頭銜設成承續範例四,加入一個群組框元件,頭銜設成「近接開關實習」「近接開關實習」

加入一個方形面板元件加入一個方形面板元件 ColorColor 設為設為 clGreenclGreen 的暗綠色,模擬控制系統的燈號的暗綠色,模擬控制系統的燈號

加入一個碼表元件加入一個碼表元件 IntervalInterval 設為設為 100100 ,起始狀態,起始狀態 EnabledEnabled 設為設為 falsefalse 透過它的透過它的 OnTimerOnTimer事件,新增內定的處理函式事件,新增內定的處理函式

將由您撰寫將由您撰寫 I/OI/O 程式掃描近接開關的進接狀態,並程式掃描近接開關的進接狀態,並據以改變面板元件的顏色,模擬燈號的亮、滅據以改變面板元件的顏色,模擬燈號的亮、滅

Page 60: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6060

Exercise 3-5 :添加近接開關實習人機介面( 續 )

加入一個按鈕元件加入一個按鈕元件 將它的將它的 CaptionCaption 設成「開始偵測」設成「開始偵測」 在它的在它的 OnClickOnClick事件中添加內定的事件處理函式事件中添加內定的事件處理函式

在該函式內撰寫程式,檢查該按鈕的名稱若是在該函式內撰寫程式,檢查該按鈕的名稱若是「開始偵測」,啟動碼表,並將名稱改成「停「開始偵測」,啟動碼表,並將名稱改成「停止」止」相反地,若按鈕的名稱不是「開始偵測」,停止相反地,若按鈕的名稱不是「開始偵測」,停止碼表並將名稱改回「開始偵測」碼表並將名稱改回「開始偵測」

Page 61: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6161

Exercise 3-5 加入近接開關實習人機介面後的表單

Page 62: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6262

Exercise 3-6 :添加七段顯示器實習人機介面 承續範例五,加入一個群組框元件,頭銜取為「七承續範例五,加入一個群組框元件,頭銜取為「七段顯示器實習」段顯示器實習」

在其內加入一個捲選盒元件在其內加入一個捲選盒元件 在在 ItemsItems 內新增內新增 1616筆字串:「筆字串:「 00」」 ,,「「 11」」 , ... ,, ... ,「「 99」」 ,,「「 AA」」 ,,「「 bb」」 , , 「「 cc」」 ,,「「 dd」」 ,,「「 EE」」 ,,「「 FF」。」。

加入一個按鈕元件加入一個按鈕元件 將它的將它的 CaptionCaption 設成「送出字形」設成「送出字形」 在它的在它的 OnClickOnClick事件中添加內定事件處理函式事件中添加內定事件處理函式

本函式將捲選盒選定的文數字資料輸出到控制系統,本函式將捲選盒選定的文數字資料輸出到控制系統,點亮八段顯示器點亮八段顯示器

Page 63: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6363

Exercise 3-6 加入七段顯示器實習人機介面 後的表單

Page 64: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6464

標籤元件 (TLabel)

常置於其他輸出入控制項旁常置於其他輸出入控制項旁 輔助說明表單內的各控制項的內涵和功能輔助說明表單內的各控制項的內涵和功能 主要的物件屬性是主要的物件屬性是 CaptionCaption ,內容是字串組成,內容是字串組成說明旁邊的控制項的內容內涵或功能說明旁邊的控制項的內容內涵或功能

可在程式執行中動態變更之可在程式執行中動態變更之

Page 65: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6565

TLabel 元件構建工具及示意

Page 66: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6666

輸入元件 (TEdit)

是最常見的表單控制項之一是最常見的表單控制項之一 接受使用者輸入文字或數字等資料接受使用者輸入文字或數字等資料

屬常用的人機介面控制項屬常用的人機介面控制項 輸入元件內定的資料格式是字串輸入元件內定的資料格式是字串

字串的資料型態是字串的資料型態是 VCLVCL 內的內的 AnsiStringAnsiString 類別類別 如為數字時,必須使用公用函式如為數字時,必須使用公用函式 StrToInt() StrToInt() 或 或 StrTStrT

oFloat()oFloat() 進行數字轉換進行數字轉換也可使用也可使用 AnsiStringAnsiString 類別的類別的 ToInt(), ToFloat()ToInt(), ToFloat() 成員成員函式轉換之函式轉換之

Page 67: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6767

TEdit 元件構建工具及示意

Page 68: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6868

輸入元件 TEdit 的主要屬性和內容

隨使用者改變系統的狀態,以程式設定方式,啟動或抑制該輸入元件的使用能力。Enabled

使用者輸入的資料,資料形態是字串。透過Text屬性的擷取,程式可以辨識使用者輸入的內容。如果是數值,則須透過StrToInt()或StrToFloat()等公用函式進行數值擷取。

Text

輸入元件名稱,以C++指標方式指稱該輸入元件,進行使用者輸入資料的擷取。Name

說明屬性名稱

隨使用者改變系統的狀態,以程式設定方式,啟動或抑制該輸入元件的使用能力。Enabled

使用者輸入的資料,資料形態是字串。透過Text屬性的擷取,程式可以辨識使用者輸入的內容。如果是數值,則須透過StrToInt()或StrToFloat()等公用函式進行數值擷取。

Text

輸入元件名稱,以C++指標方式指稱該輸入元件,進行使用者輸入資料的擷取。Name

說明屬性名稱

Page 69: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊6969

升降元件 TUpDown

提供升和降小按鈕,作為人機介面,進行它所提供升和降小按鈕,作為人機介面,進行它所結合的資料的增減結合的資料的增減 常結合常結合 TEditTEdit 輸入元件,透過它的小按鈕進行輸輸入元件,透過它的小按鈕進行輸入數值之增減,毋須使用鍵盤輸入數字入數值之增減,毋須使用鍵盤輸入數字 內定的控制值是整數,因此有上、下限的界限內定的控制值是整數,因此有上、下限的界限值值 使用者押按升和降小按鈕時,該控制值則以一使用者押按升和降小按鈕時,該控制值則以一定的增減量增減定的增減量增減

Page 70: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7070

TUpDown 元件構建工具及示意

Page 71: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7171

TUpDown 元件的主要屬性和內容

控制值。程式撰寫時,可透過控值值得擷取,進行相關資料的變更和顯示。Position

每按一次升降小按鈕時,控制值的增減量。Increment

控制值遞增時的上限。Max

控制值遞減時的下限。Min

結合的控制項,通常是TEdit物件。當升降元件經使用者調動後,該結合控制項的資料亦隨之邊更。Associate

說明屬性名稱

控制值。程式撰寫時,可透過控值值得擷取,進行相關資料的變更和顯示。Position

每按一次升降小按鈕時,控制值的增減量。Increment

控制值遞增時的上限。Max

控制值遞減時的下限。Min

結合的控制項,通常是TEdit物件。當升降元件經使用者調動後,該結合控制項的資料亦隨之邊更。Associate

說明屬性名稱

Page 72: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7272

Exercise 3-7 :添加步進馬達實習人機介面 承續範例六,加入一個群組框元件,頭銜取為「步進馬承續範例六,加入一個群組框元件,頭銜取為「步進馬達實習」達實習」

在其內加入四個在其內加入四個 TLabelTLabel 標籤元件,標籤元件, CaptionCaption 分別設為:「轉分別設為:「轉速」速」 ,,「個「個 1.81.8 度/秒」度/秒」 ,,「角度」「角度」 ,, 和「度」和「度」 加入一個輸入元件加入一個輸入元件

將標籤和輸入元件依序排成:「轉速」標籤、輸入元件、「個將標籤和輸入元件依序排成:「轉速」標籤、輸入元件、「個1.81.8 度/秒」標籤度/秒」標籤

顯現給使用者馬達轉速設定資訊顯現給使用者馬達轉速設定資訊 加入一個增減元件,並將它的加入一個增減元件,並將它的 AssociateAssociate屬性設為上面屬性設為上面的輸入元件的輸入元件

PositionPosition 屬性設為屬性設為 1010 、、 MaxMax 屬性設為屬性設為 100100 、、 MinMin屬性設為屬性設為 11 、、以及以及 IncrementIncrement屬性設為屬性設為 11

Page 73: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7373

Exercise 3-7 :添加步進馬達實習人機介面( 續 )

加入一個輸入元件加入一個輸入元件 將「角度」和「度」標籤配合輸入元件排列妥當,以提示步進將「角度」和「度」標籤配合輸入元件排列妥當,以提示步進馬達的轉動角度馬達的轉動角度

加入一個碼表元件加入一個碼表元件 將它的將它的 IntervalInterval 設為設為 10001000 ,起始狀態,起始狀態 EnabledEnabled 設為設為 falsefalse 由由 BCBBCB 在它的在它的 OnTimerOnTimer 事件內新增內定處理函式事件內新增內定處理函式

規律且持續地將控制訊號輸出,以逐步轉動步進馬達規律且持續地將控制訊號輸出,以逐步轉動步進馬達 程式必須累計執行的次數,當次數達到馬達已經轉完設定程式必須累計執行的次數,當次數達到馬達已經轉完設定的角度時,由程式將碼表停止的角度時,由程式將碼表停止 碼表的碼表的 IntervalInterval 值,由輸入元件設定的值換算後動態設定值,由輸入元件設定的值換算後動態設定 步進馬達的轉速會隨控制訊號輸入的快慢而改變,因此縮步進馬達的轉速會隨控制訊號輸入的快慢而改變,因此縮短碼表間隔時間,馬達轉速將加快,反之將減慢短碼表間隔時間,馬達轉速將加快,反之將減慢

Page 74: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7474

Exercise 3-7 :添加步進馬達實習人機介面( 續 )

加入一個按鈕元件,將它的加入一個按鈕元件,將它的 CaptionCaption 設成「啟設成「啟動馬達」動馬達」 在它的在它的 OnClickOnClick事件中添加內定事件處理函式事件中添加內定事件處理函式

檢查該按鈕的名稱若是「啟動馬達」,則由使用檢查該按鈕的名稱若是「啟動馬達」,則由使用者設定的速度換算控制訊號送出的間隔時間,設者設定的速度換算控制訊號送出的間隔時間,設定碼表的定碼表的 IntervalInterval 接著再啟動馬錶,按時送出控制訊號,並將名稱接著再啟動馬錶,按時送出控制訊號,並將名稱改成「停止」改成「停止」相反地,若按鈕的名稱不是「啟動馬達」,則停相反地,若按鈕的名稱不是「啟動馬達」,則停止碼表並將名稱改回「啟動馬達」止碼表並將名稱改回「啟動馬達」

Page 75: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7575

Exercise 3-7 加入步進馬達實習人機介面後 的表單

Page 76: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7676

Exercise 3-8 :添加直流馬達 PWM 實習介面 承續範例七,在表單右方加入一個群組框元件,頭銜取承續範例七,在表單右方加入一個群組框元件,頭銜取為「直流馬達為「直流馬達 PWMPWM 實習」實習」

在其內加入二個標籤元件,在其內加入二個標籤元件, CaptionCaption 為:「基本週期」,「百為:「基本週期」,「百分比」分比」

在「基本週期」標籤右邊添加一個輸入元件在「基本週期」標籤右邊添加一個輸入元件 在「百分比」標籤右邊添加一個輸入元件在「百分比」標籤右邊添加一個輸入元件 添加一個升降元件,將它的添加一個升降元件,將它的 AssociateAssociate 設為「百分比」標設為「百分比」標籤,以便控制籤,以便控制 PWMPWM 的比例的比例

升降元件的升降元件的 PositionPosition 設為設為 5050 、、 MaxMax 設為設為 100100 、、 MinMin 設為設為 00 、以、以及及 IncrementIncrement 設為設為 11

Page 77: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7777

Exercise 3-8 :添加直流馬達 PWM 實習介面( 續 )

加入一個按鈕元件,加入一個按鈕元件, CaptionCaption 設成「啟動馬達」設成「啟動馬達」 在它的在它的 OnClickOnClick 事件中添加內定事件處理函式事件中添加內定事件處理函式

檢查該按鈕的名稱若是「啟動馬達」,由使用者設定的基檢查該按鈕的名稱若是「啟動馬達」,由使用者設定的基本週期和百分比換算成數值後,寫出控制資料,啟動直流本週期和百分比換算成數值後,寫出控制資料,啟動直流馬達馬達 再將名稱改為「停止」再將名稱改為「停止」 相反地,若按鈕的名稱不是「啟動馬達」,寫出控制資料相反地,若按鈕的名稱不是「啟動馬達」,寫出控制資料將直流馬達停止,並將名稱改回「啟動馬達」將直流馬達停止,並將名稱改回「啟動馬達」

最後再加入一個按鈕元件,最後再加入一個按鈕元件, CaptionCaption 設成「反轉」設成「反轉」 在它的在它的 OnClickOnClick 事件中添加內定處理函式事件中添加內定處理函式

檢查該按鈕的名稱若是「反轉」則寫出控制資料,改變直檢查該按鈕的名稱若是「反轉」則寫出控制資料,改變直流馬達的轉向後,將名稱改成「正轉」流馬達的轉向後,將名稱改成「正轉」 相反地,若按鈕的名稱不是「反轉」則寫出控制資料將直相反地,若按鈕的名稱不是「反轉」則寫出控制資料將直流馬達再反轉,並將名稱改回「反轉」。流馬達再反轉,並將名稱改回「反轉」。

Page 78: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7878

Exercise 3-8 加入直流馬達 PWM 實習介面後 的表單

Page 79: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊7979

內容大綱 ( 我們在哪裡 ?)

緒論緒論 微電腦微電腦 I/OI/O 控制系統控制系統 圖形介面暨視窗為基的應用程式圖形介面暨視窗為基的應用程式 Borland C++ Builder Borland C++ Builder 程式開發程式開發 本書實習實作使用到的本書實習實作使用到的 BCB VCLBCB VCL 元件元件 總結總結

Page 80: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊8080

總結 本章介紹的本章介紹的 BCBBCB 程式開發環境內容僅止於圖形式人機介面的構建程式開發環境內容僅止於圖形式人機介面的構建 本章僅介紹的與本書實習相關的本章僅介紹的與本書實習相關的 VCLVCL 元件元件

屬於控制項者或元件者,可在屬於控制項者或元件者,可在 BCBBCB 的工具列中找到相對的工具圖鈕的工具列中找到相對的工具圖鈕 透過拖拉方式,即可將該物件或元件加入新產生的表單類別裡面透過拖拉方式,即可將該物件或元件加入新產生的表單類別裡面 其他的類別,則須以程式撰寫方式,宣告和定義其物件,依循手冊上其他的類別,則須以程式撰寫方式,宣告和定義其物件,依循手冊上的說明使用該類別提供的各種成員函式,執行各種功能的說明使用該類別提供的各種成員函式,執行各種功能

目標是讓讀者熟悉視窗為基應用程式開發的步驟和實際構建方法目標是讓讀者熟悉視窗為基應用程式開發的步驟和實際構建方法 藉由範例的示範,預先實作本書的微電腦藉由範例的示範,預先實作本書的微電腦 I/OI/O 控制實習的軟體框架控制實習的軟體框架部分部分 剩下的部分就是熟悉微電腦架構和剩下的部分就是熟悉微電腦架構和 I/OI/O 控制技術後,依實習目標實控制技術後,依實習目標實作各交互作用函式的內容即可作各交互作用函式的內容即可

Page 81: 第三章 以 Borland C++ Builder 開發 視窗介面為基之 I/O 控制技術

著作權所有 著作權所有 © 2004© 2004 王國禎、楊烽正王國禎、楊烽正、余文俊、余文俊8181

參考資料 C++ Builder 5 Developer's Guide (With CD-ROC++ Builder 5 Developer's Guide (With CD-RO

M) by M) by Jarrod Jarrod HollingworthHollingworth (Editor), (Editor), Dan ButterfieldDan Butterfield, , Bob SwartBob Swart, , Jamie Jamie AllsopAllsop, SAM, SAMS.S.

Borland C++Builder How-To by Borland C++Builder How-To by John John MianoMiano, , Thomas Thomas CabanskiCabanski (Contributor), (Contributor), Harold HoweHarold Howe (Contributor), The Waite Group.(Contributor), The Waite Group.

C++Builder 5 C++Builder 5 徹底研究,陳周造、陳燦煌,博徹底研究,陳周造、陳燦煌,博碩文化。碩文化。