Delphi 程序設(shè)計(jì)課件_第1頁(yè)
Delphi 程序設(shè)計(jì)課件_第2頁(yè)
Delphi 程序設(shè)計(jì)課件_第3頁(yè)
Delphi 程序設(shè)計(jì)課件_第4頁(yè)
Delphi 程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩289頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ObjectPascal語(yǔ)言基礎(chǔ)2.1語(yǔ)言成分2.1.1程式組成2.1.2標(biāo)準(zhǔn)數(shù)據(jù)類型2.1.3運(yùn)算符與運(yùn)算式2.1.4標(biāo)準(zhǔn)函數(shù)2.1.5常量與變數(shù)2.1.1程式組成程式結(jié)構(gòu)【例2.1】顯示程式結(jié)構(gòu)。辭彙集基本字元保留字指示字識(shí)別字分隔符號(hào)注釋和編譯指令注釋編譯指令Pascal代碼書(shū)寫(xiě)風(fēng)格2.1.2標(biāo)準(zhǔn)數(shù)據(jù)類型什麼是數(shù)據(jù)類型數(shù)據(jù)類型的分類簡(jiǎn)單數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型指針類型2.1.2標(biāo)準(zhǔn)數(shù)據(jù)類型整數(shù)類型實(shí)數(shù)類型布爾類型字元類型字串類型2.1.3運(yùn)算符與運(yùn)算式運(yùn)算符算術(shù)運(yùn)算符關(guān)係運(yùn)算符位運(yùn)算符邏輯運(yùn)算符運(yùn)算符的優(yōu)先順序【例2.2】mod運(yùn)算的用法。(w+1)mod7 //明天(w–1+7)mod7 //昨天2.1.3運(yùn)算符與運(yùn)算式運(yùn)算式運(yùn)算式及其運(yùn)算規(guī)則運(yùn)算式的數(shù)據(jù)類型布爾運(yùn)算式中的短路計(jì)算書(shū)寫(xiě)運(yùn)算式時(shí)的注意事項(xiàng)【例2.3】使用運(yùn)算式。imod2=0//取值為true時(shí),i為一個(gè)偶數(shù),否則為奇數(shù)(i>=0)and(i<=9)//判斷i的值是否在0到9之間2.1.4標(biāo)準(zhǔn)函數(shù)函數(shù)的概念常用標(biāo)準(zhǔn)函數(shù)說(shuō)明調(diào)用標(biāo)準(zhǔn)函數(shù)【例2.4】使用標(biāo)準(zhǔn)函數(shù)。odd(i)//取值為true時(shí),i為一個(gè)奇數(shù),否則為偶數(shù)chr(ord(ch)+ord('a')-ord('A'))//將ch轉(zhuǎn)換成小寫(xiě)字母2.1.5常量與變數(shù)常量直接常量和符號(hào)常量常量定義變數(shù)變數(shù)聲明變數(shù)初始化變數(shù)參與的運(yùn)算2.2語(yǔ)句與流程控制2.2.1簡(jiǎn)單語(yǔ)句2.2.2流程控制的概念2.2.3複合語(yǔ)句2.2.4條件語(yǔ)句2.2.5迴圈語(yǔ)句2.2.1簡(jiǎn)單語(yǔ)句賦值語(yǔ)句【例2.5】變數(shù)賦值??照Z(yǔ)句過(guò)程調(diào)用語(yǔ)句讀語(yǔ)句寫(xiě)語(yǔ)句【例2.6】求一個(gè)三位數(shù)的數(shù)字和?!纠?.7】判斷一個(gè)年份是否為閏年。2.2.2流程控制的概念順序結(jié)構(gòu)分支結(jié)構(gòu)迴圈結(jié)構(gòu)圖2.4不執(zhí)行與死迴圈2.2.3複合語(yǔ)句begin

語(yǔ)句1;

語(yǔ)句2;end2.2.4條件語(yǔ)句if語(yǔ)句if語(yǔ)句的語(yǔ)法格式if布爾運(yùn)算式then語(yǔ)句1[else語(yǔ)句2]【例2.8】求三個(gè)整數(shù)中的最大值。複合條件if語(yǔ)句嵌套2.2.4條件語(yǔ)句case語(yǔ)句case運(yùn)算式of

常量1:語(yǔ)句1;

常量2:語(yǔ)句2;

……[else語(yǔ)句n;]end;【例2.9】計(jì)算每月的天數(shù)。2.2.5迴圈語(yǔ)句while語(yǔ)句while語(yǔ)句語(yǔ)法while布爾運(yùn)算式do

語(yǔ)句【例2.10】用while語(yǔ)句求1~10的累加和。while語(yǔ)句迴圈執(zhí)行次數(shù)問(wèn)題討論2.2.5迴圈語(yǔ)句repeat語(yǔ)句repeat語(yǔ)句語(yǔ)法repeat

語(yǔ)句;until布爾運(yùn)算式;【例2.11】用repeat語(yǔ)句求1~10的累加和。repeat語(yǔ)句迴圈執(zhí)行次數(shù)問(wèn)題討論2.2.5迴圈語(yǔ)句for語(yǔ)句for語(yǔ)句語(yǔ)法for迴圈變數(shù):=初值to終值do

語(yǔ)句for迴圈變數(shù):=初值downto終值do

語(yǔ)句【例2.12】用for語(yǔ)句求1~10的累加和。for語(yǔ)句迴圈執(zhí)行次數(shù)問(wèn)題討論2.2.5迴圈語(yǔ)句【例2.13】求一個(gè)日期(年月日)對(duì)應(yīng)的是星期幾。多重迴圈【例2.14】求100以內(nèi)的素?cái)?shù)。2.3定義數(shù)據(jù)類型2.3.1類型定義2.3.2枚舉和子界類型2.3.3類型相容原則2.3.1類型定義type類型=類型描述;例如,typedatatype=integer;arrint=array[1..10]ofinteger;2.3.2枚舉和子界類型枚舉類型定義枚舉類型type枚舉類型=(枚舉常量{,枚舉常量})聲明枚舉類型變數(shù)枚舉類型變數(shù)能夠進(jìn)行的操作枚舉類型變數(shù)不能進(jìn)行的操作子界類型type子界類型=常量1..常量2;2.3.3類型相容原則類型相同兩個(gè)數(shù)據(jù)類型具有完全相同的性質(zhì)。類型相容兩個(gè)不同的數(shù)據(jù)類型具有某些相同的性質(zhì)賦值相容一種數(shù)據(jù)類型的值可以通過(guò)賦值操作賦給另一種數(shù)據(jù)類型的變數(shù)。2.4構(gòu)造數(shù)據(jù)類型2.4.1數(shù)組類型2.4.2字串類型2.4.3集合類型2.4.4記錄類型2.4.5檔類型2.4.6指針類型2.4.1數(shù)組類型一維數(shù)組定義一維數(shù)組類型type數(shù)組類型=array[下標(biāo)類型]of元素類型;聲明一維數(shù)組變數(shù)數(shù)組聲明時(shí)可賦初值數(shù)組元素的引用格式數(shù)組元素的運(yùn)算獲得數(shù)組下標(biāo)的上界和下界兩個(gè)數(shù)組變數(shù)間的賦值運(yùn)算【例2.15】用一維數(shù)組計(jì)算Fibonacci序列值。Fibonacci序列是指首兩項(xiàng)為0、1,以後各項(xiàng)的值是其前兩項(xiàng)值之和的序列:{0,1,1,2,3,5,8,……}其數(shù)學(xué)中的遞推定義為:2.二維數(shù)組【例2.16】顯示螺旋方陣。12341123421213145311161564109873.動(dòng)態(tài)數(shù)組vara:arrayofinteger;SetLength(a,5);【例2.17】以動(dòng)態(tài)數(shù)組顯示幻方陣。8163574924.不規(guī)則的多維數(shù)組【例2.18】使用動(dòng)態(tài)數(shù)組輸出楊輝三角。2.4.2字串類型3種字串類型字串元素的運(yùn)算字串變數(shù)的運(yùn)算用於字串運(yùn)算的標(biāo)準(zhǔn)過(guò)程和函數(shù)【例2.19】判斷回文字符串。2.4.3集合類型集合類型的定義type 集合類型=setof元素類型;集合類型的值集合類型的運(yùn)算賦值運(yùn)算關(guān)係運(yùn)算屬於運(yùn)算集合運(yùn)算【例2.20】“篩選法”求素?cái)?shù)。2.4.4記錄類型記錄類型與變數(shù)對(duì)記錄變數(shù)中的域進(jìn)行操作對(duì)記錄變數(shù)進(jìn)行賦值操作【例2.21】使用記錄類型表示複數(shù)。開(kāi)域語(yǔ)句type記錄類型=record

