第二十三章 元件的製作 23-1 類別轉為元件 23-2 繼承可視元件 23-3 複合式元件.

Slides:



Advertisements
Similar presentations
元大京華證券 組員名單 : A 楊之奇 A 廖本揚 A 宋俊承 A 陳冠廷 A 郭峻瑋 A 指導教授 : 許素華 副教授.
Advertisements

達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
概念導向命題技巧與試題分析 臺灣師大地理系 陳國川. 教學評量是一種『抽樣調查』 實施教學評量時,需具備二項條件: 其一,瞭解命題的理論及其實踐的方法; 其二,瞭解各種題型的功能與命題方式。 壹、前言.
第十八章 林肯大郡 第十八章 林肯大郡災變緊急搶救應變措施 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊造成二十八人罹難八十戶住宅倒塌的慘劇 此災變要喚起國人的重視 本章介紹搜救行動緊急應變措施。
高峰植物園行前解說 2005/12/07 By 羽明. 陽性先驅物種 陽性植物 --- 陽光需求量大 陰性 ( 或耐蔭性 ) 植物 --- 陽光需求量少, 或 日照太強反而無法生存 先驅植物 --- 森林大火或土石流地震後產生的 裸露空地, 先生長出來的植物.
報 告 人 : 胡 嘉 琪 ˙ˇ˙ 、 王 紫 庭 = ˇ = 台灣夜市文化 作者: 郭明澤‧私立明道高中‧綜二 4 班 馬炯修‧私立明道高中‧綜二 4 班.
5 ˙ 1 第五章 生物的協調作用 5 ‧ 1 神經系統. 5 ˙ 1 人體的神經系統 1. 協調動物生理反應的系統: 神經 系統、 內分 泌 系統。 2. 神經系統負責 統整 和 協調 。分為 中樞 神經 和 周圍 神經。 (1) 中樞神經包括 腦 和 脊髓 。 (2) 周圍 神經包括 腦神經 和.
从《西游》看大学生的成长 主讲人:颜廷学 时间: 地点:演艺大楼流行剧场.
新员工培训 设计部 思安新能源股份有限公司 主讲人: 韩少华 时 间:
前言:河流的主要功能 1. 交通運輸 優點-運費低廉,維護費用低 缺點-速度慢,裝載費時,不能到達生產區或消費區 的末端,需要轉載。 尚受到河流網路,河口位置,水量變化,河床 狀況,冰封時期 2. 水資源系統.
幽夢影~張潮 小佑子工作室 關於《幽夢影》 作者張潮,記寫他個人對人生世事之體驗透悟的 書。 書中文字,全為「語錄」形式,屬於格言,也是 最精鍊的隨筆。 全書可分為九卷:論才子佳人、論人與人生、論 朋友知己、論讀書、論閒情逸趣、論立身處世、 談文論藝、論四時佳景、論花鳥蟲魚。
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
計算機程式及實習 Computer Program Design and Experiment) 期末報告 ppt 南台科技大學機械工程系 姓名 : 蔡中銘 學號 :4A 授課老師 : 謝慶存大帥哥.
成人高考高起点 语文 冲刺班 主讲老师:邓君媚. 复习指导 高考语文含四大块内容: 语言知识和语言表达,古代诗文阅读,现 代文阅读,写作。 在全面复习的前提下,按照《考试大纲》 的要求,要做好思路整理,建立高考的整体框 架的工作。认真归纳整理基础知识、培养基本 能力,复习做到有的放矢。 复习指导.
老师,我可以不 爱 吗? 山东省淄博市张店区实验中学 杜桂兰 星期一的早晨,我紧张而又兴奋,因为 我的赛教课就要开始了。 这是一次级别很 高 的竞赛。
104-2 社團聯席會議 人社二館第五講堂 第 1 次社團聯席會 會議議程 一、邱學務長致詞 : 二、王麗倩組長致詞 : 三、課外組報告: 課外活動經費核銷事項 --- 松漢 社課鐘點費核銷事項 --- 松漢 3. 三社聯合成發之講堂租借規定說明.
财政部 国家税务总局 中国人民银行(央行) 银监会 证监会 保监会. 法定存款准备金率 利率 税率 政府投资 楼继伟,周小川,易纲.
油蔴菜籽 指導老師:陳瑜霞 學生: 商設一甲 謝旻璇 車輛三乙 許勝傑 工管四甲 彭凱雲. 作者介紹: 廖輝英( 1948 年生)臺大中文系畢業。 從初三開始寫作,早期作品多以散文為主,大四 畢業時才暫時封筆。畢業後進了廣告界,成為廣 告文案好手,後為企畫主管,在廣告界縱橫十餘 年,也曾任職於建設公司,辦過社區報高雄一周。
蘭嶼情人洞傳說 林庭羽製 林庭羽製. 台灣的蘭花特別多,台灣有個蘭 嶼島,島上面的蘭花更多.所以 叫蘭嶼.這裡留下了動人的傳說。
職業訪談報告. 成員 : 鐘怡君 劉沛君 謝明達 賴映辰.
南台科大幼保實習課程 見習幼兒園心得報告 夜四技幼保四甲 998i0021 黃欣婷.
第一章 生殖 1‧2 無性生殖.
高教三十条 — 科技创新能力提升 科技创新能力提升工程方案起草小组 2013年7月4日.
你不可不知之 十二年國教二三事 教務主任:傅瑞琪.
鞋 楦 的 材 質.
最古怪的15種動物.
走! 一起去拜訪筏子溪.
会计报表网上申报操作指南 (以小企业会计准则为例) 松江区税务局 2014年7月.
第十課 第九味目錄 徐國能 課文 注釋 問題與討論.
計算機程式及實習 期末報告 題目:商店結帳系統
第三章 以Borland C++ Builder開發 視窗介面為基之I/O控制技術
派對慶祝 指導老師:黃瑞勤老師 S.3A 組長:葉慧敏(40) 組員:尹國青(30) 麥家欣(26) 利昭雯(16)
第四章 決策敘述 4-1 if 4-2 if..else 4-3 case 4-4 綜合範例.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
大家都来关注国家安全 南京市江宁中学 傅德柱.
客户端用Net-Library和SQL SERVER连接
5.4 预测中的专家评估法 专家会议法 专家评估法 德尔菲法.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
類別與物件 Class & Object.
第八章 分析與設計階段 – 物件導向設計(OOD)
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
第十章 進階輸出入元件(一) StringGrid 10-1 核對框(CheckBox)
第二十八章 開發新的VCL元件 雖然BCB內提供了很多VCL元件,但是一定還有一些我們常常需要用的介面並沒有製作成VCL元件,或是一些個人化的介面,我們也有需要做成VCL元件。在第十三章,我們將介紹如何自行開發新的VCL元件。
程式語言Visual Basic 變數的可視範圍
建立VB.NET應用程式 資管系 助理教授 詹曉苓.
第2章 建立Visual Basic應用程式 2-1 如何設計Visual Basic應用程式 2-2 建立主控台應用程式
第2章 建立Visual Basic應用程式.
多线程编程基本概念 2008.
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
基础综合 C++ Builder 显示与输入接口
程式語言 -Visual Basic 變數、常數與資料型態.
第16章 VB.NET物件導向與.NET Framework
Delphi程序设计与应用教程 宁正元 主编 刘雄恩 陈琼 副主编 中国水利水电出版社
Delphi实用教程 第5章 多窗体和MDI窗体 第5章 多窗体和MDI窗体.
第一章 VB概述 本章重点和难点 1.1 VB 概述 1.2 面向对象的程序设计方法基础
移动电子商务 第十二章 Windows Mobile应用案例 倚动软件工厂实验室.
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
Visual Basic程序设计.
第六章 擷取輸入裝置的訊息和事件 鍵盤、滑鼠,是我們最常使用的輸入工具。我們是不是常常希望可以再按下某個按鈕後就可以有哪些功能出現呢?沒錯,這就是這一章節的重點,在第四章,我們提到了有關鍵盤、滑鼠、以及RS-232介面的事件及訊息偵測,讓我們更能掌控電腦週邊的硬體。
題目:南台飲料店結帳系統 南台科技大學 機械工程系 車輛一甲 學號:4A
VB语言程序设计教程.
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作 南台科技大學 機械工程系 題目:南台電影城結帳系統 班級 : 車輛一甲 學號 : 4A 授教學生: 阮偉倫 授課老師: 謝慶存.
中五級電腦科 PASCAL檔案處理.
第五章 类图和对象图.
1位选手参加了歌唱比赛,评委们的评分如下:
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
JAVA 程式設計與資料結構 第三章 物件的設計.
第七章 結構化企業流程塑模個案.
Presentation transcript:

