快速開發(fā)技能工具―Delphi教學(xué)課件電子教案全套課件_第1頁
快速開發(fā)技能工具―Delphi教學(xué)課件電子教案全套課件_第2頁
快速開發(fā)技能工具―Delphi教學(xué)課件電子教案全套課件_第3頁
快速開發(fā)技能工具―Delphi教學(xué)課件電子教案全套課件_第4頁
快速開發(fā)技能工具―Delphi教學(xué)課件電子教案全套課件_第5頁
已閱讀5頁,還剩361頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章

Delphi7.0集成開發(fā)環(huán)境第二章

面向?qū)ο蠡A(chǔ)知識(shí)和Windows程序開發(fā)初步第三章

Object

Pascal語言基礎(chǔ)第四章

常用控件的使用第五章

程序的調(diào)試和異常處理第六章

數(shù)據(jù)庫程序開發(fā)第七章

項(xiàng)目實(shí)例1-系部圖書管理系統(tǒng)第八章

項(xiàng)目實(shí)例2-小區(qū)物業(yè)管理系統(tǒng)第九章

項(xiàng)目實(shí)例3-Delphi控制Excel第十章

項(xiàng)目實(shí)例4-DVD租賃管理系統(tǒng)第一章

Delphi7.0集成開發(fā)環(huán)境Delphi

7.0概述Delphi

7.0的安裝與啟動(dòng)Delphi

7.0的集成開發(fā)環(huán)境Delphi

7.0概述強(qiáng)大的可視化編程環(huán)境高效的編輯器網(wǎng)絡(luò)通訊方面數(shù)據(jù)庫方面豐富的VCL控件庫Model

Maker工具Rave報(bào)表設(shè)計(jì)器Delphi編譯Delphi的安裝與啟動(dòng)軟硬件環(huán)境要求Delphi

7的安裝Delphi

7的啟動(dòng)1.2.1軟硬件環(huán)境要求硬件要求:CPU在Intel

Pentium

233以上內(nèi)存在32M以上(建議使用128M以上的內(nèi)存)100MB以上的硬盤空間軟件要求:要求安裝Windows

98或更高版本的操作系統(tǒng)1.2.2

Delphi

7的安裝過程啟動(dòng)Windows

2000,在CD—ROM驅(qū)動(dòng)器中放入Delphi

7企業(yè)版光盤,使其自行運(yùn)行安裝程序安裝初始界面安裝類型:典型安裝(Typical):

安裝用戶最常用的部分。壓縮安裝(compact):

僅僅把運(yùn)行Delphi7所必須的文件安裝到用戶的硬盤上。自定義安裝(Custom):安裝程序以對話框的形式要求程序設(shè)計(jì)人員按自己的需要選擇安裝Delphi

7的構(gòu)成部分。安裝類型選擇1.2.3

Delphi

7的啟動(dòng)菜單欄工具欄對象樹形查看器對象編輯器代碼編輯器窗體設(shè)計(jì)器控件頁運(yùn)行界面單擊Delphi

7的桌面圖標(biāo)或單擊【開始】|【程序】|【Borland

Delphi

7】|【Delphi

7】命令運(yùn)行Delphi

7應(yīng)用程序,進(jìn)入集成開發(fā)環(huán)境。1.3

Delphi

7的集成開發(fā)環(huán)境菜單欄File(文件):新建、打開和保存單元文件和工程;Edit(編輯):編輯代碼和各種控件;Search(搜索):代碼編輯器中代碼的查找、替換和定位;View(視圖):打開環(huán)境窗口、單元文件、窗體文件;Project(工程):管理工程文件、編譯工程文件和工程設(shè)置;Run(運(yùn)行):程序調(diào)試;Component(組件):建立、安裝組件和設(shè)置控件頁屬性;Database(數(shù)據(jù)庫):提供數(shù)據(jù)庫應(yīng)用程序的各種工具;Tools(工具):進(jìn)行Delphi編程環(huán)境設(shè)置、圖標(biāo)編輯、報(bào)表制作等;Window(窗口):提供不同窗口的切換;Help(幫助):提供Delphi的幫助信息。工具欄打開保存打開項(xiàng)目全部保存幫助從項(xiàng)目移走添加到項(xiàng)目查看單元文件查看窗體

新窗體單元文件/窗體切換單步運(yùn)行暫停運(yùn)行跟蹤運(yùn)行新建控件頁控件分類選項(xiàng)卡上一類控件一個(gè)具體控件:

Button按鈕控件下一類控件對象編輯器主要功能:修改窗體及其包含的對象屬性;通過自動(dòng)代碼生成機(jī)制使對象響應(yīng)相應(yīng)的事件。對象列表框:對象列表是一個(gè)下拉列表框,包含了當(dāng)前窗體上的所有控件。屬性選項(xiàng)卡(Properties):或稱屬性頁,列舉了當(dāng)前所選中的控件對象的屬性。它有兩個(gè)部分組成,左側(cè)是控件對象的屬性名,右側(cè)為相應(yīng)屬性的取值。事件選項(xiàng)卡(Events):或稱事件頁,設(shè)置控件的事件處理程序。顯示出控件對象可以響應(yīng)的所有事件列表,它有兩個(gè)部分組成:事件名和事件處理方法。代碼編輯器主要用于編輯程序文件、單元文件和文本文件。支持代碼和對象的剪切、復(fù)制和粘貼操作。編寫程序時(shí),注意窗口的標(biāo)題欄所顯示的被編輯的文件名稱。開發(fā)環(huán)境設(shè)置設(shè)置工具欄查找控件和控件頁設(shè)置工程管理可以打開工程管理器(Project

Manager)Delphi

7的工程管理器通過工程組進(jìn)行管理,列出了反映各工程之間的聯(lián)系的樹狀表,使用戶可以很直觀的找到各工程直接的聯(lián)系,方便地將相互聯(lián)系的工程中共同使用的動(dòng)態(tài)鏈接庫文件與可執(zhí)行文件組織在一起。第二章

面向?qū)ο蠡A(chǔ)知識(shí)和Windows程序開發(fā)初步面向?qū)ο蠡A(chǔ)知識(shí)一個(gè)簡單的Delphi程序2.1

面向?qū)ο蠡A(chǔ)知識(shí)面向過程思想(結(jié)構(gòu)化程序設(shè)計(jì))面向?qū)ο髮ο蠛皖惖母拍顚ο蟮膶傩詫ο蟮姆椒▽ο蟮氖录?對象和類的概念對象:包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體。類:可以理解為一種類型,是具有相同操作功能和相同數(shù)據(jù)格式的對象的結(jié)合,它是同種對象的高度抽象,包含了所創(chuàng)建對象的屬性描述和行為特征的定義。類是對象的定義,而對象是類的一個(gè)實(shí)例?面向?qū)ο蟮奶匦苑庋b性:當(dāng)用戶聲明了一個(gè)類并在應(yīng)用程序中創(chuàng)建了該類的具體對象后,用戶只要使用對象的屬性和方法進(jìn)行相應(yīng)的操作,而不必去關(guān)心其內(nèi)部是如何實(shí)現(xiàn)的。繼承性:類與類之間的繼承關(guān)系。一個(gè)基本的抽象類,是所有下屬類的祖先;而位于底部的類繼承了其所有上位類屬性、方法,但其又有自身特殊的屬性、方法。VCL中類的層次關(guān)系圖VCL是Delphi中預(yù)定義的類,使用其中的對象,基本可滿足一般程序的編程需求。?控件頁以選項(xiàng)卡的形式分類集中了VCL組件,利用這些組件,用戶可以方便地構(gòu)造自己所需要的界面。對象的三要素:屬性、方法和事件對象的屬性屬性是對象的性質(zhì),它說明了對象在運(yùn)行時(shí)如何顯示以及它的功能如何,是用來描述和反映對象特征的參數(shù)。屬性分為三類設(shè)計(jì)期屬性:用戶在進(jìn)行界面設(shè)計(jì)設(shè)計(jì)時(shí)能顯示和發(fā)揮作用的屬性。運(yùn)行期屬性的值只有在程序運(yùn)行過程中設(shè)定只讀屬性只可查看,不可更改。?設(shè)置對象屬性的方法在設(shè)計(jì)階段利用對象編輯器——屬性選項(xiàng)卡直接設(shè)定對象的屬性;在程序代碼中通過賦值實(shí)現(xiàn),其格式為:對象.屬性:=屬性值;對象的方法面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,為程序設(shè)計(jì)人員提供了一種特殊的已經(jīng)封裝好的過程和函數(shù),稱為方法,供用戶直接調(diào)用。對象方法調(diào)用的格式為:對象.方法[參數(shù)表];對象的事件對象的事件是指控件在受到激勵(lì)后執(zhí)行的動(dòng)作。這種激勵(lì)可以是外部的,也可以是系統(tǒng)內(nèi)部的。Delphi系統(tǒng)為每個(gè)對象預(yù)先定義好了一系列的事件。在對象編輯器-事件選項(xiàng)卡上可以看到一個(gè)對象控件的事件列表。文本框的內(nèi)容發(fā)生改變時(shí)觸發(fā)了onchange事件鼠標(biāo)單擊文本框時(shí)觸發(fā)了

