Delphi 程序设计课件_第1页
Delphi 程序设计课件_第2页
Delphi 程序设计课件_第3页
Delphi 程序设计课件_第4页
Delphi 程序设计课件_第5页
已阅读5页,还剩289页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

語句1;

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

常量1:語句1;

常量2:語句2;

……[else語句n;]end;【例2.9】計算每月的天數。2.2.5迴圈語句while語句while語句語法while布爾運算式do

語句【例2.10】用while語句求1~10的累加和。while語句迴圈執行次數問題討論2.2.5迴圈語句repeat語句repeat語句語法repeat

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

語句for迴圈變數:=初值downto終值do

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

域1:類型1;

域2:類型2;

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

第3章Windows應用程式介面設計3.1可視化編程基礎3.2窗體Form3.3文本顯示與編輯控件3.4按鈕3.5選項按鈕3.6列表框3.7介面佈局3.8定時器Timer3.1可視化編程基礎3.1.1面向對象基本概念3.1.2定義類和使用對象3.1.3對象的屬性、方法和事件3.1.4事件驅動的Delphi應用程式3.1.5組件概述3.1.1面向對象基本概念類與對象類對象類的封裝性、繼承性和多態性類的封裝性類的繼承性類的多態性3.1.2定義類和使用對象定義類定義子類type

類=class(父類)

數據域聲明;

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

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

,方框中打勾號

表示選擇,

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

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

類=class(父類)

數據域聲明;

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