域1:類型1;

域2:類型2;

……end;5.記錄數(shù)組vargroup:array[1..50]ofstudent;2.4.5檔類型檔類型是一種構(gòu)造數(shù)據(jù)類型,根據(jù)檔中數(shù)據(jù)元素的數(shù)據(jù)類型,可將檔類型分為3種:文本檔、類型檔和無(wú)類型檔。對(duì)不同類型的檔所進(jìn)行的操作也有所差別。檔類型的定義語(yǔ)法和使用方法詳見(jiàn)9.3節(jié)。2.4.6指針類型變數(shù)所佔(zhàn)用存儲(chǔ)單元的靜態(tài)分配與動(dòng)態(tài)分配靜態(tài)變數(shù)和動(dòng)態(tài)變數(shù)聲明指針變數(shù)指針?biāo)赶虻淖償?shù)對(duì)指針變數(shù)的操作使用標(biāo)準(zhǔn)過(guò)程new與dispose動(dòng)態(tài)生成或撤銷變數(shù)指針指向數(shù)組和記錄使用指針構(gòu)成鏈表2.5過(guò)程和函數(shù)2.5.1過(guò)程的聲明與調(diào)用2.5.2函數(shù)的聲明與調(diào)用2.5.3變數(shù)的作用域2.5.4參數(shù)傳遞2.5.5過(guò)程/函數(shù)中參數(shù)的類型相容原則2.5.6過(guò)程/函數(shù)的重載2.5.7遞歸的過(guò)程與函數(shù)2.5.1過(guò)程的聲明與調(diào)用過(guò)程聲明procedure過(guò)程[(參數(shù)列表)]; //過(guò)程首部局部聲明部分; //過(guò)程聲明部分begin //語(yǔ)句體語(yǔ)句;end; //此處以分號(hào)結(jié)束過(guò)程調(diào)用過(guò)程[(參數(shù){,參數(shù)})]2.5.2函數(shù)的聲明與調(diào)用函數(shù)聲明function函數(shù)[(參數(shù)列表)]:類型; //函數(shù)首部局部聲明部分; //函數(shù)聲明部分begin //語(yǔ)句體語(yǔ)句;end;函數(shù)怎樣返回值fact:=10; //為函數(shù)名賦值,返回結(jié)果result:=10 //為result變數(shù)賦值,返回結(jié)果函數(shù)調(diào)用函數(shù)過(guò)程[(參數(shù){,參數(shù)})]【例2.22】計(jì)算階乘並顯示計(jì)算公式。2.5.3變數(shù)的作用域全局變數(shù)局部變數(shù)【例2.23】求100以內(nèi)的Smith數(shù)。2.5.4參數(shù)傳遞參數(shù)聲明值參數(shù)變數(shù)參數(shù)常量參數(shù)輸出參數(shù)參數(shù)默認(rèn)值【例2.24】求500以內(nèi)的親密數(shù)對(duì)。2.5.5過(guò)程/函數(shù)中參數(shù)的類型相容原則參數(shù)傳遞的類型相容原則形式參數(shù)的類型聲明限制函數(shù)返回值的類型限制2.5.6過(guò)程/函數(shù)的重載functionMax(A,B:Integer):Integer;overload;functionMax(A,B:Int64):Int64;overload;重載的多個(gè)過(guò)程/函數(shù)之間必須滿足以下兩點(diǎn):參數(shù)必須不同,即以不同的參數(shù)個(gè)數(shù)或參數(shù)類型來(lái)區(qū)別重載的過(guò)程/函數(shù)。返回值可以相同,也可以不同,即不能以不同的返回值來(lái)區(qū)別重載的過(guò)程/函數(shù)。2.5.7遞歸的過(guò)程與函數(shù)【例2.25】使用遞歸函數(shù)計(jì)算階乘。5!=5×4!=5×4×3!=5×4×3×2!=5×4×3×2×1!實(shí)驗(yàn)2ObjectPascal語(yǔ)言程式設(shè)計(jì)基礎(chǔ)訓(xùn)練金額的中文大寫(xiě)方式求解約瑟夫環(huán)問(wèn)題

第3章Windows應(yīng)用程式介面設(shè)計(jì)3.1可視化編程基礎(chǔ)3.2窗體Form3.3文本顯示與編輯控件3.4按鈕3.5選項(xiàng)按鈕3.6列表框3.7介面佈局3.8定時(shí)器Timer3.1可視化編程基礎(chǔ)3.1.1面向?qū)ο蠡靖拍?.1.2定義類和使用對(duì)象3.1.3對(duì)象的屬性、方法和事件3.1.4事件驅(qū)動(dòng)的Delphi應(yīng)用程式3.1.5組件概述3.1.1面向?qū)ο蠡靖拍铑惻c對(duì)象類對(duì)象類的封裝性、繼承性和多態(tài)性類的封裝性類的繼承性類的多態(tài)性3.1.2定義類和使用對(duì)象定義類定義子類type

類=class(父類)

數(shù)據(jù)域聲明;

方法聲明首部;end;3.使用對(duì)象聲明對(duì)象varForm1:TForm1;對(duì)象實(shí)例化Application.CreateForm(TForm1,Form1);引用對(duì)象中的數(shù)據(jù)域和調(diào)用對(duì)象的方法對(duì)象.數(shù)據(jù)域?qū)ο?方法(實(shí)際參數(shù)表)釋放對(duì)象aday.Free;4.self指代對(duì)象自身procedureTForm1.FormCreate(Sender:TObject);beginself.Caption:=self.Caption+‘演示程式’;end;5.as和is運(yùn)算符SenderasTButton //將Sender對(duì)象轉(zhuǎn)換為一個(gè)TButton類的對(duì)象SenderisTComponent //判斷Sender是否屬於TComponent類及其子類3.1.3對(duì)象的屬性、方法和事件對(duì)象的屬性屬性的讀寫(xiě)特性:可讀寫(xiě)屬性和只讀屬性屬性的作用時(shí)間:設(shè)計(jì)時(shí)屬性和運(yùn)行時(shí)屬性引用對(duì)象屬性對(duì)象.屬性對(duì)象的方法對(duì)象的事件3.1.4事件驅(qū)動(dòng)的Delphi應(yīng)用程式組件的事件由消息觸發(fā)Delphi應(yīng)用程式由事件驅(qū)動(dòng)procedureTForm1.Button1Click(Sender:TObject);begin//事件處理程式end;3.1.5組件概述組件組件分類控件窗口控件是能夠獲得輸入焦點(diǎn)的控件。圖形控件是不能獲得輸入焦點(diǎn)的控件。