第二十三章 元件的製作 23-1 類別轉為元件 23-2 繼承可視元件 23-3 複合式元件

Delphi所提供的元件,背後都存在著相對應的類別程式,本書已在第九章介紹類別的製作。 本章則要逐步引領讀者完成類別的元件化,並安裝在元件盤上供人點選。 本章將以三種方式循序漸進的介紹元件製作,分別是23-1節類別轉為元件,23-2節的改良單一元件的元件及23-3節的改良多個元件的元件。研習本章之前,請讀者先複習第九章的類別與物件,第八章結構型態的動態物件製作方式及第十四章的專案。

23-1 類別轉為元件 於範例9-2c中,我們已完成TPass類別的製作,本節則要介紹將此類別轉為元件,並安裝在元件盤上。以下將以四個步驟完成類別的元件化,分別是程式的修改、元件的測試、製作元件圖項以及安裝新元件。

程式的修改 本例將9-2c的類別程式修改如下 unit Pass; Interface uses Windows, Messages, SysUtils, Classes, Controls, StdCtrls; //單元 Pass 要獨立存在,請新增此 uses type TPass = class (TComponent) //TPass 類別名稱 //非可見元件應繼承自 TComponent private Fa:integer; Fb:String; public procedure dispose(); procedure setData(value:integer); function getData():integer;