onclick事件文本框在獲取焦點(diǎn)狀態(tài)下,用戶按下并且釋放一個(gè)會(huì)產(chǎn)生ASCII碼的鍵時(shí)觸發(fā)了

onkeypress事件鼠標(biāo)在文本框上按下、鼠標(biāo)移動(dòng)到文本框上和鼠標(biāo)在文本框上按下后抬起時(shí),分別觸發(fā)了onmousedown、onmousemove和onmouseup事件2.2

一個(gè)簡單的Delphi程序窗體的概念(TForm)可以作為容器來包容其他種類的控件并協(xié)同完成程序的整體功能。1.窗體的重要屬性、方法和事件(1)窗體的重要屬性Name屬性:字符串類型。窗體的Name屬性默認(rèn)值為

“Form1”控件是Delphi構(gòu)成應(yīng)用程序的基本單元。控件的Name屬性值指明了控件對象的引用名稱,Delphi中所有的控件都有Name屬性,且Name值不重復(fù)。Name屬性在應(yīng)用程序設(shè)計(jì)期被設(shè)置,在程序運(yùn)行期不能更改。Caption屬性:字符串類型。Delphi中許多控件具有可視化的用戶界面,如窗體(Form)、按鈕(Button)、對話框(Dialog)、標(biāo)簽(Label)等。這些可視化控件的窗口界面需要用字符串來表明其功能,Caption屬性反映了這種需求。窗體的Caption屬性確定了窗口的標(biāo)題。Height、Width、Left和Top屬性:Height和Width指明了控件的高度和寬度;Left和Top指明了控件在其父容器中的位置。Color屬性:用來確定窗體的背景顏色。Font屬性:用來確定窗體內(nèi)控件的字體屬性。Cursor屬性:用來確定窗體中光標(biāo)的樣式,默認(rèn)值為“crDefault”。Enabled屬性:布爾型。Enabled屬性用于設(shè)定控件(包括窗體)在程序運(yùn)行期是否處于有效狀態(tài)。Enabled

屬性是控件中常用的屬性,在應(yīng)用程序中為防止用戶的誤

操作或是在特定情況下屏蔽某些功能,常常會(huì)使用該屬性。默認(rèn)值為“True”。BorderStyle屬性:窗體的BorderStyle屬性用于確定運(yùn)行期窗口邊界的類型,BorderIcons屬性:用于確定窗體標(biāo)題欄上是否顯示系統(tǒng)菜單、最小化按鈕、最大化按鈕和幫助按鈕。Position屬性:設(shè)計(jì)期階段,用戶可以通過Left和Top屬性來設(shè)置窗體在顯示器屏幕上的位置。Visible屬性:布爾型。用于確定程序運(yùn)行時(shí)窗體是否可見在Delphi中,運(yùn)行期可視控件都具有Visible屬性。WindowState屬性:用于確定程序運(yùn)行時(shí)窗口顯示的狀態(tài)。其取值有:wsMinimized、wsMaximized和wsNormal,分別表示程序運(yùn)行時(shí)窗口處于最小化、最大化和正常狀態(tài)。默認(rèn)值為wsNormal。(2)窗體的方法Close方法:用于關(guān)閉窗體對象。當(dāng)應(yīng)用程序的主窗體調(diào)用Close方法關(guān)閉后,整個(gè)應(yīng)用程序結(jié)束。Hide方法:用于隱藏窗體,相當(dāng)于程序運(yùn)行期將窗體的Visible屬性置為False。Show方法:用于顯示窗體窗口,相當(dāng)于程序運(yùn)行期將窗體的Visible屬性置為True,并將該窗體置于屏幕上所有窗體的之前,該窗體稱為當(dāng)前活動(dòng)窗體。SetFocus方法:調(diào)用SetFocus方法可將鍵盤輸入焦點(diǎn)定位到窗體上。ShowModal方法:用于以對話框模式顯示窗體窗口,

打開的窗口稱為模態(tài)窗口。Windows的窗體有模態(tài)和非

模態(tài)的區(qū)別。所謂模態(tài)窗口就是指如果程序中具有多個(gè)窗體,當(dāng)其中一個(gè)窗體處于活動(dòng)狀態(tài)時(shí),其他的窗體都處于不可用狀態(tài),那么這個(gè)窗體就稱為模態(tài)窗體。例如:打開文件對話框、保存文件對話框、關(guān)于對話框等等。當(dāng)調(diào)用Show方法時(shí),如:Form1.Show;則顯示的Form1窗體為非模態(tài)窗體;要以模態(tài)方式顯示窗體,則做如下調(diào)用:Form1.ShowModal;?(3)窗體的事件窗體是一個(gè)可視化的對象控件,它幾乎可以響應(yīng)和處理所有的事件――外部事件和內(nèi)部事件。2.在窗體上放置和刪除控件添加控件的方法在控件頁上選擇相應(yīng)的控件標(biāo)簽,鼠標(biāo)左鍵單擊某個(gè)控

件,使該控件標(biāo)簽處于凹陷狀態(tài)。然后在窗體上單擊鼠標(biāo)左鍵,則控件被添加到窗體上。這時(shí)添加的控件大小是固定的,且控

件的Left和Top值為鼠標(biāo)點(diǎn)擊處。選擇控件頁,鼠標(biāo)左鍵單擊控件,然后在窗體中某個(gè)位置按下鼠標(biāo)左鍵并拖動(dòng),窗體上會(huì)產(chǎn)生一個(gè)虛框,表示即將放置在窗體上的控件的位置和大小,釋放鼠標(biāo)左鍵,控件便以指定的大小和位置出現(xiàn)在窗體上。在控件標(biāo)簽上雙擊某個(gè)控件,則該控件自動(dòng)添加到當(dāng)前默認(rèn)的窗口或容器控件中??丶С旨糍N板操作,可以用復(fù)制粘貼方式放置一個(gè)新控件。首先選中窗體上已有的源控件并復(fù)制(快捷鍵為Ctrl+C),執(zhí)行粘貼操作(快捷鍵為Ctrl+V),新的控件將被添加到窗體

上,且它的大小和字體等屬性與源控件相同。如想連續(xù)添加多個(gè)相同的控件,則按下Shift鍵并單擊控件,該控件標(biāo)簽凹陷且周圍有淺藍(lán)色邊框,然后在窗體上不同位置連續(xù)單擊鼠標(biāo)左鍵,每次單擊都將添加一個(gè)相同的控件。如要停止添加,單擊每個(gè)控件頁標(biāo)簽最左端的箭頭即可。刪除窗體上的控件,應(yīng)遵循先選中后刪除的原則單擊窗體上欲刪除的某個(gè)控件,此時(shí)控件周圍出現(xiàn)八個(gè)黑色方塊句柄,按Delete鍵刪除。按下Shift鍵,同時(shí)用鼠標(biāo)單擊窗體上的多個(gè)控件,使這些控件同時(shí)被選中,按Delete鍵刪除。在窗體空白處按下鼠標(biāo)左鍵并拖動(dòng),將欲刪除的控件包含在出現(xiàn)的虛框中,釋放鼠標(biāo),此時(shí)控件被選中,按Delete鍵刪除。如刪除的是容器控件,如GroupBox、RadioGroup、Panel等,則包含在該容器中的所有子控件被同時(shí)刪除。3.改變控件的大小和位置控件在窗體上的大小和位置可以通過設(shè)置控件的Height、

Width、Left和Top屬性值來完成,除此以外,也可以使用鼠標(biāo)或鍵盤操作來改變控件在窗體上的位置和大小。使用鼠標(biāo)操作時(shí),先選中控件,控件四周出現(xiàn)八個(gè)句柄。按下鼠標(biāo)左鍵拖動(dòng),可改變控件的位置,如將鼠標(biāo)移動(dòng)到句柄上,按下鼠標(biāo)拖動(dòng),則可以改變控件的大小;使用鍵盤操作時(shí),先選中控件,按下“Ctrl鍵+方向鍵”可改變控件的位置,按下“Shift鍵+方向鍵”可改變控件的大小。4.對齊控件窗體上包含多個(gè)控件時(shí),往往需要調(diào)整控件之間的相對位置,使得控件在窗體上的排列有一定的規(guī)律,可以通過使用Align工具欄或Alignment對話框來調(diào)整。(1)使用Align工具欄調(diào)整使用以上所述的方法在窗體內(nèi)選擇多個(gè)控件,執(zhí)行View-Alignment

Palette(2)使用Alignment對話框調(diào)整控件位置先選中需調(diào)整位置的多個(gè)控件,執(zhí)行Edit-Align命令,或在窗體上右擊執(zhí)行彈出菜單中的Position-Align命令,打開Alignment對話框,根據(jù)界面設(shè)計(jì)需要分別在對話框的Horizontal和Vertica選項(xiàng)內(nèi)選擇合適的單選按鈕,并單擊OK按鈕確定,調(diào)整窗體內(nèi)被選擇控件的相對位置。5.調(diào)整控件在窗體上的疊放次序在窗體上先后放置兩個(gè)Button按鈕控件(Button按鈕位于控件頁的Standard標(biāo)簽上),分別為Button1和Button2,使得兩個(gè)按鈕的位置如圖所示;選中Button2按鈕;(3)右擊,執(zhí)行彈出菜單中的Control-Send