非可視組件查看組件的屬性、方法、事件及其類層次圖3.1組件類圖3.2窗體Form3.2.1窗口與窗體3.2.2窗體的屬性、方法和事件3.2.1窗口與窗體1.Windows窗口2.Delphi窗體3.2.2窗體的屬性、方法和事件窗體的主要屬性Name 窗體對(duì)象名Caption 窗體標(biāo)題Left與Top 窗體位置,左上角在螢?zāi)坏淖鶚?biāo)Height與Width 窗體的高度與寬度Color 窗體工作區(qū)的背景顏色Enabled 窗體的有效性Visible 窗體的可視性Icon 窗體標(biāo)題上的小圖示Font 窗體的字體Position 窗體運(yùn)行時(shí)的初始位置WindowState 窗體運(yùn)行時(shí)的初始狀態(tài)2.窗體的主要方法Close 關(guān)閉窗口Create 創(chuàng)建並初始化一個(gè)窗口對(duì)象Hide 隱藏窗口SetFocus 使窗口獲得焦點(diǎn)SetFocusedControl 使窗口上的控件獲得焦點(diǎn)Show 顯示被隱藏的窗口3.窗體的主要事件OnCreate和OnDestroy事件OnShow和OnHide事件OnActivate和OnDeactivate事件OnClick和OnDblClick事件OnPaint事件OnCanResize和OnResize事件OnCloseQuery和OnClose事件4.窗體事件的觸發(fā)次序創(chuàng)建窗口時(shí)由用戶操作觸發(fā)的事件關(guān)閉窗口時(shí)【例3.1】理解窗體的事件。新建應(yīng)用程式添加組件Label編寫(xiě)窗體OnCreate事件處理程式窗體OnCanResize和OnResize事件處理程式3.3文本顯示與編輯控件3.3.1標(biāo)籤Label3.3.2單行編輯框Edit3.3.3格式編輯框MaskEdit3.3.4多行編輯框Memo3.3.5多行RTF文本編輯框RichEdit3.3.6漸變編輯框SpinEdit3.3.1標(biāo)籤LabelLabel是一種用來(lái)顯示文字的圖形控件,它不能獲得輸入焦點(diǎn),因而只能顯示文本,不能編輯,常用來(lái)顯示不需要修改的文字。標(biāo)籤的主要屬性Caption顯示的文字內(nèi)容在窗體中引用組件屬性的格式如下:窗體.組件.屬性self.Label1.Caption:='你好!';3.3.2單行編輯框EditEdit是一種用於編輯單行文本的窗口控件,通常用於動(dòng)態(tài)地輸入一行文本。單行編輯框的屬性Text 顯示的文字內(nèi)容單行編輯框的事件OnChange當(dāng)Edit的Text屬性值改變時(shí)觸發(fā)【例3.2】求一個(gè)整數(shù)的各位數(shù)字。圖形介面設(shè)計(jì)窗口初始化程式回應(yīng)輸入值避免程式出現(xiàn)運(yùn)行錯(cuò)誤自定義函數(shù)isInteger(str)3.3.3格式編輯框MaskEditEditMask屬性Text和EditText屬性EditText是運(yùn)行時(shí)屬性【例3.3】使用MaskEdit編輯單行格式文本。設(shè)置文本格式動(dòng)態(tài)改變單行編輯框的文本3.3.4多行編輯框MemoMemo用於編輯多行文本。Lines屬性Alignment屬性WantReturns屬性WantTabs屬性ScrollBars屬性3.3.5多行RTF文本編輯框RichEditRichEdit控件的主要屬性SelStart和SelLenght屬性:選中文本塊的起始位置和長(zhǎng)度。DefAttributes和SelAttributes屬性:默認(rèn)字體樣式和當(dāng)前所選字體樣式。Paragraph屬性:游標(biāo)或選中塊所在段落的段屬性。RichEdit控件的主要事件OnSelectionChange事件【例3.4】多行文本編輯框。演示RichEdit控件的使用方法。顯示RichEdit1的選中塊位置剪切、複製和粘貼操作3.3.6漸變編輯框SpinEditSpinEdit是一個(gè)帶有上下箭頭的編輯框,其中數(shù)據(jù)能夠按照指定增量逐漸變化。SpinEdit屬性Value屬性表示值,Increment屬性表示每次的變化量。MaxValue和MinValue屬性表示數(shù)據(jù)變化範(fàn)圍,即最大值與最小值。SpinEdit主要事件有OnChange事件3.4按鈕3.4.1按鈕Button3.4.2圖像按鈕BitBtn3.4.3加速按鈕SpeedButton3.4.1按鈕ButtonButton按鈕的主要屬性Caption屬性:按鈕的標(biāo)題。Default屬性:默認(rèn)按鈕,即按下Enter鍵,將觸發(fā)Button的OnClick事件。Cancel屬性:取消按鈕,即按下Esc鍵,將觸發(fā)Button的OnClose事件。Button按鈕的主要事件OnClick事件3.4.2圖像按鈕BitBtnKind屬性決定BitBtn的種類。取值為bkYes、bkNo等Glyph屬性為BitBtn指定一個(gè).bmp檔,顯示在按鈕表面。Layout屬性控制位圖與文本的相對(duì)位置,取值為blGlyphLeft(位圖居左,默認(rèn)值)、blGlyphRight等3.4.3加速按鈕SpeedButtonDown屬性:按下?tīng)顟B(tài)Flat屬性:凸現(xiàn)GroupIndex屬性:成組【例3.5】設(shè)計(jì)“計(jì)算器”。使用Edit、BitBtn與SpeedButton控件自定義兩個(gè)過(guò)程用於輸入和運(yùn)算窗口初始化數(shù)字和運(yùn)算符按鈕的事件處理程式清除和退格按鈕關(guān)於自定義過(guò)程和函數(shù)的說(shuō)明關(guān)於本例的說(shuō)明3.5選項(xiàng)按鈕3.5.1複選框CheckBox3.5.2單選按鈕RadioButton與組框GroupBox3.5.3單選按鈕組RadioGroup3.5.1複選框CheckBoxCheckBox是一個(gè)帶標(biāo)籤的方框

,方框中打勾號(hào)

表示選擇,