procedure setResult(value :String); function getResult() :String; published //bublished 的封裝等級與 public 相同 //,但屬性值可出現物件檢視視窗 property Data :integer read getData write setData ; property Result:String read getResult write setResult; end; //新增 Register procedure Register; Implementation //新增 Register 的實作 begin RegisterComponents('Samples', [TPass]); //Samples 元件欲放置的標籤名稱 //TPass 類別名稱

procedure TPass.dispose(); begin Fb:='不及格'; if (Fa>=60) then Fb:='及格'; end; procedure TPass.setData(value:integer); if Fa <> value then Fa:= value; function Tpass.getData() :integer; Result:=Fa; end ; procedure TPass.setResult(value:String); if Fb<> value then Fb:= value; function TPass.getResult():String; Result:=Fb; end.

TComponent 範例9-2c的類別Tpass是繼承自類別的始祖TObject,但依照Delphi的規定,若要將類別轉為元件,則此類別應繼承自TComponent。

範例 23-1a 根據以上說明,修改TPass類別,並測試結果。

製作元件圖項 元件盤上的每一元件都有各自的圖項,自製元件亦不例外。Delphi所付的Image Edit正是製作元件圖項的工具,此圖項的檔名應同類別名稱,副檔名是*.dcr,若未製作元件資源檔則系統將會以預設的圖項顯示。 以下範例示範本例所需的Pass.dcr。

範例 23-1b 示範元件圖項的製作。

安裝新元件 當您已完成類別程式的撰寫、測試及圖項的製作,緊接的工作就是進行元件的安裝,使得往後得以在元件盤上直接使用點選的方式,樣例您已完成的類別。以下範例將介紹元件的安裝步驟。

範例 23-1c 示範元件的安裝。

使用新元件 自訂元件的使用與內建元件相同,請看以下範例說明。