to

Back命令,這時(shí)Button2按鈕被置于Button1按鈕后,如圖所示。6.調(diào)整控件在窗體上的TAB次序程序運(yùn)行時(shí),不斷按下鍵盤上的Tab鍵,鍵盤焦點(diǎn)可在這些控件上停留、按序跳轉(zhuǎn),獲得焦點(diǎn)的控件周圍有虛線邊框表示。決定鍵盤焦點(diǎn)是否在控件上停留,以及焦點(diǎn)跳轉(zhuǎn)的順序是由該控件的TabStop和TabOrder屬性決定。TabStop屬性決定了鍵盤焦點(diǎn)是否在控件上停留,其值為布爾型。當(dāng)取值為False,按Tab鍵時(shí),該控件不會(huì)獲得焦點(diǎn)。

TabOrder屬性決定了鍵盤焦點(diǎn)在控件上跳轉(zhuǎn)的先后次序,其值為整型。默認(rèn)情況下,TabOrder屬性值與控件在窗體上添加的先后次序有關(guān),第一個(gè)添加的控件,取值為“0”,表示程序運(yùn)行時(shí)該控件優(yōu)先獲得焦點(diǎn),以后添加的控件,

TabOrder值順延。調(diào)整控件在窗體上的Tab次序的方法通過設(shè)定TabStop和TabOrder兩個(gè)屬性值來實(shí)現(xiàn):設(shè)計(jì)期在屬性查看器中改變TabOrder值后,其他控件的TabOrder值將自動(dòng)作響應(yīng)的調(diào)整。如將屬性值從“0”改為“1”,則原先TabOrder屬性值為“1”的控件自動(dòng)變更為“0”,其他控件不變;如將屬性值為“2”的控件改為“0”,則原來值為“0”的控件,其

TabOrder屬性值自動(dòng)更改為“1”,原為“1”的控件它的TabOrder屬性值自動(dòng)變?yōu)椤?”,其他控件不變。一種更為直觀的調(diào)整Tab次序的方法:在窗體上右擊,執(zhí)行彈出菜單中的TabOrder命令,打開EditTabOrder對話框,如圖2.13所示。以圖2.12的程序?yàn)槔?,對話框中的列表顯示了可獲得鍵盤焦點(diǎn)的所有控件,它們在列表中的上下位置反映了按TAB鍵后焦點(diǎn)跳轉(zhuǎn)的先后次序,位于列表頂端的Button1按鈕(即‘確定’按鈕)優(yōu)先獲得焦點(diǎn),它的TabOrder屬性值為“0”。在對話框右側(cè)有兩個(gè)指示向上和向下的按鈕,在列表中選中需要調(diào)整Tab次序的控件后,按向上或向下按鈕即可直觀地調(diào)整次序,TabOrder屬性值將自動(dòng)改變。調(diào)整后調(diào)整前7.鎖定控件在應(yīng)用程序的界面設(shè)計(jì)完成后,為避免誤操作而改變控件在窗體上的相對位置,可以執(zhí)行Edit-LockControls命令來鎖定窗體內(nèi)各個(gè)控件對象的相對位置。如果希望修改控件的位置,再次執(zhí)行以上命令以解除鎖定。8.改變網(wǎng)格大小為了精確地調(diào)整窗體上控件的相對位置,Delphi提供了精細(xì)的網(wǎng)格(設(shè)計(jì)期窗體上有細(xì)小的淺灰色網(wǎng)格點(diǎn)),網(wǎng)格的大小確定了鼠標(biāo)拖動(dòng)控件時(shí)每次移動(dòng)的距離。默認(rèn)情況下,網(wǎng)格大小設(shè)置為8×8個(gè)像素。在設(shè)計(jì)期,用戶可以重新設(shè)置網(wǎng)格的大?。簣?zhí)行Tools-Environment

Options命令,打開Environment

Options對話框并切換到Designer標(biāo)簽卡;在Grid

options選項(xiàng)中,改變Grid

size的X和Y值,取值范圍為[2,128]。第一個(gè)例子第一個(gè)例子所要達(dá)到的功能是:程序運(yùn)行時(shí)(初始狀態(tài)),窗體界面有兩個(gè)button按鈕,按鈕上分別顯示“顯示”和“退出”。單擊“顯示”按鈕,在窗體上出現(xiàn)“聰明的程序員用Delphi”字樣,同時(shí)“顯示”按鈕上的字變成“隱藏”;再次單擊“隱藏”按鈕,窗體上的文字被隱藏,“隱藏”按鈕上的字變?yōu)椤帮@示”,即回到程序初始運(yùn)行狀態(tài);單擊“退出”按鈕則結(jié)束應(yīng)用程序。應(yīng)用程序(Application)建立的過程如下:新建一個(gè)應(yīng)用程序在窗體上添加控件編寫事件代碼編譯運(yùn)行程序保存文件一個(gè)Delphi工程項(xiàng)目中主要的文件及其說明:文件擴(kuò)展名文件類型說

明DPR工程文件PAS單元文件文本文件。工程主程序文件,列出工程中所有的窗體、單元和包含應(yīng)用程序的起始程序文本文件。程序單元源文件,包含單元所有說明和程序,包括事件處理DFM窗體文件RES資源文件二進(jìn)制文件。包含窗體和窗體內(nèi)控件對象的特性描述,工程中每一個(gè)窗體文件對應(yīng)一個(gè)Pas的單元文件二進(jìn)制文件。保存著工程項(xiàng)目需要使用的位圖、圖標(biāo)等資源~DPR工程文件備份~PAS單元文件備份工程修改后第二次存儲(chǔ)時(shí)產(chǎn)生,隨存儲(chǔ)動(dòng)作而更新。保存了DPR文件最近一次存儲(chǔ)前的一個(gè)副本保存了PAS單元文件最近存儲(chǔ)前的一個(gè)副本~DFM窗體文件備份在第二次保存時(shí)自動(dòng)生成,隨以后的保存操作而更新EXE可執(zhí)行文件二進(jìn)制文件。編譯工程文件后生成的可執(zhí)行文件DCU單元目標(biāo)文件二進(jìn)制文件。單元文件經(jīng)過編譯后生成正確的改名方法在Windows資源管理器中雙擊dpr工程文件,或是先啟動(dòng)Delphi集成環(huán)境,再執(zhí)行File菜單下的Open或OpenProject或Reopen命令,重新打開項(xiàng)目;執(zhí)行File-Save

As命令,另存單元文件;執(zhí)行File-Save

Project

As,另存項(xiàng)目文件;回到Windows資源管理器,刪除原來的工程文件、單元文件以及系統(tǒng)自動(dòng)產(chǎn)生的同名文件。編程規(guī)范1.命名規(guī)范:包括文件命名、常量、變量、函數(shù)、過程以及控件對象命名等。(1)文件命名在Delphi中對一個(gè)工程保存時(shí),主要是存儲(chǔ)工程文件(DPR)和單元文件(PAS),起名時(shí)應(yīng)該用能直接揣摩出文件意義的名稱。文件名“FirstUnit”、“FirstProject”以及“AboutFrm”采用了英文詞組(或單詞縮略,F(xiàn)rm即為窗體Form的簡略)命名。在采用詞組方式時(shí),單詞間不要插入空格,且每個(gè)單詞的首字母大寫,這種方式稱為“駝峰格式”。變量、常量、函數(shù)、過程命名變量、常量、函數(shù)和過程的命名同樣也遵循“駝峰格式”,并且名稱有一定的意義。控件對象的命名任何一個(gè)控件在同一個(gè)應(yīng)用程序中都有一個(gè)唯一的名稱,用于區(qū)分不同的控件,控件對象的命名實(shí)際上是對控件的Name屬性賦值。控件對象的命名原則是:命名后能從名稱上大致理解控件的類型和作用。一個(gè)控件對象Name屬性:它必須是在同一個(gè)應(yīng)用程序中唯一的(不同窗體間控件的名稱可以重復(fù),但調(diào)用時(shí)要加上窗體名,在此視為控件對象的名稱不同)。2.注釋為了閱讀程序的方便,可以在程序適當(dāng)?shù)牡胤郊由险f明性語句,稱為注釋。注釋不是程序有效的程序代碼,程序編譯時(shí)會(huì)自動(dòng)跳過注釋部分,添加注釋的目的在于提高程序的可讀性。注釋部分在Delphi程序代碼中以藍(lán)色斜體表示,方式有兩種,分別稱為塊注釋和單行注釋。3.縮進(jìn)程序中應(yīng)當(dāng)清晰地顯示級(jí)別不同的代碼。通常的做法是每一級(jí)都縮進(jìn)兩格(建議不要使用制表符Tab,因?yàn)門ab制表符會(huì)因每個(gè)用戶設(shè)置的不同而其間隔距離不同)。即,第一級(jí)縮進(jìn)2格,第二級(jí)縮進(jìn)4格……,以此類推。第三章Object