表示不選擇。單擊可改變狀態(tài)。複選框選中與否的狀態(tài)用Checked屬性表示。3.5.2單選按鈕RadioButton與組框GroupBox單選按鈕單選按鈕RadioButton用來(lái)顯示一組互斥的選擇。位於同一個(gè)組件中的多個(gè)單選按鈕構(gòu)成一個(gè)組,實(shí)現(xiàn)單選。單選按鈕選中與否的狀態(tài)用Checked屬性表示。組框?yàn)橐唤M相關(guān)聯(lián)的組件提供一個(gè)可視分組,3.5.3單選按鈕組RadioGroup單選按鈕組RadioGroup是一個(gè)組框與一組單選按鈕的組合。其特有的屬性有:Columns,指明RadioButton的列數(shù),取值範(fàn)圍為1~16Items,指定各單選按鈕的顯示文本ItemIndex,指示當(dāng)前被選中RadioButton的序號(hào)3.6列表框3.6.1列表框ListBox3.6.2組合框ComboBox3.6.3複選列表框CheckListBox3.6.1列表框ListBox列表框的主要屬性Items屬性ItemIndex屬性Columns屬性MultiSelect屬性Selected屬性列表框的主要方法Clear方法,清除列表框中的所有資料項(xiàng)目。列表框的主要事件OnChange事件:當(dāng)用戶在列表框中選擇新的資料項(xiàng)目時(shí)觸發(fā)。OnClick事件:當(dāng)用戶單擊列表框時(shí)觸發(fā)。3.6.2組合框ComboBox組合框的主要屬性Style屬性:指定組合框的類型,取值為csDropDown(可編輯且有下拉列表)、csDropDownList(不可編輯只有下拉列表)、csSimple(只可編輯沒(méi)有下拉列表)。組合框的主要方法組合框的主要事件OnChange事件:當(dāng)用戶在下拉列表中選擇新的資料項(xiàng)目,或在編輯框中修改了數(shù)據(jù)時(shí)觸發(fā)。OnDropDown事件:當(dāng)用戶單擊編輯框右端的箭頭按鈕,打開(kāi)下拉列表時(shí)觸發(fā)?!纠?.6】設(shè)計(jì)字體對(duì)話框。演示單選按鈕、複選框、列表框和組合框等組件的使用方法。改變文本顏色改變字形改變段落對(duì)齊方式改變字體改變字型大小3.6.3複選列表框CheckListBoxChecked屬性:運(yùn)行時(shí)屬性,表示每個(gè)資料項(xiàng)目的狀態(tài)。Checked是一個(gè)數(shù)組,元素類型為boolean。OnClickCheck事件:?jiǎn)螕糍Y料項(xiàng)目前的複選框時(shí)觸發(fā)?!纠?.7】管理關(guān)鍵字庫(kù)。演示CheckListBox的多項(xiàng)選擇用法顯示選中項(xiàng)添加資料項(xiàng)目刪除當(dāng)前資料項(xiàng)目刪除所有選中資料項(xiàng)目3.7介面佈局3.7.1佈局工具3.7.2控件的包含關(guān)係3.7.3佈局屬性Align與Anchor3.7.4分隔條Splitter3.7.1佈局工具選擇多個(gè)組件對(duì)齊對(duì)話框調(diào)整控件大小的Size對(duì)話框?qū)R工具欄3.7.2控件的包含關(guān)係面板(Panel)控件的Parent屬性3.7.3佈局屬性Align與AnchorAlign屬性alNonealLeft、alRight、alTop和alBottomalClientAnchor屬性3.7.4分隔條SplitterSplitter的主要屬性Align屬性Beveled屬性MinSize屬性Splitter的主要事件OnCanResize事件OnMoved事件【例3.8】分隔窗口。3.8定時(shí)器TimerTimer是一個(gè)非可視組件Enabled屬性控制定時(shí)器的開(kāi)關(guān)狀態(tài)。Interval屬性控制操作執(zhí)行的時(shí)間間隔,只有一個(gè)事件OnTimer?!纠?.9】字串的滾動(dòng)顯示。使用Edit、SpinEdit及Timer組件。字串實(shí)現(xiàn)滾動(dòng)控制滾動(dòng)速度實(shí)驗(yàn)3Windows應(yīng)用程式介面設(shè)計(jì)整數(shù)進(jìn)制轉(zhuǎn)換。貨幣轉(zhuǎn)換多項(xiàng)選擇與數(shù)據(jù)移動(dòng)第1章Delphi2005簡(jiǎn)介第2章ObjectPascal語(yǔ)言基礎(chǔ)第3章Windows應(yīng)用程式介面設(shè)計(jì)第4章菜單、工具欄和對(duì)話框第5章使用複雜組件第6章面向?qū)ο蟮暮诵奶匦缘?章多文檔介面設(shè)計(jì)第8章程式調(diào)試與異常處理第9章檔操作和流第10章多媒體應(yīng)用設(shè)計(jì)第11章資料庫(kù)應(yīng)用設(shè)計(jì)第12章綜合應(yīng)用設(shè)計(jì)第4章菜單、工具欄和對(duì)話框4.1菜單4.2行為列表組件ActionList4.3工具欄與狀態(tài)欄4.4消息框與輸入框4.5Windows通用對(duì)話框4.1菜單4.1.1主菜單MainMenu4.1.2彈出式菜單PopupMenu4.1.3菜單圖像與圖像列表組件ImageList4.1.1主菜單MainMenu主菜單是相對(duì)於窗口而言的,它出現(xiàn)在窗口的標(biāo)題欄下,與窗口同時(shí)出現(xiàn)。菜單設(shè)計(jì)器菜單項(xiàng)的特性菜單項(xiàng)的狀態(tài)複選單選【例4.1】設(shè)計(jì)主菜單。添加主菜單組件添加菜單項(xiàng)設(shè)置分隔條子菜單設(shè)置快捷鍵和加速鍵設(shè)置有效狀態(tài)設(shè)置複選標(biāo)誌設(shè)置單選標(biāo)誌編寫(xiě)菜單項(xiàng)的事件處理程式菜單結(jié)構(gòu)4.1.2彈出式菜單PopupMenu彈出式菜單是相對(duì)於控件而言的將某個(gè)控件的PopupMenu屬性設(shè)置為一個(gè)已存在的彈出式菜單4.1.3菜單圖像與圖像列表組件ImageList圖像列表組件中添加圖像菜單與圖像列表組件相關(guān)聯(lián)菜單組件與圖像列表組件相關(guān)聯(lián)菜單項(xiàng)與ImageList中的指定圖像相關(guān)聯(lián)4.2行為列表組件ActionList行為(Action)ActionList編輯器添加標(biāo)準(zhǔn)行為自定義行為【例4.2】使用ActionList組件設(shè)計(jì)菜單。添加系統(tǒng)定義的Cut、Copy和Paste等標(biāo)準(zhǔn)行為添加組件為ActionList添加行為使用Action屬性創(chuàng)建菜單項(xiàng)4.3工具欄與狀態(tài)欄4.3.1工具欄ToolBar4.3.2狀態(tài)欄StatusBar4.3.1工具欄ToolBar創(chuàng)建ToolBar的按鈕ToolButton執(zhí)行NewButton執(zhí)行NewSeparatorToolBar上添加其他組件【例4.3】設(shè)計(jì)工具欄。建立常用與格式工具欄,演示自定義行為的操作。設(shè)計(jì)常用工具欄格式工具欄上添加按鈕添加帶下拉菜單的按鈕格式工具欄上添加ComboBox、SpinEdit等組件格式工具欄的狀態(tài)隨著游標(biāo)位置處文本字體的改變而改變顯示與隱藏工具欄自定義行為4.3.2狀態(tài)欄StatusBarSimplePanel屬性決定單面板與多面板?!纠?.4】設(shè)計(jì)狀態(tài)欄。添加狀態(tài)欄顯示游標(biāo)當(dāng)前位置顯示數(shù)據(jù)修改過(guò)的狀態(tài)顯示系統(tǒng)時(shí)間4.4消息框與輸入框4.4.1消息框與資訊函數(shù)4.4.2輸入框與輸入函數(shù)4.4.1消息框與資訊函數(shù)ShowMessage過(guò)程procedureShowMessage(constMsg:string);MessageDlg函數(shù)functionMessageDlg(constMsg:string;DlgType:TMsgDlgType;Buttons:TMsgDlgButtons;HelpCtx:integer):integer;例如,MessageDlg('數(shù)據(jù)已經(jīng)改動(dòng),是否存盤(pán)?',mtConfirmation,[mbYes,mbNO,mbCancel],1);MessageDlgPos函數(shù)4.4.2輸入框與輸入函數(shù)InputBox函數(shù)functionInputBox(constACaption,APrompt,ADefault:string):string;例如,LoginName:=InputBox('登錄','請(qǐng)輸入用戶名:','guest');InputQuery函數(shù)functionInputQuery(constACaption,APrompt:string;varValue:string):Boolean;4.5Windows通用對(duì)話框4.5.1打開(kāi)與保存檔對(duì)話框4.5.2字體與顏色對(duì)話框4.5.3查找與替換對(duì)話框4.5.4頁(yè)面設(shè)置、列印與列印設(shè)置對(duì)話框?qū)υ捒蚪M件類4.5.1打開(kāi)與保存檔對(duì)話框打開(kāi)檔對(duì)話框(OpenDialog)調(diào)用打開(kāi)檔對(duì)話框:執(zhí)行Execute方法OpenDialog組件的屬性:FileName、InitialDir、Filter、OptionsOpenDialog的主要事件:OnFolderChange保存檔對(duì)話框(SaveDialog)打開(kāi)與保存圖形檔對(duì)話框4.5.2字體與顏色對(duì)話框字體對(duì)話框(FontDialog)執(zhí)行Execute方法,所選字體存儲(chǔ)在FontDialog.Font屬性中顏色對(duì)話框(ColorDialog)執(zhí)行Execute方法,所選顏色存儲(chǔ)在ColorDialog.Color屬性中TColor類以RGB函數(shù)值表示顏色:RGB(255,0,0)以常量值表示顏色:clRed、clGreen4.5.3查找與替換對(duì)話框查找對(duì)話框(FindDialog)執(zhí)行Execute方法FindDialog的屬性FindText屬性,保存查找內(nèi)容字串。Options屬性,集合類型,設(shè)置全字匹配、區(qū)分大小寫(xiě)、查找方向等選項(xiàng)。FindDialog的事件OnFind事件,單擊【查找下一個(gè)】按鈕時(shí)觸發(fā)。OnClose事件,單擊【取消】按鈕時(shí)觸發(fā)。2.替換對(duì)話框(ReplaceDialog)執(zhí)行Execute方法ReplaceDialog的屬性FindText屬性,保存查找內(nèi)容字串。ReplaceText屬性,保存替換內(nèi)容字串。Options屬性,設(shè)置選項(xiàng)。ReplaceDialog的事件OnFind事件,單擊【查找下一個(gè)】按鈕時(shí)觸發(fā)。OnClose事件,單擊【取消】按鈕時(shí)觸發(fā)。OnReplace事件,單擊【替換】或【全部替換】按鈕時(shí)觸發(fā)?!纠?.5】調(diào)用系統(tǒng)對(duì)話框。新建檔功能打開(kāi)檔保存與另存檔設(shè)置字體改變顏色查找替換替換演算法描述調(diào)用指定事件處理程式父類對(duì)象與子類對(duì)象的識(shí)別4.5.4頁(yè)面設(shè)置、列印與列印設(shè)置對(duì)話框頁(yè)面設(shè)置對(duì)話框(PageSetupDialog)列印對(duì)話框(PrintDialog)列印設(shè)置對(duì)話框(PrinterSetupDialog)實(shí)驗(yàn)4設(shè)計(jì)菜單、工具欄實(shí)驗(yàn)1——自動(dòng)判題實(shí)驗(yàn)2——設(shè)計(jì)記事本或?qū)懽职宓?章Delphi2005簡(jiǎn)介第2章ObjectPascal語(yǔ)言基礎(chǔ)第3章Windows應(yīng)用程式介面設(shè)計(jì)第4章菜單、工具欄和對(duì)話框第5章使用複雜組件第6章面向?qū)ο蟮暮诵奶匦缘?章多文檔介面設(shè)計(jì)第8章程式調(diào)試與異常處理第9章檔操作和流第10章多媒體應(yīng)用設(shè)計(jì)第11章資料庫(kù)應(yīng)用設(shè)計(jì)第12章綜合應(yīng)用設(shè)計(jì)第5章使用複雜組件5.1滾動(dòng)控件5.2日期類控件5.3多頁(yè)控件PageControl5.4進(jìn)程條ProgressBar5.5字串網(wǎng)格StringGrid5.6樹(shù)形視圖TreeView5.7列表視圖ListView5.1滾動(dòng)控件5.1.1滾動(dòng)條ScrollBar5.1.2帶刻度的滾動(dòng)條TrackBar5.1.3微調(diào)按鈕UpDown5.1.1滾動(dòng)條ScrollBarScrollBar的主要屬性Kind 指定ScrollBar的方向,取值為sbHorizontal(水準(zhǔn))、sbVertical(垂直)Position 指定ScrollBar中滾動(dòng)塊的當(dāng)前位置Min 指定Position屬性的最小值Max 指定Position屬性的最大值ScrollBar控件的主要事件OnChange 當(dāng)Position屬性值改變時(shí)觸發(fā)OnScroll 當(dāng)拖動(dòng)滾動(dòng)條上滑塊時(shí)觸發(fā)【例5.1】合成顏色。介面設(shè)計(jì)窗口初始化改變Shape的顏色回應(yīng)編輯框中輸入值5.1.2帶刻度的滾動(dòng)條TrackBarTrackBar的主要屬性O(shè)rientation屬性:指定擺放方向,取值為trHorizontal(水準(zhǔn))、trVertical(垂直)。TickMarks屬性:指定刻度出現(xiàn)位置,取值為tmBottomRight(右邊或下邊)、tmTopLeft(左邊或上邊)、tmBoth(兩側(cè))。Frenquency屬性:指定刻度間隔。TrackBar的主要事件:OnChange5.1.3微調(diào)按鈕UpDownUpDown的主要屬性Associate 指定UpDown依附的控件AlignButton 指定UpDown與其所依附控件的相對(duì)位置,取值為udLeft(左側(cè))、udRight(右側(cè))Increment 當(dāng)單擊按鈕時(shí),控制Position的增量,默認(rèn)值為1。Orientation 指定按鈕方向,取值為udHorizontal(水準(zhǔn))、udVertical(垂直)UpDown的主要事件OnChanging和OnChangingEx事件OnClick事件5.2日期類控件5.2.1日期時(shí)間類TDateTime5.2.2日期和時(shí)間控件DateTimePicker5.2.3月曆控件MonthCalendar5.2.4日曆控件Calendar5.2.1日期時(shí)間類TDateTimeTDateTime的整數(shù)部分記載天數(shù),小數(shù)部分記載小時(shí)數(shù)。例如,0 表示12/30/189912:00am-1.25 表示12/29/18996:00am35065 表示1/1/199612:00amTDateTime類提供的過(guò)程和函數(shù)functionDate:TDateTime;//返回當(dāng)前日期functionTime:TDateTime;//返回當(dāng)前時(shí)間functionNow:TDateTime; //返回當(dāng)前日期與時(shí)間functionEncodeDate(Year,Month,Day:Word):TDateTime; //日期編碼procedureDecodeDate(Date:TDateTime;varYear,Month,Day:Word);//日期解碼5.2.2日期和時(shí)間控件DateTimePickerDateTimePicker的主要屬性Date 日期值,如2000-1-1Time 時(shí)間值,如10:10:10Kind 顯示類型,取值為dtkDate(日期)、dtkTime(時(shí)間)DateFormat 日期的顯示格式,取值為dfShort(短日期,兩位年份)、dfLong(長(zhǎng)日期,四位年份)MaxDate 日期的最大值MinDate 日期的最小值5.2.3月曆控件MonthCalendarMonthCalendar的主要屬性MultiSelect 指定是否允許多選。ShowToday 指定是否特別標(biāo)注Today的日期ShowTodayCircle 指定Today值是否有紅色圈標(biāo)注WeekNumbers 指定是否顯示周數(shù)列表。FirstDayofWeek MonthCalendar表格以星期幾開(kāi)始排列。5.2.4日曆控件CalendarCalendar的主要屬性Year、MonthDay 分別表示日期中的年、月、日值GirdLineWidth 指定網(wǎng)格線的寬度StartofWeek 指定Canlendar表格以星期幾開(kāi)始排列。取值為0(星期日,默認(rèn))、1(星期一)等5.3多頁(yè)控件PageControl建立多頁(yè)執(zhí)行彈出式菜單命令NewPagePageControl的選中狀態(tài)有所不同:?jiǎn)螕鬚ageControl標(biāo)題,選中PageControl控件;單擊頁(yè)面,選中當(dāng)前TabSheet頁(yè)面。2.PageControl多頁(yè)控件的主要屬性ActivePage 指定PageControl控件的當(dāng)前頁(yè)。Multiline 指定PageControl控件是否呈現(xiàn)多行風(fēng)格Images 指定與PageControl相關(guān)聯(lián)的圖像列表組件PageCount 指明PageControl控件的總頁(yè)數(shù)Pages 保存PageControl控件的所有頁(yè)面。Pages是一個(gè)數(shù)組,元素類型為T(mén)TabSheet,元素個(gè)數(shù)放在PageCount中ActivePageIndex 指明當(dāng)前活動(dòng)頁(yè)的Pages屬性的下標(biāo),從0開(kāi)始計(jì)數(shù)例如,PageControl1.ActivePage:=PageControl1.Pages[PageControl1.PageCount-1];3.TabSheet頁(yè)面的主要屬性Caption 標(biāo)籤頁(yè)名稱PageIndex 該頁(yè)在Pages數(shù)組中的下標(biāo),從0開(kāi)始TabVisible 該頁(yè)是否可見(jiàn)ImageIndex 該頁(yè)使用的圖像在ImageList中的索引值【例5.2】多頁(yè)方式顯示日期與月曆。添加PageControl各頁(yè)顯示圖示頁(yè)面上添加控件窗口初始化識(shí)別當(dāng)前頁(yè)使3個(gè)日期類控件所顯示的日期一致按鈕上的控制5.4進(jìn)程條ProgressBarProgressBar的主要屬性Position 指定ProgressBar的當(dāng)前位置。Max和Min 確定ProgressBar的位置範(fàn)圍。Step 指定ProgressBar控件變化的增量ProgressBar的方法procedureStepIt;//使Position屬性增加Step屬性值procedureStepBy(Delta:Integer);//使Position屬性增加參數(shù)Delta值5.5字串網(wǎng)格StringGridColCount 指定列數(shù)RowCount 指定行數(shù)FixedCols 指定固定列。FixedRows 指定固定行DefaultColWidth 指定列寬度FixedColor 指定固定行和固定列的背景色Cell運(yùn)行時(shí)屬性 數(shù)組元素。數(shù)組下標(biāo)從0開(kāi)始。例如,StringGrid.Cell[1,0]表示第2列、第1行的元素【例5.3】銀行貸款按月還本付息的計(jì)算。已知計(jì)算公式為:月還本金=貸款金額÷(貸款年限*12月)本金餘額=貸款金額-累計(jì)已還本金月還利息=貸款利率×本金餘額月還本息=月還本金+月還利息5.6樹(shù)形視圖TreeView5.6.1樹(shù)與結(jié)點(diǎn)5.6.2使用TreeView控件5.6.3結(jié)點(diǎn)類TTreeNode5.6.1樹(shù)與結(jié)點(diǎn)樹(shù)TreeView中的資料項(xiàng)目也稱為結(jié)點(diǎn),結(jié)點(diǎn)屬於TTreeNode類。換言之,TreeView控件是TreeNode結(jié)點(diǎn)對(duì)象的容器。5.6.2使用TreeView控件TreeView的Items屬性用於存儲(chǔ)結(jié)點(diǎn)存儲(chǔ)TreeView中的結(jié)點(diǎn)及其結(jié)構(gòu)設(shè)置結(jié)點(diǎn)的屬性TreeView的主要屬性TreeView的主要方法TreeView的主要事件OnChange事件:當(dāng)選中結(jié)點(diǎn)發(fā)生變化後觸發(fā)。5.6.3結(jié)點(diǎn)類TTreeNodeTTreeNode類的主要屬性TreeView與TreeNode的屬性比較TreeView.Items屬性與TreeNode.Item屬性比較TreeView.Items.Count屬性與TreeNode.Count屬性比較TreeView與TreeNode的Selected屬性比較TTreeNode類的主要方法增加結(jié)點(diǎn)插入結(jié)點(diǎn)查找結(jié)點(diǎn)刪除結(jié)點(diǎn)【例5.4】切換顯示系統(tǒng)圖像。介面設(shè)計(jì)窗體初始化單擊TreeView1結(jié)點(diǎn)時(shí),切換圖像程式設(shè)計(jì)說(shuō)明5.7列表視圖ListViewListView的主要屬性ViewStyle屬性Items屬性LargeImages屬性SmallImages屬性Columns屬性ColumnClick屬性ListView的主要事件OnDblClick事件OnSelectItem事件OnColumnClick事件ListView的主要方法