6.5.3運行時多態性編譯時多態性和運行時多態性編譯時多態性運行時多態性實現運行時多態性靜態方法虛方法與覆蓋方法構造方法的繼承和覆蓋虛析構方法6.6可視化繼承Form窗體繼承窗體繼承概念窗體繼承操作使用Frames框架創建一個Frames將Frames框架添加到窗體上引用Frames中的控件Frames框架繼承【例6.9】可視化繼承及運行時多態性。聲明虛方法和覆蓋方法介面設計實現運行時多態性實驗6面向對象的核心特性更改TPerson類增加TTeacher類設計一個銀行帳戶資訊類製作一個閃現窗口第1章Delphi2005簡介第2章ObjectPascal語言基礎第3章Windows應用程式介面設計第4章菜單、工具欄和對話框第5章使用複雜組件第6章面向對象的核心特性第7章多文檔介面設計第8章程式調試與異常處理第9章檔操作和流第10章多媒體應用設計第11章資料庫應用設計第12章綜合應用設計第7章多文檔介面設計7.1建立MDI應用程式7.2控制應用程式的行為7.1建立MDI應用程式7.1.1SDI與MDI7.1.2創建主窗體與子窗體7.1.3MDI窗體的屬性和方法7.1.4MDI的菜單設計7.1.1SDI與MDI單文檔介面單文檔介面(SDI)的應用程式由一個窗口構成多文檔介面多文檔介面(MDI)的應用程式由一個框架窗口和多個文檔窗口組成。7.1.2創建主窗體與子窗體窗體類型FormStyle屬性表示窗體的類型,取值為fsNormal、fsMDIForm(MDI主窗口)、fsMDIChild(MDI子窗口)、fsStayOnTop(SDI窗口,總在最前)主窗體與子窗體窗體的自動創建方式動態創建子窗口設置子窗體不在啟動時自動建立編程動態創建子窗口7.1.3MDI窗體的屬性和方法MDI窗體的主要屬性WindowMenu屬性ActiveMDIChild屬性MDIChildren和MDIChildCount屬性MDI窗體的主要方法Next()和Previous()方法Cascade()和Tile()方法ArrangeIcons()方法7.1.4MDI的菜單設計合併菜單建立“窗口”菜單建立菜單項並調用方法使用ActionList組件【例7.1】建立MDI應用程式。建立主窗體建立子窗體範本動態建立與釋放子窗口菜單合併在菜單中列出打開的文檔主窗體的“窗口”菜單設計啟動時獲得子窗口狀態主窗體的“檔”菜單7.2控制應用程式的行為7.2.1TApplication類7.2.2TScreen類7.2.1TApplication類TApplication類的屬性Active 指明當前程式是否處於活動狀態且獲得焦點ExeName 返回應用程式的檔案名和路徑Handle 指明應用程式主窗口的句柄Icon 當程式最小化時將顯示該圖示Title 指定應用程式的標題,顯示在任務欄上MainForm 惟一標識應用程式的主窗體2.TApplication類的主要方法procedureInitialize; //初始化應用程式procedureCreateForm(FormClass:TFormClass;varReference); //創建一個窗體procedureRun; 運行應用程式7.2.2TScreen類DesktopHeight 顯示器當前螢幕解析度的高度DesktopWidth 顯示器當前螢幕解析度的寬度Fonts 存儲系統支持的所有字體名ActiveForm只讀 在應用程式中當前活動的窗體ActiveControl只讀 當前活動窗口中獲得焦點的窗口控件Forms 包含著應用程式中顯示的所有窗體,包括對話框FormCount只讀 Forms數組長度CustomForms 包含著應用程式中所有顯示的窗體和屬性選項卡CustomFormCount只讀 CustomForm數組長度【例7.2】獲得應用程式運行時狀態資訊。獲得螢幕解析度以及應用程式的檔案名和路徑獲得應用程式運行時狀態資訊製作閃現窗口實驗7多文檔介面設計設計多文檔表格處理程式,窗口介面及功能類似Excel。實驗要求:建立MDI應用程式,每個子窗口處理一個文檔,每個文檔可由多張表格組成,添加菜單、工具欄、狀態欄、對話框等組件,實現打開、保存檔,修改文字格式等功能。第1章Delphi2005簡介第2章ObjectPascal語言基礎第3章Windows應用程式介面設計第4章菜單、工具欄和對話框第5章使用複雜組件第6章面向對象的核心特性第7章多文檔介面設計第8章程式調試與異常處理第9章檔操作和流第10章多媒體應用設計第11章資料庫應用設計第12章綜合應用設計第8章程式調試與異常處理8.1程式錯誤及處理8.2程式調試技術8.3異常處理機制8.4異常類8.1程式錯誤及處理8.1.1程式錯誤及發現時刻8.1.2發現及處理錯誤8.1.1程式錯誤及發現時刻語法錯違反語法規範的錯誤稱為語法錯,這類錯誤通常在編譯時發現。語義錯在語義上存在錯誤,稱為語義錯。邏輯錯運行結果卻與期望值不符,這類錯誤稱為邏輯錯。8.1.2發現及處理錯誤發現錯誤【例8.1】發現除數為0錯誤。編譯錯vari:integer;i:=2div0;運行錯

vari,j:integer;i:=0;j:=2divi;邏輯錯

varx:real;x:=2/0;【例8.2】發現整數類型數據溢出錯誤。編譯錯varj:shortint;month:1..12;j:=127+1;month:=13;運行錯

vari,j:shortint;i:=127;j:=i+1;編譯時強制進行範圍檢查{$R+} //編譯指令,打開範圍檢查語句序列;{$R-} //編譯指令,關閉範圍檢查2.處理錯誤【例8.3】數組下標越界問題討論。下標變數聲明為子界類型下標變數聲明為整數類型強制進行範圍檢查正確方法

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

語句序列; //存在潛在異常excepton識別字:異常類do語句1; //回應特定異常類

on識別字:異常類do語句2;else

語句序列; //回應其他異常類end;【例8.5】除數為0錯的異常處理。【例8.6】類型轉換錯的異常處理。8.3.3異常保護異常保護語句try

語句序列1; //有潛在異常的語句finally