Pascal語言基礎(chǔ)控制臺(tái)應(yīng)用程序標(biāo)識(shí)符保留字?jǐn)?shù)據(jù)類型有序數(shù)據(jù)類型枚舉類型子界類型數(shù)組類型指針類型變體類型常量和變量運(yùn)算符與表達(dá)式Object

Pascal語句結(jié)構(gòu)

3.14過程與函數(shù)3.1控制臺(tái)應(yīng)用程序用Delphi

7創(chuàng)建控制臺(tái)應(yīng)用程序。用控制臺(tái)應(yīng)用程序進(jìn)行簡單的程序計(jì)算。3.2標(biāo)識(shí)符ObjectPascal語言的標(biāo)識(shí)符是由ASCII字符集組成的,用來標(biāo)識(shí)常量、變量、屬性、對象、類型、過程、函數(shù)、單元等等。標(biāo)識(shí)符的命名規(guī)則如下:標(biāo)識(shí)符是由字母(A-Z,a-z)、數(shù)字(0-9)或下劃線組成。標(biāo)識(shí)符的第一個(gè)字符必須是字母(A-Z,a-z)或下劃線,不可以是數(shù)字。標(biāo)識(shí)符長度不應(yīng)超過255個(gè)字符,如果超過255個(gè)字符,則只有前255個(gè)字符有效。不能用Object

Pascal的保留字做為標(biāo)識(shí)符。3.3保留字Delphi中有65個(gè)保留字,保留字是ObjectPascal語言預(yù)定義的具有特殊意義和用途的字符串,不能用保留字作為標(biāo)識(shí)符的名稱。Delphi7有39個(gè)指令字,這些指令字也具有特定的意義。這些指令字都可以重新被定義,當(dāng)指令字被重新定義后,在其定義的作用域內(nèi),這些指令字就失去了原有的意義.3.4數(shù)據(jù)類型數(shù)據(jù)類型可以分為基本數(shù)據(jù)類型,復(fù)雜數(shù)據(jù)類型,指針類型,變體類型等。分類如下圖所示:實(shí)型實(shí)型是用來存儲(chǔ)實(shí)數(shù)數(shù)據(jù)的類型。它包括7種數(shù)據(jù)類型。注意Real類型和Currency類型區(qū)別:Real為通用型。Currency類型是專門為處理貨幣值而設(shè)定的,它的精度較高,適合于貨幣數(shù)值的計(jì)算,它只有4位有效的小數(shù)位數(shù)。時(shí)間日期型?時(shí)間日期類型實(shí)質(zhì)是實(shí)型的一種映射。它的整數(shù)部分表示從1899年12月30日以來所經(jīng)過的天數(shù),小數(shù)部分表示經(jīng)過的時(shí)間與24小時(shí)之比。如:0表示的時(shí)間是1899-12-30

00:00:0038196.32表示的時(shí)間是2004-7-28

7:40:48字符串型字符串是用來存儲(chǔ)字符串的數(shù)據(jù)類型。它有短字符串型、長字符串型、寬字符串型、字符串型4種數(shù)據(jù)類型。通用類型是String型,AnsiString數(shù)據(jù)類型的定義是動(dòng)態(tài)分配的,長度幾乎可以無限。整型整型是存儲(chǔ)整數(shù)數(shù)據(jù)的類型。整數(shù)類型分為:通用整數(shù)類型和基本整數(shù)類型。·字符型字符類型只能存儲(chǔ)一個(gè)字符。字符類型可分為:通用字符類型和基本字符類型。一般情況下常使用char字符類型。·布爾型布爾型可用于邏輯的運(yùn)算。Boolean類型的取值范圍是{False

,

True}。3.5有序數(shù)據(jù)類型有序數(shù)據(jù)類型不是一種單獨(dú)的數(shù)據(jù)類型。在ObjectPascal語言中,整型、字符型、布爾型、枚舉型、子界型都是屬于有序數(shù)據(jù)類型。任何一個(gè)有序類型的數(shù)據(jù)都有一個(gè)唯一的數(shù)值和它對應(yīng)。ObjectPascal語言中有多個(gè)函數(shù)可以進(jìn)行有序數(shù)據(jù)類型的計(jì)算。在Object

Pascal有Ord(x)、Pred(x)、Succ(x)、High(x)、Low(x)、Inc(x)、Dec(x)等函數(shù)。Ord(x)函數(shù):返回的值是有序數(shù)據(jù)類型表達(dá)式的序號(hào),但它不能處理Int64這類的數(shù)據(jù)。Pred(x)函數(shù):返回的值是表達(dá)式的前驅(qū)值。第一個(gè)值無前驅(qū)值。Succ(x)函數(shù):返回的值是表達(dá)式的后繼值。最后一個(gè)值無后繼值。High(x)函數(shù):返回的值是表達(dá)式所在類型中的最大值。Low(x)函數(shù):返回的值是表達(dá)式所在類型中的最小值。Inc(x)函數(shù):相當(dāng)與Succ(i)。Dec(x)函數(shù):相當(dāng)與Pred(i)。3.6枚舉類型·枚舉類型的定義語法格式如下:Type{類型名稱=(枚舉值1,枚舉值2,…,枚舉值n)}·枚舉類型的運(yùn)算枚舉類型的值實(shí)際就是枚舉常量,對枚舉類型的運(yùn)算實(shí)際是對枚舉常量的運(yùn)算.所有的有序函數(shù),都適用于枚舉類型,但是第一個(gè)枚舉常量沒有前驅(qū)值,最后一個(gè)枚舉常量沒有后繼值。3.7子界類型?子界類型是由整型、字符型、枚舉型、布爾型中某兩個(gè)常量指定的該類型的值區(qū)域.?子界類型的定義語法格式如下:Type{類型名稱=(常量1)..(常量2)};√“類型名稱”即用戶自定義的子界類型名稱,常量1表示子界類型的下界,常量2表示子界類型的上界。注意:常量1和常量2必須屬于相同的有序類型,3.8數(shù)組類型·靜態(tài)數(shù)組一維數(shù)組類型的定語語法格式如下:Type{類型名稱=array[下標(biāo)1..下標(biāo)2]of基類型};多維靜態(tài)數(shù)組的定義語法格式如下:Type{數(shù)組類型名稱=Array[下標(biāo)11..下標(biāo)12]ofArray[下標(biāo)21..下標(biāo)22]…of

Array[下標(biāo)n1..下標(biāo)n2]of基類型};·動(dòng)態(tài)數(shù)組?動(dòng)態(tài)數(shù)組在使用前并沒有說明數(shù)組的大小,只是在程序運(yùn)行當(dāng)中,根據(jù)需要為數(shù)組開辟相應(yīng)的內(nèi)存空間進(jìn)行存儲(chǔ)。?一維動(dòng)態(tài)數(shù)組的定義語法格式如下:Type{類型名稱=array

of基類型};?二維及多維動(dòng)態(tài)數(shù)組的定義語法格式如下:Type{數(shù)組類型名稱=array

of

array

of…array

of基類型};?動(dòng)態(tài)數(shù)組被定義后,數(shù)組的大小具有不確定性,在程序的運(yùn)行當(dāng)時(shí)可以用SetLength函數(shù)來重新分配數(shù)據(jù)占據(jù)空間的大小?!?shù)組元素的訪問?數(shù)組類型的變量被定義后,便可以通過數(shù)組元素進(jìn)行訪問。?訪問數(shù)組元素的語法格式如下:變量名[一維下標(biāo)[,…n維下標(biāo)]];√對數(shù)組元素的訪問是通過變量名,其后加上方括號(hào)和下標(biāo)來表示。3.9指針類型?指針可以用來表示數(shù)據(jù)在內(nèi)存當(dāng)中的位置。?有類型指針可以用如下的語法格式進(jìn)行指針的聲明:Type{類型名稱=^基類型};√指針類型名稱只是一種數(shù)據(jù)類型,若需要使用此數(shù)據(jù)類型還必須定義此類型的變量;指針類是由基類型前加上一個(gè)“^”符號(hào)來表示。3.10變體類型?變體類型就是在運(yùn)行期可以改變其數(shù)據(jù)類型。?變體類型在聲明后初始化一個(gè)特殊值Unassigned,它表示此變量還沒有被賦值,而當(dāng)Variant變量為另一個(gè)特殊的Null時(shí),則表明Variant變量未知或數(shù)據(jù)已經(jīng)丟失。?變體類型能夠表示大部分的數(shù)據(jù)類型。定義變體類型的語句格式如下:VAR變體類型變量:Variant;3.11常量和變量·常量?在程序運(yùn)行中,固定不變的值稱為常量。?常量又可分為直接常量和符號(hào)常量。(1)直接常量是在程序中無需定義,可以直接引用的量。(2)符號(hào)常量是以標(biāo)識(shí)符的形式出現(xiàn)在程序中,可以用此標(biāo)識(shí)符來替代一個(gè)反復(fù)出現(xiàn)的一個(gè)常數(shù)?!ぷ兞?在程序的運(yùn)行當(dāng)中,變量的值可以被改變。?變量的定義語法格式如下:VAR{變量名1,變量2,…,變量m:類型名1};3.12運(yùn)算符與表達(dá)式·運(yùn)算符運(yùn)算符是在程序中對各種數(shù)據(jù)類型進(jìn)行運(yùn)算的符號(hào)。?(1)賦值運(yùn)算符:賦值運(yùn)算符是用來給變量賦值時(shí)使用的運(yùn)算符。Object