Arrange方法:重新排列資料項(xiàng)目ListView.Items的主要屬性和方法【例5.5】使用ListView控件。介面設(shè)計(jì)窗體初始化單擊TreeView1結(jié)點(diǎn)時(shí),為L(zhǎng)istView1動(dòng)態(tài)添加資料項(xiàng)目單選菜單項(xiàng)切換ListView1資料項(xiàng)目的顯示方式實(shí)驗(yàn)5使用複雜組件使用TrackBar、UpDown控件顯示字串變數(shù)的結(jié)構(gòu)銀行貸款多種還款方式的計(jì)算動(dòng)態(tài)改變TreeView中結(jié)點(diǎn)第1章Delphi2005簡(jiǎn)介第2章ObjectPascal語(yǔ)言基礎(chǔ)第3章Windows應(yīng)用程式介面設(shè)計(jì)第4章菜單、工具欄和對(duì)話框第5章使用複雜組件第6章面向?qū)ο蟮暮诵奶匦缘?章多文檔介面設(shè)計(jì)第8章程式調(diào)試與異常處理第9章檔操作和流第10章多媒體應(yīng)用設(shè)計(jì)第11章資料庫(kù)應(yīng)用設(shè)計(jì)第12章綜合應(yīng)用設(shè)計(jì)第6章面向?qū)ο蟮暮诵奶匦?.1軟體的可重用性6.2深入理解對(duì)象6.3類的封裝性6.4類的繼承性6.5類的多態(tài)性6.6可視化繼承6.1軟體的可重用性兩種可重用方式用重用進(jìn)行軟體開(kāi)發(fā)為重用而進(jìn)行軟體開(kāi)發(fā)Delphi的軟體重用機(jī)制6.2深入理解對(duì)象6.2.1對(duì)象引用模型6.2.2動(dòng)態(tài)地創(chuàng)建組件6.2.1對(duì)象引用模型變數(shù)的賦值方式2.對(duì)象的引用賦值方式【例6.1】理解對(duì)象引用模型。6.2.2動(dòng)態(tài)地創(chuàng)建組件【例6.2】動(dòng)態(tài)地創(chuàng)建按鈕對(duì)象。6.3類的封裝性6.3.1什麼是封裝6.3.2自定義類6.3.3如何封裝6.3.4屬性6.3.1什麼是封裝封裝性是面向?qū)ο蟮暮诵奶蒯缰?,它提供一種資訊隱藏技術(shù)。類的封裝性包含兩層含義:一是將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作組合起來(lái)構(gòu)成類,類是一個(gè)不可分割的獨(dú)立單位;二是類中既要提供與外部聯(lián)繫的方法,同時(shí)又要盡可能地隱藏類的實(shí)現(xiàn)細(xì)節(jié)。6.3.2自定義類創(chuàng)建新單元引用已存在的單元【例6.3】自定義日期類。應(yīng)用程式介面設(shè)計(jì)新建單元保存自定義日期類應(yīng)用程式中聲明引用單元引用單元中的類TDate1類設(shè)計(jì)中存在的問(wèn)題6.3.3如何封裝構(gòu)造方法與析構(gòu)方法類方法方法的重載類中成員的可見(jiàn)性private(私有的)protected(保護(hù)的)public(公有的)【例6.4】類的封裝。封裝後的TDate2類聲明調(diào)用TDate2類的方法類的封裝性體現(xiàn)6.3.4屬性屬性的聲明property屬性:類型read讀方法write寫(xiě)方法;屬性的read與writepropertyYear:wordreadGetYearwriteSetYear;propertyText:stringreadGetText;屬性的引用對(duì)象.屬性【例6.5】定義屬性。含有屬性定義的TDate3類聲明使用屬性類封裝的優(yōu)越性設(shè)計(jì)屬性的優(yōu)越性日期類的設(shè)計(jì)與屬性問(wèn)題討論【例6.6】完善自定義的日期類。實(shí)現(xiàn)類中對(duì)象方法和構(gòu)造方法的重載。完善日期類的定義應(yīng)用程式設(shè)計(jì)6.4類的繼承性6.4.1什麼是繼承6.4.2定義繼承的類6.4.3TObject類6.4.1什麼是繼承繼承的概念繼承的作用6.4.2定義繼承的類聲明繼承類type