範例 23-1d 示範自訂元件的使用。

元件的移除 剛剛我們安裝元件時,是把元件安裝至C:\Program Files\Borland\Delphi7\Lib\dclusr.dpk 套件,所以若要移除所安裝的元件,亦是開啟以上套件,並移除相關的檔案與單元,請看以下範例說明 。

範例 23-1e 示範如何移除Pass元件。

23-2 繼承可視元件 上一節我們直接繼承TComponent,所以執行時就與TTimer類別一樣,元件並沒有顯示在表單。本節將延續 TPass的功能,但直接繼承TEdit類別,使得此元件有輸入資料的功能。 以下範例示範如何使用元件設計師來新增我們所要的元件。

範例 23-2a 如何以元件設計師新增一個可輸入分數,且可判斷是否及格的元件。

範例 23-2b 示範TPassEdit元件的使用。

23-3 複合式元件 上一節的TPassEdit已擁有輸入資料及判斷資料的能力,但是我們並不滿足,因為使用者使用此元件時,還要自己配置輸出的Label 元件及執行的Button元件,本節即要介紹如何同時擁有Edit 、 Label 及Button元件的新元件。 要達成此功能,是不是可以同時繼承以上三個類別呢?答案是不可以的,因為Delphi並不允許多重繼承,那要怎麼辦呢?答案當然是繼承適當的類別,然後以動態物件的方式產生以上三個元件,並連結各別元件的屬性、事件,作為新元件的屬性與事件,最後再新增自已的方法。

選擇父類別 VCL 中常用的基礎類別有 TObject、TPersistent、TComponent、TControl 、TWinControl及 TGraphicControl,其繼承關係已圖示於23-1節,以上每一類別都有其基本的屬性、方法及事件,分別說明如下。當您要開發一個新類別時,即要選擇適當的類別,才能縮短類別的建構時間,而不是一切從 TObject開始建構。 TObject 直接從TObject繼承的類別無法成為VCL元件,但它卻是自行開發類別時所不可或缺的基礎類別,本書第九章的自訂類別則都繼承TObject。 TPersistent Tpersistent類別已擁有從資料流中取出或寫入屬性的能力。 TComponent TComponent 的衍生類別才可以成為VCL元件並安裝在元件盤上。本書範例 23-1a的Tpass即繼承自TComponent。

TControl TControl類別已擁有Top、Left、Width、Height、Visible、Enabled、Color、Font、 Text、Caption等屬性及OnClick、 OnMouseDown 等鍵盤與滑鼠事件。 TWinControl TWinControl除了具備以上TControl所擁有的能力外,已經具有Window Handle,可以得到鍵盤輸入焦點以及可以成為其他物件的父元件,此類別最具代表性的元件為Edit 及Form等元件。 TGraphControl TGraphControl元件與TWinControl元件最大的不同是,它們不具有Window Handle,不能獲得到鍵盤輸入焦點,也不能成為其他物件的父元件 ,此類別最具代表性的元件為Label、Image等元件 。

範例 23-3a 示範建構複合元件 本例欲建立一個包含Edit、Label及Button 的元件,其功能為由Edit 的Text屬性輸入分數,Label的Caption屬性輸出分數的及格與否及Button元件的OnClick事件作為觸發執行的依據。

範例 23-3b 示範使用自建的PassEditLabel元件。

習題 請將本書的範例4-4a,作成一個求解一元二次方程式的元件,應含“求解”與“結束”兩個按鈕。

範例4-4a 請設計一個程式, 可以解一元二次方程式 1. 使用edia、edib及edic分別輸入方程式的三個係數a、 b及c。 2. 使用lblOut輸出結果。 程式說明: 1. Delphi並無次方與根號運算子,若欲使用次方或根號運算,則應使用intpower、power或sgrt等數學函式,且應於uses連結檔宣告區中,引用數學函式如下: uses Math; 2. intpower、power或sgrt等數學函式,計算結果均傳回實數的Extended型態,請特別留意資料型態的一致。