Pascal語言的賦值運(yùn)算符是用:=來表示賦值。?(2)算術(shù)運(yùn)算符:算術(shù)運(yùn)算符是用來進(jìn)行算術(shù)運(yùn)算的符號(hào)。算術(shù)運(yùn)算符可以分為一元運(yùn)算符和二元運(yùn)算符:一元運(yùn)算符號(hào)只有兩個(gè):“+”和“-”,分別用來表示正數(shù)和負(fù)數(shù)。二元運(yùn)算符有:加法運(yùn)算符+、減法運(yùn)算符-、乘法運(yùn)算符

*、除法運(yùn)算符/、整除運(yùn)算符Did、取余運(yùn)算符Mod。?(3)邏輯運(yùn)算符:用來進(jìn)行布爾操作的運(yùn)算符。Not(邏輯非):它是一元運(yùn)算符,將邏輯結(jié)果取反。And(邏輯與):有且僅有兩個(gè)操作數(shù)都為真,結(jié)果才為真,否則為假。Or(邏輯與):僅當(dāng)一個(gè)操作數(shù)為真時(shí),值就為真,否則為假。Xor(邏輯異或):當(dāng)兩個(gè)操作數(shù)不同時(shí),即一個(gè)為True,另一個(gè)為False時(shí)結(jié)果為真,同時(shí)為True或同時(shí)為False時(shí)為假。?(4)位運(yùn)算符:位運(yùn)算符能夠按位對操作數(shù)進(jìn)行運(yùn)算。?(5)關(guān)系運(yùn)算:用來比較兩個(gè)變量的值。關(guān)系運(yùn)算符用來比較兩個(gè)操作數(shù)的大小,被比較的兩個(gè)操作數(shù)類型必須相容。若操作數(shù)是數(shù)值,則按照數(shù)值的大小進(jìn)行比較;若操作數(shù)是字符(串),則根據(jù)字符的先后順序按照ASCII值進(jìn)行比較?!み\(yùn)算符優(yōu)先級(jí)?優(yōu)先級(jí)的判定一般規(guī)則如下:(1)一元運(yùn)算的的優(yōu)先級(jí)最高。有括號(hào)參與運(yùn)算的表達(dá)式,先計(jì)算括號(hào)內(nèi)的表達(dá)式值,有多對括號(hào),括號(hào)由內(nèi)到外依次運(yùn)算。運(yùn)算符的優(yōu)先等級(jí)如上表所示。同一優(yōu)先級(jí)的運(yùn)算符,按從左到右依次運(yùn)算。3.13

Object

Pascal語句結(jié)構(gòu)?ObjectPascal的語句可以寫在一行,也可以寫在多行,但在每一行末尾都必須加上分號(hào)“;”,用來表示一個(gè)語句的結(jié)束。?比較復(fù)雜的語句必須用begin和end兩個(gè)保留字圍起來。Begin…end之間還可以嵌套Begin…end。?ObjectPascal語言支持順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)與過程結(jié)構(gòu)等4種語言結(jié)構(gòu)?!?/p>

順序結(jié)構(gòu)?順序結(jié)構(gòu)是Delphi語言結(jié)構(gòu)中最簡單的一種,它是按照程序書寫順序執(zhí)行的語句,語句體比較簡單,一般都是一行語句做為一個(gè)語句體。?順序結(jié)構(gòu)是任何程序主體的基本結(jié)構(gòu),在一般的選擇或循環(huán)結(jié)構(gòu)中,也是以順序結(jié)構(gòu)做為基礎(chǔ)。語句1語句2·

選擇結(jié)構(gòu)——簡單IF語句?IF語句也稱為條件語句,是最常見的單條件語句,它的一般語法格式如下:If{條件}Then{語句1}[Else{語句2}];√整個(gè)“If…Then…Else…”是一個(gè)完整的語句,只能在此語句的結(jié)束才加上分號(hào),表示語句結(jié)束?!?/p>

選擇結(jié)構(gòu)——嵌套IF語句IF語句可以嵌套,即IF語句中還可以包含IF語句,語法格式如下:IF{條件1}ThenIF{條件2}Then{語句1}[Else{語句2}][ElseIF{條件3}Then{語句3}[Else{語句4}]·

選擇結(jié)構(gòu)——Case語句?Case語句用以實(shí)現(xiàn)程序多分支的選擇,結(jié)構(gòu)簡單明了,便于理解。?Case語法格式如下:

Case{選擇表達(dá)式}of{情況常量表:語句或語句體1;}……{情況常量表:語句或語句體n;}[Else語句或語句體;]End;?需要注意的是:在Case語句中,只可能執(zhí)行一個(gè)分支,當(dāng)一個(gè)分支被執(zhí)行后,就直接運(yùn)行end后的語句。計(jì)算表達(dá)式的值類型必須與情況常量表中的類型一致,并且同一個(gè)情況常量不能出現(xiàn)在兩個(gè)常量表中。計(jì)算選擇表達(dá)式語句或語句體n+1語句或語句體2語句或語句體n語句或語句體1……情況常量表1情況常量表n情況常量表2Case語句的程序執(zhí)行流程圖·

循環(huán)結(jié)構(gòu)——For循環(huán)?For循環(huán)是在事先知道循環(huán)次數(shù)的情況下使用的結(jié)構(gòu)。語法格式如下:For{循環(huán)變量=初值}{To|DownTo終值}Do{循環(huán)體}循環(huán)變量初始化初值與終值比較循環(huán)條件判斷True循環(huán)體循環(huán)變量修正FalseFor循環(huán)流程圖·

循環(huán)結(jié)構(gòu)——While循環(huán)?While循環(huán)一般在不知道循環(huán)次數(shù)的條件下使用。?語法格式:While{條件}Do{循環(huán)體};?While循環(huán)中的“條件”是一個(gè)布爾類型的表達(dá)式,當(dāng)此條件為真時(shí),則執(zhí)行循環(huán)體。循環(huán)條件判斷True循環(huán)體False

While循環(huán)流程圖·

循環(huán)結(jié)構(gòu)——Repeat循環(huán)?Repeat循環(huán)也是在不知道循環(huán)次數(shù)的條件下使用。?語法格式:Repeat{循環(huán)體}Until{條件};FalseTrue循環(huán)條件判斷循環(huán)體?Repeat它與While的區(qū)別:Repeat循環(huán)先執(zhí)行循環(huán)體,后判斷循環(huán)條件,所以,Repeat循環(huán)體至少需要執(zhí)行一次,而While循環(huán)體的循環(huán)體可以一次都不被執(zhí)行。Repeat循環(huán)是當(dāng)“條件”為False時(shí)循環(huán),而

While循環(huán)是當(dāng)“條件”為真時(shí)循環(huán)。Repeat的循環(huán)體至少執(zhí)行一次,而While的循環(huán)體可以不被執(zhí)行。循環(huán)的嵌套?多重循環(huán)指在循環(huán)體內(nèi)還包含有另一個(gè)循環(huán)。嵌套在內(nèi)部的循環(huán)稱為內(nèi)循環(huán),外部的循環(huán)稱為外循環(huán)。?循環(huán)的嵌套需要注意以下:外循環(huán)必須完全包含內(nèi)循環(huán),即循環(huán)只能嵌套,不能交叉。內(nèi)循環(huán)變量與外循環(huán)變量不能同名。3.14過程與函數(shù)?根據(jù)過程或函數(shù)體本身是否返回值可以分為過程和函數(shù)。?過程體本身不返回值,函數(shù)本身返回值,因此,函數(shù)可以直接參與表達(dá)式的計(jì)算?!?/p>

函數(shù)的定義?函數(shù)的定義由函數(shù)的首部和函數(shù)體兩個(gè)部分組成,?定義格式如下:Function{函數(shù)名}[(形式參數(shù):類型)…(;形式參數(shù):類型):返回類型;[局部變量說明]begin[語句體]end;·

函數(shù)的調(diào)用?函數(shù)調(diào)用的一般形式為:{函數(shù)名}({實(shí)際參數(shù)表});?當(dāng)主程序中遇到函數(shù)調(diào)用時(shí),首先根據(jù)函數(shù)的定義將函數(shù)調(diào)用語句的實(shí)參依次傳遞給相應(yīng)的形參,然后執(zhí)行函數(shù)體內(nèi)的各語句,最后將函數(shù)計(jì)算結(jié)果通過函數(shù)名賦值語句返回到主程序,程序繼續(xù)執(zhí)行函數(shù)調(diào)用后的語句?!?/p>

過程與函數(shù)——過程?過程可分為事件過程和通用過程。?事件過程依附于控件,控件響應(yīng)相應(yīng)的事件,既執(zhí)行相應(yīng)的過程。?通用過程由用戶自己編寫,用來完成用戶自定義的過程。·

過程的定義?過程定義一般格式為:Procedure{過程名}[(形式參數(shù):類型)…(;形式參數(shù):類型)][局部變量說明]begin[語句體]end;·

過程的調(diào)用?對傳數(shù)值與傳地址方式的比較:傳數(shù)值:當(dāng)調(diào)用一個(gè)子過程時(shí),系統(tǒng)將實(shí)參的值復(fù)制給形參,形參在內(nèi)存中開辟了一個(gè)新的存儲(chǔ)單元,實(shí)參與形參沒有任何的聯(lián)系。被調(diào)用子過程的操作是在形參自己的存儲(chǔ)單元中進(jìn)行,當(dāng)調(diào)用過程結(jié)束,形參所占用的存儲(chǔ)單元被釋放。因此,在子過程體內(nèi)對形參的任何操作不會(huì)影響到實(shí)參。傳地址:當(dāng)調(diào)用一個(gè)子過程時(shí),是將實(shí)參的地址傳遞給形參,形參與實(shí)參共同指向同一個(gè)內(nèi)存單元。調(diào)用過程中對形參的任何操作變成了對相應(yīng)實(shí)參的操作,實(shí)參的值會(huì)隨子過程體內(nèi)形參值的改變而改變?!?/p>

參數(shù)傳遞?在函數(shù)調(diào)用或過程調(diào)用過程中,都需要傳遞一定的參數(shù),在定義函數(shù)或過程時(shí)出現(xiàn)的稱為形式參數(shù),簡稱“形參”,在調(diào)用函數(shù)或過程時(shí)出現(xiàn)的稱為實(shí)際參數(shù),簡稱“實(shí)參”。?參數(shù)傳遞有兩種方式,一種為傳數(shù)值,另一種是傳地址。判斷參數(shù)傳遞是何種形式,以過程或函數(shù)定義時(shí)形參前的保留字為依據(jù)。?傳數(shù)值?傳地址?對傳數(shù)值與傳地址方式的比較:?傳數(shù)值:當(dāng)調(diào)用一個(gè)子過程時(shí),系統(tǒng)將實(shí)參的值復(fù)制給形參,形參在內(nèi)存中開辟了一個(gè)新的存儲(chǔ)單元,實(shí)參與形參沒有任何的聯(lián)系。被調(diào)用子過程的操作是在形參自己的存儲(chǔ)單元中進(jìn)行,當(dāng)調(diào)用過程結(jié)束,形參所占用的存儲(chǔ)單元被釋放。因此,在子過程體內(nèi)對形參的任何操作不會(huì)影響到實(shí)參。?傳地址:當(dāng)調(diào)用一個(gè)子過程時(shí),是將實(shí)參的地址傳遞給形參,形參與實(shí)參共同指向同一個(gè)內(nèi)存單元。調(diào)用過程中對形參的任何操作變成了對相應(yīng)實(shí)參的操作,實(shí)參的值會(huì)隨子過程體內(nèi)形參值的改變而改變。3.15常用算法1.累加和連乘2.窮舉法3.最大值和最小值4.?dāng)?shù)值排序·