類=class(父類)

數(shù)據(jù)域聲明;

方法說(shuō)明首部;end;繼承原則類的賦值相容性:子類對(duì)象即是父類對(duì)象【例6.7】定義繼承的類。父類TPerson定義子類TStudent定義創(chuàng)建TPerson類及其子類TStudent對(duì)象程式設(shè)計(jì)說(shuō)明程式設(shè)計(jì)中存在問(wèn)題6.4.3TObject類TObject類定義的主要方法constructorCreate; //構(gòu)造方法functionClassType:TClass; //返回對(duì)象所屬的類classfunctionClassName:ShortString; //獲得類名classfunctionClassNameIs(constName:string):Boolean;classfunctionClassParent:TClass; //獲得該類的父類procedureFree; //釋放對(duì)象6.5類的多態(tài)性6.5.1什麼是多態(tài)6.5.2子類方法覆蓋父類同名方法6.5.3運(yùn)行時(shí)多態(tài)性6.5.1什麼是多態(tài)方法的重載重載(overload)是指同一個(gè)類中的多個(gè)方法可以同名但參數(shù)個(gè)數(shù)或參數(shù)類型必須不同。方法的覆蓋覆蓋(override)是指子類重定義了父類中的同名方法。6.5.2子類方法覆蓋父類同名方法子類繼承父類方法子類方法覆蓋父類同名方法inherited父類同名方法(參數(shù)列表)【例6.8】子類方法覆蓋父類同名方法。子類重定義父類的同名方法和屬性使用子類對(duì)象