語句序列2;end;需要保護的資源【例8.7】打開檔操作錯誤的異常處理。8.4異常類8.4.1Exception類8.4.2運行時異常8.4.3對象異常類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運行時異常運行時異常類的層次結構8.4.2運行時異常外部錯誤異常類EExternal整數異常類EIntError【例8.8】子界越界、短整型越界的異常處理。實數異常類EMathError類型匹配異常類EInvalidCast類型轉換異常類EConvertErrorI/O異常類EInOutError堆異常類EHeapExceptionEOutOfMemoryEInvalidPointer8.4.3對象異常類流異常類EStreamError列印異常類EPrinter圖形異常類EInvalidGraphic和EInvalidGraphicOperation無效的圖形檔異常EInvalidGraphic圖形非法操作異常EInvalidGraphicOperation字串序列異常EStringListError和EListErrorEStringListError異常EListError異常8.4.4組件異常類通用組件異常類非法操作異常EInvalidOperation組件異常EComponentError資源耗盡異常EOutOfResource專用組件異常類實驗8程式調試和異常處理設計短整數類型溢出的運行錯,使用Delphi集成調試環境檢查和排除程式中的錯誤,採用異常處理方式捕獲並處理異常。第1章Delphi2005簡介第2章ObjectPascal語言基礎第3章Windows應用程式介面設計第4章菜單、工具欄和對話框第5章使用複雜組件第6章面向對象的核心特性第7章多文檔介面設計第8章程式調試與異常處理第9章檔操作和流第10章多媒體應用設計第11章資料庫應用設計第12章綜合應用設計第9章檔操作和流9.1檔概述9.2檔存取方法與檔管理組件9.3檔類型與檔操作9.4流9.1檔概述檔與檔系統目錄結構與檔檢索檔的邏輯結構流式檔記錄式檔檔的存取方法順序存取隨機存取檔的使用操作介面程式介面9.2檔存取方法與檔管理組件9.2.1存取檔的類方法9.2.2檔管理組件9.2.1存取檔的類方法LoadFromFile和SaveToFile方法擁有存取檔方法的類TStringsTGraphic和TPictureTTreeView9.2.2檔管理組件Win3.1選項卡上的檔管理組件驅動器組合框(DriveComboBox)目錄列表框(DirectoryListBox)檔列表框(FileListBox)檔過濾組合框(FilterComboBox)【例9.1】流覽檔。介面設計DriveComboBox.DirList1:=DirectoryListBox1;DirectoryListBox.FileList1:=FileListBox1;DirectoryListBox.DirLabel:=Label2;FilterComboBox.FileList1:=FileListBoxl;FileListBox.FileEdit1:=Edit1;檔過濾設置FilterComboBox.Filter:="文本檔|*.txt|所有檔|*.*";打開檔操作顯示隱藏檔2.Samples選項卡上的檔管理組件ShellTreeViewShellListViewShellComboBox【例9.2】資源管理器。介面設計以4種方式查看檔案名9.3檔類型與檔操作9.3.1檔類型9.3.2類型檔操作9.3.3文本檔操作9.3.4無類型檔操作9.3.5檔的隨機操作9.3.6與檔目錄相關的標準過程和函數9.3.1檔類型檔類型概念檔類型分類文本檔類型檔無類型檔檔與數組的區別9.3.2類型檔操作類型檔定義與變數聲明type類型檔=fileof數據類型;例如,varf:fileofinteger;為檔變數指定相應檔procedureAssignFile(varf;filename:string);例如,AssignFile(f,'D:\output.dat');打開檔Reset方式procedureReset(varf[:File;RecSize:Word]);Rewrite方式procedureRead(varf,v1{,v2});9.3.2類型檔操作讀入檔procedureRead(varf,v1{,v2});判斷檔是否結束functionEof(varf):Boolean;向檔寫入數據procedureWrite(varf,v1{,v2});關閉檔procedureCloseFile(varf);【例9.3】將九九乘法表中的數據值寫入整型檔中。9.3.3文本檔操作文本檔變數說明varf:TextFile;檔類型共同的操作聲明檔變數f。調用AssignFile過程為檔變數f指定相關檔。調用Reset或Rewrite過程打開檔f。Reset打開檔,當未到檔尾,即Eof(f)返回false時,調用R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论