1.累加和連乘?累加:在原有和的基礎(chǔ)上一次次的加上一個(gè)數(shù),累加((循環(huán))前須設(shè)定一個(gè)累加和變量,并初始化;累加是在循環(huán)體中進(jìn)行的;循環(huán)結(jié)束則累加過程結(jié)束,累加的和存儲(chǔ)在sum中。?連乘:在原有積的基礎(chǔ)上一次次的乘一個(gè)數(shù)字。連乘(循環(huán))前完成連乘變量初始化,循環(huán)連乘以及循環(huán)結(jié)束后獲得連乘結(jié)果。例程求1×1/2×1/3×……×1/10的積問題分析:由于所求的問題是一個(gè)連乘算法,規(guī)律是每次連乘的子項(xiàng)其分母從1開始不斷遞增1,一直到10,則循環(huán)從1到10,將循環(huán)變量作為子項(xiàng)的分母,實(shí)現(xiàn)連乘計(jì)算。程序界面設(shè)計(jì):啟動(dòng)Delphi7.0,新建一個(gè)應(yīng)用程序

Application,在窗體上各增加一個(gè)Edit1文本框和Button1按鈕控件,Edit1用于顯示結(jié)果;設(shè)置Button1控件的Caption屬性為“計(jì)算”,(3)程序代碼在窗體上雙擊Button1計(jì)算按鈕,在Button1的onclick事件中書寫代碼:procedure

TForm1.Button1Click(Sender:

TObject);vari

:integer;

//定義循環(huán)變量total

:

real;

//定義連乘變量begintotal:=1;

//連乘變量初始化,通常為1,累加變量初始化通常為0for

i:=1

to

10

dobegintotal:=total

*(1/i);

//連乘

end;Edit1.Text:=FloatToStr(total);

//結(jié)果在Edit1中顯示end;·

2.窮舉法?窮舉算法就是按照問題本身的性質(zhì),通過多重循環(huán)一一列舉出該問題的所有可能解,不能遺漏也不能重復(fù),并在逐一列舉的過程中,檢驗(yàn)每個(gè)可那的解是否是問題的真正解,若是,則采用這個(gè)解,否則拋棄。例程,百元買百雞問題(1)問題描述:百雞問題是我國古代數(shù)學(xué)家張丘建所著《算經(jīng)》中的一道解不定方程的問題。題意:公雞每只5元,母雞每只3元,小雞每三只1元。用100元買100只雞。問公雞、母雞、小雞各買多少只?(2)問題分析設(shè)公雞有i只,母雞j只,小雞k只,如果使用方程組求解,可以列出如下的方程組:i+

j

+

k

=

1005×i

+

3×j

+

(1/3)×k

=

100可見,這是一個(gè)不定方程組,結(jié)果有多個(gè)解集。如果采用窮舉法,只需對i,j,k循環(huán)取可能的值,每次取值結(jié)果用表達(dá)式(i*5+j*3+k*1/3=100)And

(i+j+k=100)判斷,如果成立,表示找到了一個(gè)解。故程序使用一個(gè)三重循環(huán)來求解。(3)界面設(shè)計(jì)在應(yīng)用程序窗體上添加一個(gè)Memo控件(位于Standard控件頁

)和一個(gè)Button按鈕,設(shè)置Button按鈕的Caption屬性為“求解”,Memo控件的Lines屬性設(shè)為空。當(dāng)點(diǎn)擊“求解”按鈕后,計(jì)算結(jié)果顯示在Memo中。(4)程序代碼為Button按鈕的onclick事件編寫代碼:procedure

TForm1.Button1Click(Sender:TObject);vari,j,k:integer;//i,j,k分別表示公雞、母雞和小雞的只數(shù)beginfor

i:=0

to

20

dofor

j:=0

to

34

dofor

k:=

0

to

100

doif

(i*5+j*3+k*1/3

=

100)

and

(i+j+k=100)

then//如果條件滿足,將結(jié)果添加到Memo中Memo1.Lines.Add(IntToStr(i)+""+IntToStr(j)+"

"+IntToStr(k));end;·

3.最大值和最小值?基本思想:通過循環(huán)做數(shù)的兩兩比較,一旦發(fā)現(xiàn)有更大(或更?。┑臄?shù)后,將該數(shù)作為后續(xù)數(shù)比較的基數(shù)。?求最大值,通常循環(huán)比較前先假定一個(gè)足夠小的數(shù)為最大數(shù)(max),如果無法估計(jì)較小的值,可以取第一個(gè)數(shù)為最大值作為初值,然后將每一個(gè)數(shù)與最大值比較,若該數(shù)大于最大值,將該數(shù)替換為最大值,依次逐一比較。例程,輸入10個(gè)大于0-100之間的整數(shù),求解最大值。問題分析:求最大值問題,循環(huán)前設(shè)定一個(gè)max變量,并初始化為

“-1”,將后續(xù)接收的10個(gè)數(shù)逐個(gè)與max比較,以求得最大值。界面設(shè)計(jì):當(dāng)點(diǎn)擊Button1按鈕后,連續(xù)10次彈出輸入數(shù)值的對話框,輸入一個(gè)判斷一個(gè),直到10個(gè)數(shù)輸入結(jié)束,最大值結(jié)果在Edit1中顯示。程序中用到了數(shù)值輸入對話框,使用Delphi提供的“InputBox()”函數(shù),其原型為:function

InputBox(const

ACaption,

APrompt,

ADefault:

string):string;(3)代碼編寫主要事件為“開設(shè)連續(xù)輸入10個(gè)整數(shù)”按鈕的onclick事件,代碼如下:procedure

TForm1.Button1Click(Sender:

TObject);vari:integer;

//定義循環(huán)變量max,temp:integer;//定義最大值變量和臨時(shí)變量beginmax:=-1;

//最大值變量初始化for

i:=1

to

10

dobegin//InputBox返回的值賦值給臨時(shí)變量temptemp:=StrToInt(Inputbox("輸入",Pchar("輸入第"+IntToStr(i)+"個(gè)數(shù)"),"0"));if

temp>max

then

//max與臨時(shí)變量的比較,max中始終存放最大值max

:=

temp;end;Edit1.Text:=IntToStr(max);

//將最大值結(jié)果由Edit1顯示

end;程序中將最大值變量max初始化為-1,若把該變量初始化為100的話,能得到正確的最大值嗎?·

4.?dāng)?shù)值排序