6.5.3運(yùn)行時(shí)多態(tài)性編譯時(shí)多態(tài)性和運(yùn)行時(shí)多態(tài)性編譯時(shí)多態(tài)性運(yùn)行時(shí)多態(tài)性實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性靜態(tài)方法虛方法與覆蓋方法構(gòu)造方法的繼承和覆蓋虛析構(gòu)方法6.6可視化繼承Form窗體繼承窗體繼承概念窗體繼承操作使用Frames框架創(chuàng)建一個(gè)Frames將Frames框架添加到窗體上引用Frames中的控件Frames框架繼承【例6.9】可視化繼承及運(yùn)行時(shí)多態(tài)性。聲明虛方法和覆蓋方法介面設(shè)計(jì)實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性實(shí)驗(yàn)6面向?qū)ο蟮暮诵奶匦愿腡Person類增加TTeacher類設(shè)計(jì)一個(gè)銀行帳戶資訊類製作一個(gè)閃現(xiàn)窗口第1章Delphi2005簡(jiǎn)介第2章ObjectPascal語(yǔ)言基礎(chǔ)第3章Windows應(yīng)用程式介面設(shè)計(jì)第4章菜單、工具欄和對(duì)話框第5章使用複雜組件第6章面向?qū)ο蟮暮诵奶匦缘?章多文檔介面設(shè)計(jì)第8章程式調(diào)試與異常處理第9章檔操作和流第10章多媒體應(yīng)用設(shè)計(jì)第11章資料庫(kù)應(yīng)用設(shè)計(jì)第12章綜合應(yīng)用設(shè)計(jì)第7章多文檔介面設(shè)計(jì)7.1建立MDI應(yīng)用程式7.2控制應(yīng)用程式的行為7.1建立MDI應(yīng)用程式7.1.1SDI與MDI7.1.2創(chuàng)建主窗體與子窗體7.1.3MDI窗體的屬性和方法7.1.4MDI的菜單設(shè)計(jì)7.1.1SDI與MDI單文檔介面單文檔介面(SDI)的應(yīng)用程式由一個(gè)窗口構(gòu)成多文檔介面多文檔介面(MDI)的應(yīng)用程式由一個(gè)框架窗口和多個(gè)文檔窗口組成。7.1.2創(chuàng)建主窗體與子窗體窗體類型FormStyle屬性表示窗體的類型,取值為fsNormal、fsMDIForm(MDI主窗口)、fsMDIChild(MDI子窗口)、fsStayOnTop(SDI窗口,總在最前)主窗體與子窗體窗體的自動(dòng)創(chuàng)建方式動(dòng)態(tài)創(chuàng)建子窗口設(shè)置子窗體不在啟動(dòng)時(shí)自動(dòng)建立編程動(dòng)態(tài)創(chuàng)建子窗口7.1.3MDI窗體的屬性和方法MDI窗體的主要屬性WindowMenu屬性ActiveMDIChild屬性MDIChildren和MDIChildCount屬性MDI窗體的主要方法Next()和Previous()方法Cascade()和Tile()方法ArrangeIcons()方法7.1.4MDI的菜單設(shè)計(jì)合併菜單建立“窗口”菜單建立菜單項(xiàng)並調(diào)用方法使用ActionList組件【例7.1】建立MDI應(yīng)用程式。建立主窗體建立子窗體範(fàn)本動(dòng)態(tài)建立與釋放子窗口菜單合併在菜單中列出打開(kāi)的文檔主窗體的“窗口”菜單設(shè)計(jì)啟動(dòng)時(shí)獲得子窗口狀態(tài)主窗體的“檔”菜單7.2控制應(yīng)用程式的行為7.2.1TApplication類7.2.2TScreen類7.2.1TApplication類TApplication類的屬性Active 指明當(dāng)前程式是否處?kù)痘顒?dòng)狀態(tài)且獲得焦點(diǎn)ExeName 返回應(yīng)用程式的檔案名和路徑Handle 指明應(yīng)用程式主窗口的句柄Icon 當(dāng)程式最小化時(shí)將顯示該圖示Title 指定應(yīng)用程式的標(biāo)題,顯示在任務(wù)欄上MainForm 惟一標(biāo)識(shí)應(yīng)用程式的主窗體2.TApplication類的主要方法procedureInitialize; //初始化應(yīng)用程式procedureCreateForm(FormClass:TFormClass;varReference); //創(chuàng)建一個(gè)窗體procedureRun; 運(yùn)行應(yīng)用程式7.2.2TScreen類DesktopHeight 顯示器當(dāng)前螢?zāi)唤馕龆鹊母叨菵esktopWidth 顯示器當(dāng)前螢?zāi)唤馕龆鹊膶挾菷onts 存儲(chǔ)系統(tǒng)支持的所有字體名ActiveForm只讀 在應(yīng)用程式中當(dāng)前活動(dòng)的窗體ActiveControl只讀 當(dāng)前活動(dòng)窗口中獲得焦點(diǎn)的窗口控件Forms 包含著應(yīng)用程式中顯示的所有窗體,包括對(duì)話框FormCount只讀 Forms數(shù)組長(zhǎng)度CustomForms 包含著應(yīng)用程式中所有顯示的窗體和屬性選項(xiàng)卡CustomFormCount只讀 CustomForm數(shù)組長(zhǎng)度【例7.2】獲得應(yīng)用程式運(yùn)行時(shí)狀態(tài)資訊。獲得螢?zāi)唤馕龆纫约皯?yīng)用程式的檔案名和路徑獲得應(yīng)用程式運(yùn)行時(shí)狀態(tài)資訊製作閃現(xiàn)窗口實(shí)驗(yàn)7多文檔介面設(shè)計(jì)設(shè)計(jì)多文檔表格處理程式,窗口介面及功能類似Excel。實(shí)驗(yàn)要求:建立MDI應(yīng)用程式,每個(gè)子窗口處理一個(gè)文檔,每個(gè)文檔可由多張表格組成,添加菜單、工具欄、狀態(tài)欄、對(duì)話框等組件,實(shí)現(xiàn)打開(kāi)、保存檔,修改文字格式等功能。第1章Delphi2005簡(jiǎn)介第2章ObjectPascal語(yǔ)言基礎(chǔ)第3章Windows應(yīng)用程式介面設(shè)計(jì)第4章菜單、工具欄和對(duì)話框第5章使用複雜組件第6章面向?qū)ο蟮暮诵奶匦缘?章多文檔介面設(shè)計(jì)第8章程式調(diào)試與異常處理第9章檔操作和流第10章多媒體應(yīng)用設(shè)計(jì)第11章資料庫(kù)應(yīng)用設(shè)計(jì)第12章綜合應(yīng)用設(shè)計(jì)第8章程式調(diào)試與異常處理8.1程式錯(cuò)誤及處理8.2程式調(diào)試技術(shù)8.3異常處理機(jī)制8.4異常類8.1程式錯(cuò)誤及處理8.1.1程式錯(cuò)誤及發(fā)現(xiàn)時(shí)刻8.1.2發(fā)現(xiàn)及處理錯(cuò)誤8.1.1程式錯(cuò)誤及發(fā)現(xiàn)時(shí)刻語(yǔ)法錯(cuò)違反語(yǔ)法規(guī)範(fàn)的錯(cuò)誤稱為語(yǔ)法錯(cuò),這類錯(cuò)誤通常在編譯時(shí)發(fā)現(xiàn)。語(yǔ)義錯(cuò)在語(yǔ)義上存在錯(cuò)誤,稱為語(yǔ)義錯(cuò)。邏輯錯(cuò)運(yùn)行結(jié)果卻與期望值不符,這類錯(cuò)誤稱為邏輯錯(cuò)。8.1.2發(fā)現(xiàn)及處理錯(cuò)誤發(fā)現(xiàn)錯(cuò)誤【例8.1】發(fā)現(xiàn)除數(shù)為0錯(cuò)誤。編譯錯(cuò)vari:integer;i:=2div0;運(yùn)行錯(cuò)

vari,j:integer;i:=0;j:=2divi;邏輯錯(cuò)

varx:real;x:=2/0;【例8.2】發(fā)現(xiàn)整數(shù)類型數(shù)據(jù)溢出錯(cuò)誤。編譯錯(cuò)varj:shortint;month:1..12;j:=127+1;month:=13;運(yùn)行錯(cuò)

vari,j:shortint;i:=127;j:=i+1;編譯時(shí)強(qiáng)制進(jìn)行範(fàn)圍檢查{$R+} //編譯指令,打開(kāi)範(fàn)圍檢查語(yǔ)句序列;{$R-} //編譯指令,關(guān)閉範(fàn)圍檢查2.處理錯(cuò)誤【例8.3】數(shù)組下標(biāo)越界問(wèn)題討論。下標(biāo)變數(shù)聲明為子界類型下標(biāo)變數(shù)聲明為整數(shù)類型強(qiáng)制進(jìn)行範(fàn)圍檢查正確方法