排序就是將一組任意序列的數(shù)據(jù)元素,重新排列成一個(gè)按關(guān)鍵字排列的有序序列。比如按數(shù)值的大小遞增或遞減排列。

算法思想:首先在所有數(shù)值中選出最小值,把它與第一個(gè)值交換,然后在其余的數(shù)中再選出次最小的數(shù)與第二個(gè)數(shù)交換,依此類推,直到所有數(shù)排序完成。例程,輸入10個(gè)整數(shù),用選擇排序算法從小到大排序。(1)問題分析:為明晰選擇算法思想,分析時(shí)先簡化問題的規(guī)模,假設(shè)有6個(gè)數(shù)字,值分別為“5,9,8,7,3,6”,根據(jù)算法,有如下的排序過程:原始數(shù)據(jù)598736第1輪排序398756(3最小,與第1位的5位置互換,3不參與下論排序)第2輪排序358796(5最小,與第2位的9位置互換,5不參與下論排序)第3輪排序356798(6最小,與第3位的8位置互換,6不參與下論排序)第4輪排序356798(7最小,與第4位的7位置互換,7不參與下論排序)第5輪排序356789(8最小,與第5位的9位置互換)排序結(jié)果3

5

6

7

8

9

(2)界面設(shè)計(jì):連續(xù)輸入10個(gè)整數(shù)后將排序結(jié)果顯示在文本框Edit1中。(3)代碼編寫因輸入的10個(gè)數(shù)參與排序并輸出,故每次從InputBox獲得的數(shù)須存入一個(gè)定義的數(shù)組中第四章

常用控件的使用文本輸入控件按鈕類控件列表類控件分組控件信息顯示控件菜單與工具欄控件對話框控件其他控件控件是在面向?qū)ο蟪绦蛟O(shè)計(jì)一種可視對象,函數(shù)被

“封裝”在Windows編程所必需的對象中,只要在提供的框架中添加實(shí)現(xiàn)功能的代碼,如點(diǎn)擊按鈕、移動(dòng)鼠標(biāo)等,而不必考慮按精確次序執(zhí)行的每一個(gè)步驟??丶臓顟B(tài)信息、動(dòng)作信息、反饋信息,分別對應(yīng)對象的屬性、方法、事件。常用控件的功能:Standard:標(biāo)準(zhǔn)的Windows控件,比如按鈕、單選按鈕,菜單;Additional:為應(yīng)用程序?qū)iT設(shè)計(jì)的Windows控件;Win32:Windows

95/NT

4.0常用控件;System:系統(tǒng)級(jí)訪問所需控件,例如計(jì)時(shí)器、文件系統(tǒng)、多媒體播放控件;Internet:管理Client/Server應(yīng)用所需的控件;Data

Access:數(shù)據(jù)庫存取控件;Data

Controls:數(shù)據(jù)庫感知控件;Rave:報(bào)表制作控件,Delphi7.0中已默認(rèn)安裝,簡單易用;Dialogs:Windows通用對話框;4.1文本輸入控件:文本操作相關(guān)的控件Edit:對單行文本進(jìn)行編輯,位于Standard控件頁上;

MaskEdit:掩碼編輯框,按照預(yù)選指定的格式輸入單行文本,位于Additional控件頁上;Memo:對多行文本進(jìn)行編輯,位于Standard控件頁上;

RichEdit:顯示、編輯具有豐富文本格式的文件,位于Win32控件頁上;

UpDown:通常與一個(gè)TEdit控件組合使用,通過上下箭頭按鈕對文本框內(nèi)的數(shù)值調(diào)整,位于Win32控件頁上。4.1.1

Edit和MaskEdit·

單行文本編輯框Edit——主要屬性屬性名稱屬性類型說明AutoSelectBoolean表示編輯框得到焦點(diǎn)的同時(shí),文本能否被自動(dòng)選中AutoSizeBoolean編輯框的大小是否自動(dòng)隨文字大小的變化而變化EnableBoolean表示編輯框是否可用BorderStyle枚舉型編輯框的邊框類型MaxLengthInteger表示所最多能夠輸入的字符串長度CharPasswordCharReadOnlyBoolean用戶所輸入的字符將被該屬性指定的字符所掩蓋,通常在使用編輯框輸入口令時(shí)使用編輯框的狀態(tài)是否為只讀SelStartSelTextSelLengthIntegerStringInteger光標(biāo)當(dāng)前所處位置表示被選中的文字被選中的字符串的長度TextCharCaseStringTeditCharCase編輯框中的文本數(shù)據(jù)表示編輯框中文本的大小寫狀態(tài)單行文本編輯框Edit——編輯框的使用

編輯框的Text屬性決定了編輯框中所顯示的內(nèi)容。Text屬性可以在設(shè)計(jì)階段進(jìn)行修改,或者在程序運(yùn)行過程中通過代碼動(dòng)態(tài)設(shè)置,也可以在運(yùn)行時(shí)由用戶輸入。例程4.1:輸入圓的半徑,根據(jù)圓的半徑計(jì)算并且輸出圓的周長以及面積。創(chuàng)建應(yīng)用程序界面,新建一個(gè)工程,進(jìn)入窗體設(shè)計(jì)器當(dāng)中,增加三個(gè)標(biāo)簽控件,三個(gè)編輯框控件,以及一個(gè)按鈕控件設(shè)置窗體中對象的屬性為相應(yīng)的事件過程編寫代碼例程4.2:在編輯框中輸入英文單詞,實(shí)現(xiàn)將單詞中的小寫字母轉(zhuǎn)化成為大寫字母和將單詞中的大寫字母轉(zhuǎn)化成為小寫字母的功能。創(chuàng)建應(yīng)用程序界面,新建一個(gè)工程,進(jìn)入窗體設(shè)計(jì)器當(dāng)中,在窗體中增加一個(gè)標(biāo)簽,一個(gè)編輯框,以及兩個(gè)按鈕,設(shè)置窗體中對象的屬性,編寫代碼?!?/p>

掩碼編輯框MaskEditMaskEdit控件是一種格式化的編輯框,它的主要作用為以一定的格式規(guī)范用戶所輸入的數(shù)據(jù)。掩碼編輯框隸屬于類TmaskEdit,TmaskEdit繼承了Tedit的所有屬性、事件和方法。掩碼編輯框MaskEdit——主要屬性EditMask為掩碼編輯框的掩碼字符串屬性,主要用于確定輸入數(shù)據(jù)的格式以及風(fēng)格。取值主要?jiǎng)澐殖蔀槿齻€(gè)部分,并且用分號(hào)隔開,其中第一部分是掩碼字符串的主要部分,它確定了數(shù)據(jù)的格式,第二部分確定了是否將掩碼中的字符串作為數(shù)據(jù)的一部分,第三部分代表了掩碼中將要輸入的數(shù)據(jù)的占位符。掩碼編輯框MaskEdit——MaskEdit的使用掩碼輸入的格式定義是使用Input

Mask

Editor對話框來設(shè)置的。打開Input

Mask

Editor對話框的方法有如下兩種:窗體上選中EditMask控件,在對象編輯器中選擇EditMask屬性,單擊屬性值旁所對應(yīng)的按鈕;右擊EditMask控件,在彈出菜單中執(zhí)行Input

Mask

Editor…命令,打開Input

Mask

Editor對話框。使用時(shí)可以選擇一個(gè)Delphi所提供的樣本掩碼,也可以自己設(shè)定特殊的掩碼字符串。4.1.2

Memo和RichEdit·

多行文本編輯框Memo?當(dāng)需要處理備注類型的多行文本時(shí)可以選用Memo控件,但

Memo控件只能顯示單一的一種字體格式,如果想使文本的字體多樣化,可以選擇RichEdit控件。?Memo控件隸屬于Standard控件頁中。多行文本編輯框Memo——主要屬性(1)Lines屬性:

Lines是用于處理Memo對象中文本內(nèi)容的屬性,類型為

Tstrings,即字符串?dāng)?shù)組類型:其類型定義為:property

String[Index:Integer]:string;Index表示字符串?dāng)?shù)組的索引,

Lines作為一種對象又有其自身的方法——Add方法、

Delete方法、Insert方法、Move方法:(2)ScrollBars屬性ScrollBars屬性用于控制滾動(dòng)條的狀態(tài),取值分別為:取值說明ssNone無滾動(dòng)條ssHorizontal僅有水平滾動(dòng)條ssVerticall僅有垂直滾動(dòng)條ssBoth同時(shí)具有水平垂直滾動(dòng)條(3)WantTabs屬性

如果將WantTabs屬性設(shè)置為True時(shí),在文本當(dāng)中使用Tab鍵就可以進(jìn)行文本編輯。如果想要使得焦點(diǎn)從Memo控件切換到其他控件,就必須要使用Ctr+Tab組合鍵來完成操作。多行文本編輯框Memo——使用例程4.3:對Memo控件中的文本進(jìn)行編輯,其中包括:剪切、復(fù)制、粘貼、刪除操作。(1)創(chuàng)建應(yīng)用程序界面,在窗體設(shè)計(jì)器中添加一個(gè)Memo控件,四個(gè)