fori:=low(table)tohigh(table)dowrite(table[i]:5);8.2程式調(diào)試技術(shù)8.2.1執(zhí)行方式與調(diào)試介面8.2.2調(diào)試過(guò)程8.2.1執(zhí)行方式與調(diào)試介面程式的3種執(zhí)行方式正常執(zhí)行,執(zhí)行Run|Run菜單命令單步執(zhí)行StepInto,跟蹤進(jìn)入過(guò)程/函數(shù)內(nèi)部。StepOver,將過(guò)程/函數(shù)調(diào)用作為一條語(yǔ)句,一次執(zhí)行完。分段執(zhí)行RuntoCursor,運(yùn)行至游標(biāo)所在行。設(shè)置中斷點(diǎn)執(zhí)行。RunUntilReturn,執(zhí)行完過(guò)程/函數(shù)體餘下的語(yǔ)句序列,返回到調(diào)用過(guò)程/函數(shù)的語(yǔ)句處。2.調(diào)試介面進(jìn)入調(diào)試狀態(tài)調(diào)試介面組成LocalVariables子窗口WatchList子窗口Run菜單8.2.2調(diào)試過(guò)程選擇需要調(diào)試的程式段設(shè)置/清除中斷點(diǎn)跟蹤運(yùn)行程式逐條語(yǔ)句地執(zhí)行程式分段運(yùn)行查看變數(shù)值的變化情況WatchList窗口中添加變數(shù)在WatchList窗口中操縱變數(shù)【例8.4】使用調(diào)試技術(shù)發(fā)現(xiàn)程式邏輯錯(cuò)誤。根源程式及問(wèn)題使用調(diào)試技術(shù)試圖發(fā)現(xiàn)程式中的邏輯錯(cuò)改正錯(cuò)誤後再次運(yùn)行體會(huì)多種單步運(yùn)行方式的差別在LocalVariables子窗口中查看變數(shù)值的動(dòng)態(tài)變化情況在WatchList子窗口中查看變數(shù)值的變化情況8.3異常處理機(jī)制8.3.1異常處理的概念8.3.2異?;貞?yīng)8.3.3異常保護(hù)8.3.1異常處理的概念面向過(guò)程語(yǔ)言錯(cuò)誤處理方式的缺陷面向?qū)ο笳Z(yǔ)言異常處理的思想Delphi異常處理機(jī)制異常類異常處理語(yǔ)句程式對(duì)錯(cuò)誤與異常的三種處理方式程式不能處理的錯(cuò)誤程式應(yīng)避免而不捕獲的異常必須捕獲的異常8.3.2異?;貞?yīng)異?;貞?yīng)語(yǔ)句try

語(yǔ)句序列; //存在潛在異常excepton識(shí)別字:異常類do語(yǔ)句1; //回應(yīng)特定異常類

on識(shí)別字:異常類do語(yǔ)句2;else

語(yǔ)句序列; //回應(yīng)其他異常類end;【例8.5】除數(shù)為0錯(cuò)的異常處理。【例8.6】類型轉(zhuǎn)換錯(cuò)的異常處理。8.3.3異常保護(hù)異常保護(hù)語(yǔ)句try

語(yǔ)句序列1; //有潛在異常的語(yǔ)句finally

語(yǔ)句序列2;end;需要保護(hù)的資源【例8.7】打開(kāi)檔操作錯(cuò)誤的異常處理。8.4異常類8.4.1Exception類8.4.2運(yùn)行時(shí)異常8.4.3對(duì)象異常類8.4.4組件異常類8.4.1Exception類typeException=class(TObject)privateFMessage:string;FHelpContext:integer;publicconstructorCreate(constMsg:string);

……destructorDestroy;override;propertyHelpContext:integerreadFHelpContextwriteFHelpContext;propertyMessage:stringreadFMessagewriteFMessage;end;8.4.2運(yùn)行時(shí)異常運(yùn)行時(shí)異常類的層次結(jié)構(gòu)8.4.2運(yùn)行時(shí)異常外部錯(cuò)誤異常類EExternal整數(shù)異常類EIntError【例8.8】子界越界、短整型越界的異常處理。實(shí)數(shù)異常類EMathError類型匹配異常類EInvalidCast類型轉(zhuǎn)換異常類EConvertErrorI/O異常類EInOutError堆異常類EHeapExceptionEOutOfMemoryEInvalidPointer8.4.3對(duì)象異常類流異常類EStreamError列印異常類EPrinter圖形異常類EInvalidGraphic和EInvalidGraphicOperation無(wú)效的圖形檔異常EInvalidGraphic圖形非法操作異常EInvalidGraphicOperation字串序列異常EStringListError和EListErrorEStringListError異常EListError異常8.4.4組件異常類通用組件異常類非法操作異常EInvalidOperation組件異常EComponentError資源耗盡異常EOutOfResource專用組件異常類實(shí)驗(yàn)8程式調(diào)試和異常處理設(shè)計(jì)短整數(shù)類型溢出的運(yùn)行錯(cuò),使用Delphi集成調(diào)試環(huán)境檢查和排除程式中的錯(cuò)誤,採(cǎi)用異常處理方式捕獲並處理異常。第1章Delphi2005簡(jiǎn)介第2章ObjectPascal語(yǔ)言基礎(chǔ)第3章Windows應(yīng)用程式介面設(shè)計(jì)第4章菜單、工具欄和對(duì)話框第5章使用複雜組件第6章面向?qū)ο蟮暮诵奶匦缘?章多文檔介面設(shè)計(jì)第8章程式調(diào)試與異常處理第9章檔操作和流第10章多媒體應(yīng)用設(shè)計(jì)第11章資料庫(kù)應(yīng)用設(shè)計(jì)第12章綜合應(yīng)用設(shè)計(jì)第9章檔操作和流9.1檔概述9.2檔存取方法與檔管理組件9.3檔類型與檔操作9.4流9.1檔概述檔與檔系統(tǒng)目錄結(jié)構(gòu)與檔檢索檔的邏輯結(jié)構(gòu)流式檔記錄式檔檔的存取方法順序存取隨機(jī)存取檔的使用操作介面程式介面9.2檔存取方法與檔管理組件9.2.1存取檔的類方法9.2.2檔管理組件9.2.1存取檔的類方法LoadFromFile和SaveToFile方法擁有存取檔方法的類TStringsTGraphic和TPictureTTreeView9.2.2檔管理組件Win3.1選項(xiàng)卡上的檔管理組件驅(qū)動(dòng)器組合框(DriveComboBox)目錄列表框(DirectoryListBox)檔列表框(FileListBox)檔過(guò)濾組合框(FilterComboBox)【例9.1】流覽檔。介面設(shè)計(jì)DriveComboBox.DirList1:=DirectoryListBox1;DirectoryListBox.FileList1:=FileListBox1;DirectoryListBox.DirLabel:=Label2;FilterComboBox.FileList1:=FileListBoxl;FileListBox.FileEdit1:=Edit1;檔過(guò)濾設(shè)置FilterComboBox.Filter:="文本檔|*.txt|所有檔|*.*";打開(kāi)檔操作顯示隱藏檔2.Samples選項(xiàng)卡上的檔管理組件ShellTreeViewShellListViewShellComboBox【例9.2】資源管理器。介面設(shè)計(jì)以4種方式查看檔案名9.3檔類型與檔操作9.3.1檔類型9.3.2類型檔操作9.3.3文本檔操作9.3.4無(wú)類型檔操作9.3.5檔的隨機(jī)操作9.3.6與檔目錄相關(guān)的標(biāo)準(zhǔn)過(guò)程和函數(shù)9.3.1檔類型檔類型概念檔類型分類文本檔類型檔無(wú)類型檔檔與數(shù)組的區(qū)別9.3.2類型檔操作類型檔定義與變數(shù)聲明type類型檔=fileof數(shù)據(jù)類型;例如,varf:fileofinteger;為檔變數(shù)指定相應(yīng)檔procedureAssignFile(varf;filename:string);例如,AssignFile(f,'D:\output.dat');打開(kāi)檔Reset方式procedureReset(varf[:File;RecSize:Word]);Rewrite方式procedureRead(varf,v1{,v2});9.3.2類型檔操作讀入檔procedureRead(varf,v1{,v2});判斷檔是否結(jié)束functionEof(varf):Boolean;向檔寫(xiě)入數(shù)據(jù)procedureWrite(varf,v1{,v2});關(guān)閉檔procedureCloseFile(varf);【例9.3】將九九乘法表中的數(shù)據(jù)值寫(xiě)入整型檔中。9.3.3文本檔操作文本檔變數(shù)說(shuō)明varf:TextFile;檔類型共同的操作聲明檔變數(shù)f。調(diào)用AssignFile過(guò)程為檔變數(shù)f指定相關(guān)檔。調(diào)用Reset或Rewrite過(guò)程打開(kāi)檔f。Reset打開(kāi)檔,當(dāng)未到檔尾,即Eof(f)返回false時(shí),調(diào)用R

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論