Button控件,并且分別將四個(gè)按鈕控件的Caption屬性設(shè)置為“剪切”、“復(fù)制”、“粘貼”和“刪除”,將Memo1控件的Lines屬性設(shè)置為所需要的文字,(2)分別為四個(gè)按鈕的單擊事件編寫代碼:“剪切”按鈕的單擊事件為:procedure

TForm1.Button1Click(Sender:

TObject);beginMemo1.CutToClipboard;end;“復(fù)制”按鈕的單擊事件為:procedure

TForm1.Button2Click(Sender:TObject);beginMemo1.CopyToClipboard;end;“粘貼”按鈕的單擊事件為:procedure

TForm1.Button3Click(Sender:

TObject);beginMemo1.PasteFromClipboard;end;“刪除”按鈕的單擊事件為:procedure

TForm1.Button4Click(Sender:TObject);beginMemo1.SelText:="";end;·

豐富文本編輯框RichEdit1.常用屬性SelStart以及SelLenght屬性:分別表示被選中文字的起始位置和長度。DefAttributes和SelAttributes屬性:分別為默認(rèn)字體的樣式和被選中文字字體的樣式。Paragraph屬性:光標(biāo)以及別選中的文字所在位置的段落屬性。2.豐富文本編輯框RichEdit的使用

RichEdit控件與Memo控件類似,不同之處在于

RichEdit可以對所輸入的文字單獨(dú)進(jìn)行字體的設(shè)置,類似于Microsoft

Office中的Word,該控件在Win32組件面板中。例程4.4:對RichEdit控件中輸入的文字進(jìn)行字體的設(shè)置(1)創(chuàng)建應(yīng)用程序界面,在窗體設(shè)計(jì)器中添加一個(gè)RichEdit控件,以及六個(gè)按鈕控件,將三個(gè)按鈕控件的標(biāo)題(Caption)屬性分別設(shè)為“紅”、“黃”、“藍(lán)”、“隸書”、“宋體”以及“幼圓”,將RichEdit控件的Lines屬性設(shè)為空,F(xiàn)ont屬性中的size(即字體大?。┰O(shè)為“24”,“紅”、“黃”、“藍(lán)”按鈕用于設(shè)置選中文字的顏色,“隸書”、“宋體”以及“幼圓”按鈕設(shè)置被選中文字的字體樣式。(2)編寫按鈕所對應(yīng)的事件的代碼:

單獨(dú)設(shè)置RichEdit控件中所選定的文本的字體時(shí),需要使用到

SelAttributes屬性,該屬性表示當(dāng)前選中文字的屬性,其中

Color表示選中文字的顏色,而Name表示選中文字的字體樣式。三種顏色所對應(yīng)的按鈕的單擊事件為:procedure

TForm1.Button1Click(Sender:TObject);//紅色按鈕beginRichEdit1.SelAttributes.Color

:=

rgb(255,0,0);end;procedure

TForm1.Button2Click(Sender:TObject);//綠色按鈕beginRichEdit1.SelAttributes.Color

:=

rgb(0,255,0);end;procedure

TForm1.Button3Click(Sender:TObject);//藍(lán)色按鈕beginRichEdit1.SelAttributes.Color

:=

rgb(0,0,255);end;三種字體按鈕所對應(yīng)的單擊事件為:procedure

TForm1.Button4Click(Sender:

TObject);beginRichEdit1.SelAttributes.Name:="隸書";end;procedure

TForm1.Button5Click(Sender:

TObject);beginRichEdit1.SelA:="宋體";end;procedure

TForm1.Button6Click(Sender:

TObject);beginRichEdit1.SelA:="幼圓";end;4.1.3

UpDown控件作用:通過點(diǎn)擊上、下按鈕來設(shè)定連續(xù)的數(shù)值。

通常將UpDown控件與一個(gè)Edit控件相關(guān)聯(lián),當(dāng)點(diǎn)擊

UpDown控件的上下按鈕時(shí),編輯框中的數(shù)值會(huì)發(fā)生連續(xù)的變化。該控件隸屬于Win32控件頁中。1.UpDown控件的主要屬性Min、Max、Position屬性:分別表示上下按鈕所能進(jìn)行數(shù)值調(diào)整范圍中的最大值、最小值以及當(dāng)前值。Associate屬性:該屬性指明與UpDown控件相關(guān)聯(lián)的控件,通常情況下,將UpDown與單行編輯框控件相關(guān)聯(lián)。AlignButton屬性:該屬性決定了UpDown與相關(guān)聯(lián)控件之間的位置關(guān)系,其取值分別為udLeft以及udRight,分別表示左側(cè)與右側(cè)。Increment屬性:該屬性表示在數(shù)值調(diào)整范圍以內(nèi),當(dāng)前值變化的步長,即用來控制Position屬性的增量,其默認(rèn)值為1。Orientation屬性:該屬性指明了按鈕的排列方式,分別為udHorizontal、udVertical,即水平、垂直方向的排列。Wrap屬性:當(dāng)Wrap屬性的值為真時(shí),Position的取值會(huì)在最小值和最大值之間連續(xù)變化,其默認(rèn)值為false。2.UpDown控件的使用例程4.5,利用UpDown控件進(jìn)行顏色合成。(1)創(chuàng)建應(yīng)用程序界面,在窗體設(shè)計(jì)器中添加三個(gè)標(biāo)簽控件,并且分別將Caption屬性設(shè)置為“紅”、“綠”、“藍(lán)”;添加三個(gè)編輯框以及三個(gè)UpDown控件,通過設(shè)置UpDown控件的Associate屬性,分別將三對UpDown控件與編輯框進(jìn)行關(guān)

聯(lián);分別將三個(gè)UpDown控件的Min、Max、Position屬性設(shè)置為0、255、0。在窗體上添加一個(gè)shape控件(位于Additional控件頁),改變紅、綠、藍(lán)UpDown的position值,使得顏色在Shape中顯示。(2)顏色合成的效果顯示在Shape控件中,根據(jù)三個(gè)

UpDown控件的position屬性決定了Shape控件顏色中的紅、綠、藍(lán)的分量。當(dāng)UpDown控件發(fā)生改變時(shí),Shape控件的顏色也會(huì)發(fā)生相應(yīng)的變化,因此在編寫代碼時(shí)需要調(diào)用Shape控件。三個(gè)UpDown控件的onchange事件的代碼如下:procedure

TForm1.UpDown1Changing(Sender:

TObject;var

AllowChange:Boolean);beginShape1.Brush.Color

:=rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;procedure

TForm1.UpDown2Changing(Sender:

TObject;var

AllowChange:Boolean);beginShape1.Brush.Color

:=rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;procedure

TForm1.UpDown3Changing(Sender:

TObject;var

AllowChange:Boolean);beginShape1.Brush.Color

:=rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;當(dāng)設(shè)定UpDown控件的Min屬性為0時(shí),其Positon屬性取值自動(dòng)與Min的值保持一致(如果未設(shè)定Position的值)。程序運(yùn)行時(shí),UpDown1、UpDown2、UpDown3的Position都為0,Shape1的顏色應(yīng)該是rgb(0,0,0)黑色。因此在程序的

FormCreat事件中增加如下代碼:procedure

TForm1.FormCreate(Sender:

TObject);beginShape1.Brush.Color

:=

rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;4.1.4

應(yīng)用實(shí)例-例程4.6:統(tǒng)計(jì)字符數(shù)量1.實(shí)例功能:實(shí)現(xiàn)一個(gè)類似記事本并且含有字符統(tǒng)計(jì)功能的工具,首先將所要統(tǒng)計(jì)的文字導(dǎo)入至窗口中的文本區(qū)域中,然后點(diǎn)擊“統(tǒng)計(jì)”按鈕后,在文本中的字母以及漢字的數(shù)量就能夠顯示在窗口的編輯框中。2.設(shè)計(jì)思路:該實(shí)例應(yīng)用到了Memo控件的屬性以及各種常用方法,如:CuttoClpboard(剪切)、CopytoClipboard(復(fù)

制)、PastfromClipboard(粘貼)功能。在統(tǒng)計(jì)時(shí),程序?qū)emo1控件中所輸入的字符串中每一個(gè)字符做一個(gè)判斷,判斷的累計(jì)結(jié)果分別顯示在兩個(gè)編輯框中。其中Ord函數(shù)用于得到字符的ASCII碼值,如果當(dāng)前字符的ASCII碼值處在33至126之間,那么該字符就被認(rèn)定為英文字符或數(shù)字,否則該字符表示二分之一個(gè)漢字。3.控件的屬性控件屬性取值Memo1Lines默認(rèn)值為’memo1’,將其置空Button1Caption“復(fù)制”Button2Caption“粘貼”Button3Caption“剪切”Button4Caption“統(tǒng)計(jì)”Edit1Text“英文字符數(shù)”Edit2Text“漢字?jǐn)?shù)”4.程序代碼(略)4.2按鈕類控件常用的按鈕類控件:Button:最常用的按鈕控件,在按鈕上提供簡單的提示信息,位于Standard控件頁上;BitBtn:圖形按鈕控件,與Button按鈕類似,但可在按鈕上增加圖形提示,位于Additional控件頁上;SpeedButton

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論