![Delphi7程序設(shè)計課件_第1頁](http://file4.renrendoc.com/view/f5d10dfb383574f8863d434a228546b5/f5d10dfb383574f8863d434a228546b51.gif)
![Delphi7程序設(shè)計課件_第2頁](http://file4.renrendoc.com/view/f5d10dfb383574f8863d434a228546b5/f5d10dfb383574f8863d434a228546b52.gif)
![Delphi7程序設(shè)計課件_第3頁](http://file4.renrendoc.com/view/f5d10dfb383574f8863d434a228546b5/f5d10dfb383574f8863d434a228546b53.gif)
![Delphi7程序設(shè)計課件_第4頁](http://file4.renrendoc.com/view/f5d10dfb383574f8863d434a228546b5/f5d10dfb383574f8863d434a228546b54.gif)
![Delphi7程序設(shè)計課件_第5頁](http://file4.renrendoc.com/view/f5d10dfb383574f8863d434a228546b5/f5d10dfb383574f8863d434a228546b55.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
OOPPascal基礎(chǔ)知識2.1OOPPascal基本要素
Delphi是Borland公司推出的面向?qū)ο蟮目梢暬幊汰h(huán)境,特別適合於快速規(guī)範(fàn)地開發(fā)Windows應(yīng)用程式。從Borland公司推出Delphi1.0至今,Delphi已經(jīng)發(fā)展了7代產(chǎn)品,每一代都是伴隨Windows操作平臺的升級而升級。使用Delphi,用戶可以輕鬆地進(jìn)行各種複雜應(yīng)用程式的開發(fā)。
2.1.1識別字識別字是用來標(biāo)識一個特定元素的,如類名、變數(shù)名、單元名、方法名等。利用識別字可以完成對變數(shù)、常量、數(shù)據(jù)類型、過程、函數(shù)、類等的引用。ObjectPascal識別字由字母、數(shù)字、下劃線組成,其規(guī)定為:(1)必須以字母或下劃線開始;(2)不能與保留字相同;(3)避免與ObjectPascal已經(jīng)使用的標(biāo)準(zhǔn)識別字相同。2.1.2關(guān)鍵字
關(guān)鍵字又稱保留字(ReservedWords)是由系統(tǒng)規(guī)定的、具有特定意義的單詞。在編程時不能被重新定義或另作他用。ObjectPascal語言規(guī)定的保留字詳見本教程P28頁表2-1。
除了上述的保留字外,Private、Protected、Public、Published和Automated在定義對象類型時也作為保留字,而在其他場合則作為指令符。單詞at和on也具有特殊的含義。
注意:ObjectPascal編程語言和許多編程語言不同,它對單詞的大小寫是不敏感的。ObjectPascal不區(qū)分大小寫。IN、in和In都被看做是同樣的意義。2.1.3指示字
注意:
可以定義一個跟指示字完全相同的識別字,但最好不這樣做。
指示字(directives)也是具有特殊意義的單詞,但與保留字不同的是可以將指令符定義為識別字,ObjectPascal不會指示出錯,但這容易混淆。ObjectPascal規(guī)定的指令指示字見表2-2。2.2數(shù)據(jù)類型
OOPPASCAL語言是一種強(qiáng)類型語言,這表明每一個變數(shù)在賦值之前必須明確給出它的類型。即變數(shù)在訪問之前必須聲明。OOPPASCAL數(shù)據(jù)類型豐富,它允許使用17種類型的數(shù)據(jù)。其結(jié)構(gòu)如P31圖2-1所示。2.2.1簡單類型
OOPPASCAL中的簡單類型包括整形、字元型、布爾型、枚舉型、子界類型以及實數(shù)類型。
其中,整形、字元型、布爾型、枚舉型、子界類型統(tǒng)稱為順序類型(ordinaltypes)。在順序類型中,除了第一個元素,每一個元素都有唯一的前趨;除了最後一個元素外,每一個元素都有唯一的後繼。
1.整型
OOPPASCAL中將整數(shù)類型分為基本的(fundanmental)和一般的(generic)整數(shù)類型。基本的整數(shù)類型包括Shortint(短整型)、Smallint(小整型)、Longint(長整型)、Int64(64位整型)、Byte(位元組型)、Word(字型)和Longword(長字型)。它們的取值範(fàn)圍和格式如表2-4所示:表2-4基本整數(shù)類型類型範(fàn)圍格式Shortint-127...1278位帶符號數(shù)Smallint-32768…3276716位帶符號數(shù)Longint-2147483648…214748364732位帶符號數(shù)Int64-2^63…2^63-164位帶符號數(shù)Byte0…2558位無符號數(shù)word0…6553516位無符號數(shù)Longword0…429496729532位無符號數(shù)2.字元型
字元類型也有基本類型和一般類型之分?;绢愋桶ˋnsiChar和WideChar兩種類型。其中,AnsiChar的格式為8位位元組,取值的序數(shù)按擴(kuò)展ANSI字元集排列;而WideChar的格式為16位位元組,是為相容UniCode字元集而設(shè)置的,它的前256個UniCode字元同ANSI字元相同。一般的通用字元類型為Char,它等價於AnsiChar。由於字元型也屬於順序類型,可用函數(shù)Ord來取出字元的序數(shù),即Ord(‘A’)=65成立。也可用預(yù)定義的函數(shù)Chr來返回對應(yīng)的字元值,即Chr(65)=’A’
成立。
3.布爾型
布爾型數(shù)據(jù)用於進(jìn)行邏輯運算,布爾型數(shù)據(jù)的值只有兩個:True(真)和False(假)。ObjectPascal包括4種形式的布爾型數(shù)據(jù),詳見表2-7。表2-7ObjectPascal語言的布爾型類型名稱位元組數(shù)取值布爾型Boolean1只能為False(0)或True(1)位元組布爾型ByteBool1False或True(非False)寬布爾型WordBool2False或True(非False)長布爾型LongBool4False或True(非False)4.枚舉型
枚舉類型定義了一組值的順序集合。它們的次序根據(jù)識別字的枚舉順序而定。在Delphi中廣泛使用了枚舉類型來定義組件對象的屬性。枚舉類型是一種用戶子定義類型,定義枚舉類型的語法如下:Type類型名稱(TypeName)=(值1,值2,值3,……,值n);如下是定義枚舉類型的例子:
TypeFruits=(Apples,Oranges,Bananas,Grapes);
在程式中定義好了枚舉類型後,可以象如下聲明變數(shù):
VarMyFruit:Fruits;
5.子界類型子界類型也是一種用戶字定義類型,它規(guī)定了值域的上界和下界及取值的類型。位元組類型必須是順序類型中某範(fàn)圍的值,在想限制一個變數(shù)的取值範(fàn)圍時,子界類型是非常有用的。子界類型的定義如下:Type類型名稱
=值域下界
…
值域上界;
定義子界類型必須注意以下幾點:
上界和下界必須屬於順序類型,且為同一順序類型。
上界和下界的類型定義了子界的基類型。
上界的序號必須大於下界的序號。正確的定義舉例如下:
TypeSomeNumbers=0…15;
SomeCaps=‘A’
…
‘H’;
6.實型實數(shù)類型用於定義一個通常所說的浮點數(shù)所表示的數(shù)字的集合。它是屬於數(shù)據(jù)類型中的簡單類型,但已不屬於順序類型。實數(shù)類型也有基本類型和一般類型?;绢愋桶ǎ篟eal48、Single、Double、Extended、Comp和Currency;一般類型為:Real。詳細(xì)的格式及表示範(fàn)圍如表2-6所示:
類型名表示範(fàn)圍有效位佔用記憶體(位元組)Real48±2.9*10^-39~1.7*10^3811~126Single±1.5*10^-45~3.4*10^3874Double±5.0*10^-324~1.7*10^30815~168Extended±3.6*10^-4951~1.1*10^493219~2010Comp-2^63+1~2^63-119~208Currency-922337203685477.5808~922337203685477.580719~208Real±5.0*10^-324~1.7*10^30815~1682.2.2字串類型字串型是存儲字串?dāng)?shù)據(jù)的類型。OOPPASCAL中提供的預(yù)定義類型如表2-7:
表2-7字串類型類型名最大長度(字元)所需記憶體用途ShortString2552~256B向後相容AnsiString2314~2GB8位ANSI字元WideString2304~2GBUniCode注:在
Delphi5.0以後的程式中可直接定義String類型,其默認(rèn)為AnsiString類型(或者說是LongString類型),如果使用{$H-},則被解釋為ShortString類型。
2.2.3結(jié)構(gòu)類型
結(jié)構(gòu)類型包括:集合(Set)、數(shù)組(Array)、記錄(Record)、檔(File)以及類(Class)、類引用(ClassReference)、介面(Interface)等類型。它的實例中含有一個或多個值。
2.2.4指針類型指針是記憶體中數(shù)據(jù)結(jié)構(gòu)的詳細(xì)地址,相當(dāng)於一個表示記憶體地址的變數(shù)。指針類型聲明的一般形式為:
Type指針類型名
=^類型特殊符號
“^”
表明了是一個指針類型,其後面緊跟的類型確定了指針?biāo)赶虻念愋?,可以是簡單類型,如整型、實型、枚舉等;也可以是結(jié)構(gòu)類型,如數(shù)組、集合、記錄等類型?!癪”還有另外一種含義,跟在指針類型的變數(shù)後面,表示具體的值。配合指針操作的還有符號“@”,它是取址運算符,表示取地址操作。
2.2.5過程類型
過程類型變數(shù)相當(dāng)於指針的角色,它可指向一個過程或函數(shù),並且可以作為另一個過程或函數(shù)的參數(shù)使用。其定義的方式如下例:TypeTProcedure=Procedure;//聲明一個無參數(shù)過程類型TIntegerFunction=Function:Integer;//聲明一個無參數(shù)函數(shù)類型,返回值為整型TStringProcedure=Procedure(constS:String);//聲明一個帶有
String類型參數(shù)的過程類型VarProc:Tprocedure;IntF:TintegerFunction;StrP:TstringProcedure;2.2.6可變類型
用於標(biāo)識可變類型的保留字是Variant,Variant類對象本質(zhì)上是無類型變數(shù),也就是它們可以自動顯現(xiàn)不同的類型。可變類型就是為了解決在編譯時數(shù)據(jù)類型無法確定的情況下,ObjectPascal才引入的數(shù)據(jù)類型。可變類型變數(shù)舉例如下:VarX:Variant;S:String;BeginX:=10;S:=IntToStr(X+20);X:=‘ObjectPascal’;MessageDlg(X,mtConfirmation,mbYesNoCancel,0);End;2.3運算和運算符
運算是對數(shù)據(jù)進(jìn)行加工處理的過程,描述各種不同運算的符號稱為運算符,而參與運算的數(shù)據(jù)稱為運算元。運算式是表示某個求值規(guī)則的運算公式,它由運算符和圓括號將常量、變數(shù)等運算元以合理的形式組合而成。運算式可以用來執(zhí)行運算、操作或測試數(shù)據(jù),每個運算式都會產(chǎn)生惟一的值。運算式的類型由運算符的類型決定。在ObjectPascal中有以下幾種運算符:算術(shù)運算符、位運算符、字串運算符、關(guān)係運算符、布爾運算符、集合運算符、指針運算符、類運算符和@運算符。本節(jié)介紹幾種常用的運算和運算符。2.3.1算術(shù)運算
算術(shù)運算的操作對象為整形或?qū)嵭停阈g(shù)運算符包括
+,-,*,/,div和
mod,詳細(xì)說明如下表2-8:
表2-8OOPPASCAL語言的算術(shù)運算符操作符操作運算元類型結(jié)果類型+加整形,實型整形,實型-減整形,實型整形,實型*乘整形,實型整形,實型/除整形,實型整形,實型Div整數(shù)除整形整形Mod取模整形整形
2.3.2布爾運算
布爾運算的操作對象的類型為布爾型,返回的結(jié)果值也是布爾類型。布爾運算符基本有四個,分別是
Not,And,Or,Xor,其詳細(xì)說明如表2-9:
表2-9OOPPASCAL語言的布爾運算符
操作符操作操作規(guī)則Not取反NotTrue=False;NotFalse=TrueAnd與(布爾乘)TrueAndTrue=True;AAndFalse=FalseOr或(布爾加)FalseOrFalse=False;AOrTrue=TrueXor異或AXorA=False;AXor(NotA)=True2.3.3邏輯運算
邏輯運算實現(xiàn)的是按位的運算,它的操作及其操作的結(jié)果均為整數(shù),邏輯運算的操作說明如下表2-10所示:
表2-10OOPPASCAL語言的邏輯運算符
操作符操作操作舉例Not按位取反Not001101=110010And按位與001101And100001=000001Or按位或001101Or100001=101101Xor按位異或001101Xor100001=101100Shl左移13(001101)Shl2=52Shr右移13(001101)Shr2=32.3.4指針運算指針運算符及其說明如下表2-11:
表2-11OOPPASCA語言的指針運算符
操作符操作運算元類型結(jié)果類型+加法字元指針、整數(shù)字元指針-減法字元指針、整數(shù)字元指針、整數(shù)∧取值指針指針基類型=相等指針布爾<>不等指針布爾2.3.5集合運算
集合運算是以集合類型作為運算元的,它的運算符及其說明如下表2-12:
表2-12OOPPASCAL語言的集合運算符
操作符操作結(jié)果類型+並集集合-差集集合*交集集合<=子集布爾>=父集布爾=相等布爾<>不等布爾In屬於布爾2.3.6關(guān)係運算
關(guān)係運算用於比較兩個運算元,其返回值的類型是布爾型。關(guān)係運算符的操作說明如下表2-13:
表2-13OOPPASCAL語言的關(guān)係運算符
操作符操作運算元類型=相等簡單類型、類、類引用、介面、字串、緊縮字串<>不等簡單類型、類、類引用、介面、字串、緊縮字串<小於簡單類型、字串、緊縮字串、PChar>大於簡單類型、字串、緊縮字串、PChar<=不大於簡單類型、字串、緊縮字串、PChar>=不小於簡單類型、字串、緊縮字串、PChar2.3.7字串運算
操作符
+可以用作算術(shù)運算符、指針運算符和集合運算符,還可以用作表示把兩個字串類型的運算元相連接,即連接兩個字串。例如:
‘My’+‘String’=‘MyString’;
2.3.8取址運算
取址運算符@
,它返回變數(shù)、函數(shù)、過程或方法的地址。關(guān)於取址運算符@,其原則說明如下:如果
X是變數(shù),則
@X
返回
X的地址;在默認(rèn)的編譯指示{$T-}下,@X的類型為
Pointer;而在{$T+}狀態(tài),
@X的類型為
^T,其中的
T為
X的類型。如果F是一個過程或函數(shù),@F返回F的入口點,它的類型一定是Pointer。
2.3.9運算符的優(yōu)先順序在運算式中有多種運算符時,要注意各個操作符之間的優(yōu)先順序。通常情況下,先作括弧裏的運算,再從優(yōu)先級由高到低的次序來做,同等優(yōu)先順序的,按從左到右出現(xiàn)的順序處理。所以,在不清楚具體優(yōu)先順序的情形下,可以使用括弧,來確保程式的正確性。
表2-14OOPPASCAL中運算符的優(yōu)先順序
優(yōu)先順序操作符最高@,Not次高*,/,Div,Mod,And,Shl,Shr,As次低+,-
,Or,Xor最低=,<>,<,>,<=,>=,In,Is2.4常量與變數(shù)
定義常量的目的基本上有兩種:其一,在程式中經(jīng)常用到某些常數(shù)值,為了書寫方便及減少頻繁輸入造成錯誤,可把它定義為一個常量;其二,就是為了便於程式的閱讀或修改,定義常量可使程式易於維護(hù)。
1.常量的聲明常量可以在程式、單元、過程或函數(shù)的聲明部分進(jìn)行聲明,常量在說明時就被賦予了一個值,在程式執(zhí)行過程中是不可改變的。
聲明常量的一般形式如下:Const
常量名1=常量值1;
常量名2=常量值2;
……
在程式設(shè)計中常用到兩種形式的數(shù)據(jù),一種是在程式執(zhí)行過程中其值保持不變的數(shù)據(jù),稱為常量;另一種是在程式執(zhí)行過程中其值可以改變的數(shù)據(jù),稱為變數(shù)。2.4.1常量2.類型常量類型常量主要是不能修改的只讀變數(shù)。在聲明常量時,直接聲明其常量類型。類型常量的聲明方法如下:
Const
常量名1:類型名=常量值1;
常量名2:類型名=常量值2;
……舉例如下:ConstWeekDays:Integer=7;DayInYear:Integer=365;2.4.1常量(2)2.4.2變數(shù)變數(shù)實際就是程式員在內(nèi)存中指定的一個帶有識別字的地址空間,變數(shù)名則是這個指定記憶體地址的識別字,而變數(shù)的類型則確定了這個記憶體地址中存的值什麼樣是合法的或可能的,並且該記憶體地址裏的值是可以改變的。1.變數(shù)的聲明變數(shù)在使用之前,也必須先進(jìn)行聲明。聲明變數(shù)的保留字為Var,其聲明的一般形式如下:
Var
變數(shù)名1:類型名1;變數(shù)名2:類型名2;
……聲明變數(shù)舉例如下:
VarGz_Sum:Real;Value_1,Value_2:Integer;StrTitle:String;X:Variant;2.4.2變數(shù)2.變數(shù)的作用域變數(shù)的作用域是指它的可見性和生命期??梢娦允侵缚梢栽L問該變數(shù)的區(qū)域,生命期是指一個變數(shù)可以保持它的值和可見性的時間。在
Delphi7中,變數(shù)可以在程式、單元、函數(shù)或過程的聲明部分進(jìn)行聲明,聲明的位置則決定了變數(shù)的作用域。
聲明在過程或函數(shù)內(nèi)部的變數(shù)有時叫做局部變數(shù),而在應(yīng)用程式開始聲明的變數(shù)叫做全局變數(shù)。全局變數(shù)可以在聲明時對它進(jìn)行初始化,格式為:
var<變數(shù)名>:<類型名>=<常量運算式>
其中常量運算式的值必須與變數(shù)定義的類型相相容。2.4.2變數(shù)3.變數(shù)的強(qiáng)制類型轉(zhuǎn)換由於
Delphi的編譯器對各種類型的參數(shù)檢查是非常嚴(yán)格的,類型不匹配則通不過編譯器的編譯檢查,為通過編譯器的編譯檢查,經(jīng)常需要把一個變數(shù)的類型轉(zhuǎn)換為另一個變數(shù)類型。強(qiáng)制類型轉(zhuǎn)換就是一種技術(shù),通過它能使編譯器把一種類型的變數(shù)當(dāng)作另一種類型變數(shù),由此來通過編譯器的編譯檢查。注:強(qiáng)制類型轉(zhuǎn)換要求兩種類型在內(nèi)存中存儲空間的大小必須相同,整數(shù)類型變數(shù)與實數(shù)類型之間不能進(jìn)行這樣的轉(zhuǎn)換,應(yīng)該通過預(yù)定義的標(biāo)準(zhǔn)函數(shù),如:Trunc()或Round()函數(shù)。
2.5OOPPASCAL中的語句
ObjectPascal中的語句可分為簡單語句和結(jié)構(gòu)語句兩種。簡單語句有賦值語句、空語句、跳轉(zhuǎn)語句(Goto語句)和過程語句;結(jié)構(gòu)語句有複合語句、條件語句、迴圈語句和
開域語句(With語句)。
語句的書寫規(guī)則⑴可以把多個語句放在一個程式行中,也可把一個語句分多行書寫⑵每個語句都必須以分號“;”結(jié)束。
⑶對於較為複雜的程式常用到複合語句,複合語句是指將多個語句用begin和end兩個保留字包圍起來,格式如下:begin<語句1>;…;<語句n>;end;複合語句在ObjectPascal中被視為一個語句,因此在end後必須2.5.1簡單語句1.賦值語句賦值語句用來顯式地給變數(shù)賦值,即用運算式的值取代變數(shù)的當(dāng)前值。賦值語句的一般形式如下:變數(shù)名
:=運算式
;如:MyNumber_1:=100;
2.空語句在
ObjectPascal中允許使用空語句,所謂空語句就是語句中沒有任何運算式的值和賦值符號,只有一個分號。
可參見P57例題。2.5.1簡單語句(2)
3.Goto語句和語句標(biāo)號
Goto語句可以將程式的執(zhí)行流程轉(zhuǎn)移到程式指定的某個位置,即轉(zhuǎn)移到其他語句處再繼續(xù)執(zhí)行。Goto語句必須借助語句標(biāo)號才可能使程式知道轉(zhuǎn)移的位置,ObjectPascal可以使用標(biāo)號(Labels)來標(biāo)識語句以提供Goto語句將跳轉(zhuǎn)的確切位置。Goto語句的一般形式如下:
Goto語句標(biāo)號;注:Goto語句所轉(zhuǎn)向的語句標(biāo)號必須和該語句同處於相同的程式段內(nèi),不能轉(zhuǎn)入或轉(zhuǎn)出一個過程或函數(shù),也不能轉(zhuǎn)入該程式段內(nèi)其他的迴圈結(jié)構(gòu)。
2.5.2複合語句
複合語句由若干個簡單語句或結(jié)構(gòu)語句構(gòu)成,在這些語句前後加入保留字Begin和End即可。其一般形式如下:
Begin
語句1;語句2;
……
語句n;
End;例如:把兩個變數(shù)的值進(jìn)行交換的複合語句如下:
BeginX:=Number_1;
Number_1:=Number_2;
Number_2:=X;
End;
2.5.3條件語句(1)
ObjectPascal語言提供的條件語句有兩種,即
If語句和
Case語句。
1.If語句
If語句需要計算一個運算式,並根據(jù)計算結(jié)果決定程式流程。If保留字後的運算式的值必須是一個布爾類型(Boolean)。其語句的一般形式如下:If<logicalexpression>Then<statement>;或語法中帶有Else子句,如:If<logicalexpression>Then<statement>Else<statement>;其中,<logicalexpression>是一個邏輯型的運算式,其值為Boolean類型。當(dāng)值為真(True)時,程式執(zhí)行保留字Then後的<statement>;當(dāng)值為假(False)時,程式則執(zhí)行保留字Else後的<statement>。兩種形式中的<statement>即可以是單語句也可以是複合語句。最後的“;”號代表著If語句的結(jié)束,所以在保留字Else之前不應(yīng)加有“;”號。
2.5.3條件語句(2)2.Case語句
Case語句的一般語法形式為:
Case選擇器運算式Of
情況常量表1:語句1;情況常量表2:語句2;
……
情況常量表n:語句n;
Else
語句
End;其中:選擇器運算式的值必須為順序類型(如整型、字元型、布爾型和子界型等)。情況常量列表中的值應(yīng)是選擇器運算式可能具有的值。由每一個情況常量列表列出的值在Case語句中必須是唯一的,相互間值的範(fàn)圍也不允許有重疊部分。Else提供了如果所列出的情況都不出現(xiàn),應(yīng)執(zhí)行的語句,也就是說程式只能選擇一個執(zhí)行結(jié)果。根據(jù)需要也可以省略掉Else部分和它後面的語句。2.5.3條件語句(3)條件語句舉例:以例題2.2為例,用Case語句來代替If語句的實現(xiàn)。程式代碼如下:
CaseMarkOf90..100:ShowMessage('優(yōu)');80..89:ShowMessage('良');70..79:ShowMessage('中');60..69:ShowMessage('及格');0..59:ShowMessage('不及格');ElseShowMessage('輸入超出範(fàn)圍');End;2.5.4迴圈語句(1)
在編程過程中遇到的好多問題是重複單調(diào)的。比如從1加到100,問題雖然簡單卻要重複操作。我們可以把這些重複的動作交給電腦去完成。引例:求1+2+3+……+100的值。
OOPPascal語言提供了三種迴圈語句,每一種可分別適合某一特定情況。這三種迴圈分別是:Repeat、While和For迴圈語句。
迴圈結(jié)構(gòu)只關(guān)心下麵的三個要素:進(jìn)入迴圈結(jié)構(gòu)的條件是什麼?在什麼情況下結(jié)束迴圈過程?循環(huán)體內(nèi)部要完成的操作及在循環(huán)體內(nèi)如何改變迴圈條件?
2.5.4迴圈語句(2)
1.Repeat迴圈語句
Repeat迴圈語句是以Repeat開始,以Until結(jié)束。它可以重複執(zhí)行Repeat和Until之間的語句,直至Until後的運算式為真,則退出迴圈執(zhí)行其後的語句。Repeat迴圈語句的一般形式為:
Repeat
語句1;語句2;
……
語句n;
Until<邏輯運算式>;循環(huán)體2.5.4迴圈語句(3)
2.While迴圈語句While迴圈語句在多數(shù)場合下都可以代替Repeat迴圈語句,但與Repeat迴圈語句不同的是,它的布爾類型的運算式在While之後,即在迴圈剛開始處,所以While迴圈是先進(jìn)行判斷,再執(zhí)行迴圈語句。While迴圈語句的一般形式為:
While<邏輯運算式>Do<循環(huán)體語句>
其中,運算式必須是一個具有Boolean類型值的運算式。如果運算式的值為真(True)則執(zhí)行
Do後的循環(huán)體語句;如果運算式的值為假(False),則不執(zhí)行
While循環(huán)體而直接跳到
While循環(huán)體後再執(zhí)行其他語句。Do後的循環(huán)體語句,可以是簡單語句、複合語句或其他結(jié)構(gòu)語句。
2.5.4迴圈語句(4)
3.
For迴圈語句
For迴圈語句可以執(zhí)行一定的次數(shù),它需要一個迴圈變數(shù)來控制迴圈的次數(shù)。For迴圈語句有兩種形式:增量迴圈和減量迴圈。
增量迴圈
For語句的一般形式為:
For迴圈變數(shù)名:=初值
To終值
Do語句
減量迴圈
For語句的一般形式為:
For迴圈變數(shù)名:=初值
DownTo終值
Do語句其中,迴圈變數(shù)必須是一個順序類型的局部變數(shù),也不允許帶有限定符。初值和終值的類型應(yīng)和迴圈變數(shù)的類型相容。循環(huán)體中的語句可以是簡單語句、複合語句或結(jié)構(gòu)語句。
2.5.4迴圈語句(5)
3.
For迴圈語句
For迴圈語句可以執(zhí)行一定的次數(shù),它需要一個迴圈變數(shù)來控制迴圈的次數(shù)。For迴圈語句有兩種形式:增量迴圈和減量迴圈。
增量迴圈
For語句的一般形式為:
For迴圈變數(shù)名:=初值
To終值
Do語句
減量迴圈
For語句的一般形式為:
For迴圈變數(shù)名:=初值
DownTo終值
Do語句其中,迴圈變數(shù)必須是一個順序類型的局部變數(shù),也不允許帶有限定符。初值和終值的類型應(yīng)和迴圈變數(shù)的類型相容。循環(huán)體中的語句可以是簡單語句、複合語句或結(jié)構(gòu)語句。
2.5.4迴圈語句(6)
三種迴圈的比較以上三種迴圈都可用來實現(xiàn)迴圈,它們的使用特點歸結(jié)為:如果知道迴圈執(zhí)行多少次的話,可以使用For迴圈語句結(jié)構(gòu)。For迴圈執(zhí)行速度快,效率高。如果不知道迴圈要執(zhí)行多少次,但至少會執(zhí)行一次的話,選用Repeat…Until迴圈語句結(jié)構(gòu)比較合適;當(dāng)認(rèn)為程式可能一次都不執(zhí)行的話,最好選用While…Do迴圈語句結(jié)構(gòu)。Break()過程和Continue()過程在While、Repeat或For三種的循環(huán)體中,可調(diào)用Break()過程,使得程式的執(zhí)行流程發(fā)生改變,即在循環(huán)體中當(dāng)某個條件成立時跳出循環(huán)體。如果想跳過循環(huán)體中部分代碼重新開始下一次迴圈,調(diào)用Continue()過程。
2.6過程和函數(shù)一般來說每個程式都由若干個主要的任務(wù)構(gòu)成,每個主要任務(wù)又可分成若干個子任務(wù),這樣逐層細(xì)化,一直細(xì)化到每個子任務(wù)都只完成一個簡單的基本功能為止。
為此,可以把某些功能完全相同或非常相近的子任務(wù)單獨提取出來,劃分成程式的基本單元,其他程式可以重複調(diào)用。這樣做提高了編程效率,是程式更加規(guī)範(fàn)化,也減少了代碼的出錯率。
函數(shù)和過程就是OOPPascal語言中的兩種子程式,它們可以隨時被調(diào)用。函數(shù)在執(zhí)行時將返回一個值,而過程執(zhí)行時不返回任何值。
2.6.1過程的聲明過程聲明的一般語法形式為:
procedure過程名(形式參數(shù)表);指令符;局部聲明:begin執(zhí)行語句
……end;在Delphi7的單元中聲明過程或函數(shù)時,只需要在單元內(nèi)聲明過程或函數(shù)頭部(可在單元的介面部分,也可在單元的實現(xiàn)部分),然後把游標(biāo)定位在頭部內(nèi),點擊滑鼠右鍵彈出快捷菜單,在該菜單中單擊【CompleteClassatCursor】菜單項即可。Delphi7會幫助完成自定義過程、函數(shù)或類的輸入。2.6.2函數(shù)的聲明函數(shù)聲明的一般語法形式為:
Function函數(shù)名(形式參數(shù)表):返回類型;指令符;局部聲明部分begin執(zhí)行語句……end;需要特別注意的是:函數(shù)必須有返回值,所以在函數(shù)聲明時要給出返回值的類型;而過程沒有返回值,聲明時也就沒有返回類型。
2.6.3過程和函數(shù)的調(diào)用1.過程調(diào)用調(diào)用過程的一般形式如下:過程名(實參數(shù)表);如果聲明的過程沒有形參,調(diào)用時便可以省略後面的實參表,其形式如下:過程名;2.函數(shù)的調(diào)用調(diào)用函數(shù)的一般形式如下:函數(shù)名(實參數(shù)表);在調(diào)用過程和函數(shù)時要注意:在過程與函數(shù)聲明的作用域內(nèi)才可調(diào)用該過程或函數(shù);調(diào)用過程或函數(shù)時還要注意有參數(shù)時,參數(shù)的類型一定要保持相同。2.6.4參數(shù)傳遞方式在上面的調(diào)用過程或函數(shù)時,程式將把實參傳遞給形參,按傳遞方式的不同,OOPPascal中過程和函數(shù)的參數(shù)可分為:值參數(shù)、常量參數(shù)、變數(shù)參數(shù)和外部參數(shù)。1.值參數(shù)如果形式參數(shù)表中的參數(shù)前面沒有Const、Var或Out聲明的參數(shù),該參數(shù)則為值參數(shù)類型。
在OOPPascal中值參數(shù)是按“值傳遞”方式將實參的值傳送給形參的。值傳遞指的是在調(diào)用子過程語句被執(zhí)行時,帶實參值的調(diào)用語句將實參複製給子過程中的形參。所以要求實參的個數(shù)、數(shù)據(jù)類型與形參個數(shù)、數(shù)據(jù)類型完全匹配。2.6.4參數(shù)傳遞方式2.常量參數(shù)如果形式參數(shù)表中的參數(shù)前面有
Const聲明的參數(shù),該形式參數(shù)則為常量參數(shù)。常量參數(shù)在過程或函數(shù)中是絕對不允許改變的參數(shù)值,也不能再作為實參傳送給該過程或函數(shù)體中另一個過程或函數(shù)的變數(shù)形參。如果在一個過程或函數(shù)中其形參在執(zhí)行過程中不應(yīng)該改變其數(shù)值的話,那麼就應(yīng)該使用一個常量參數(shù)。這樣可以保護(hù)形參而杜絕發(fā)生意外的情況。Delphi7系統(tǒng)
在
Sysutils中聲明的字串比較函數(shù),如
CompareStr()函數(shù)中的形參就是常量參數(shù),它的首部如下:
FunctionCompareStr(ConstS1,S2:String):Integer;2.6.4參數(shù)傳遞方式3.變數(shù)參數(shù)如果形式參數(shù)表中的參數(shù)前面有
Var聲明的參數(shù),該形式參數(shù)則為變數(shù)參數(shù)類型。變數(shù)參數(shù)的參數(shù)傳遞方式為“地址傳遞”方式。地址傳遞指的是調(diào)用過程語句被執(zhí)行時,過程中的形參直接引用了調(diào)用語句中的實參。所以形參與實參實質(zhì)上是用同一個存儲單元。如果在子過程中修改了形參值,就會直接體現(xiàn)在實參上,在某些情況下,會造成負(fù)面影響。2.6.4參數(shù)傳遞方式4.外部參數(shù)如果形式參數(shù)表中的參數(shù)前面有
Out聲明的參數(shù),該形式參數(shù)則為外部參數(shù)類型。外部參數(shù)與變數(shù)參數(shù)一樣在實參與形參之間的值傳遞是按地址傳遞方式進(jìn)行的。但是使用時與變數(shù)參數(shù)有很大的區(qū)別。當(dāng)調(diào)用含有外部參數(shù)的過程或函數(shù)時,所引用的實參(變數(shù))的初始值將被拋棄,該變數(shù)僅被用來作為一個容器來存儲過程或函數(shù)執(zhí)行的中間結(jié)果。在編寫應(yīng)用象COM、CORBA這樣的分佈式對象模型的程式中,會經(jīng)常使用外部參數(shù)。
第3章可視化組件的應(yīng)用
內(nèi)容提要
窗體與組件常用組件的使用3.1窗體與組件在Windows環(huán)境中,人機(jī)交互主要是在一些窗體和對話框中進(jìn)行的。在Delphi中,窗體指的就是窗口和對話框,進(jìn)行可視化程式設(shè)計一般就是從窗體開始並在窗體中完成的。窗體本身就是一個組件,它與其他組件不同的是:窗體像一個可以放置東西的容器,可以根據(jù)任務(wù)的需要在其上放置各種各樣的組件。窗體與組件的關(guān)係參見圖3-1。3.1.1窗體與組件的關(guān)係圖3-1窗體與組件3.1.2組件的公共屬性和事件
不同的組件具有不同的屬性、方法和事件,但有些屬性和事件是公共的,也就是它們雖然出現(xiàn)在不同的組件中但含義和使用方法相同。
1.常用的公共屬性(1)Action屬性。用來設(shè)置與菜單項相關(guān)的動作對象,可以通過動作列表編輯器來設(shè)置。(2)Align屬性。用於決定組件在窗體或上一級組件中的位置和尺寸。(3)Autosize屬性。用於決定組件是否隨其所包含內(nèi)容的大小而調(diào)整尺寸。(4)Caption屬性。用來設(shè)置組件的標(biāo)題。(5)Color屬性。用來設(shè)置組件的顏色。
(6)Cursor
屬性。用於設(shè)定當(dāng)滑鼠的游標(biāo)落入該組件的區(qū)域時滑鼠游標(biāo)的形狀。(7)Font
屬性。用於設(shè)置組件上所顯示的文字的字體。(8)Height
屬性和Width屬性。用於設(shè)置組件的高度和寬度。(9)Hint
屬性和ShowHint屬性。Hint屬性用於設(shè)置滑鼠在組件上停留是顯示提示資訊的內(nèi)容;ShowHint屬性用於指定滑鼠在該組件上停留時是否顯示提示資訊。(10)Left
屬性和Top屬性。指定該組件在窗體中的左上頂點的座標(biāo)值。(11)Name
屬性。這是每個組件都具有的屬性,該屬性用於指明組件對象的名字,通過組件對象的名字來使用組件。(12)ParentColor
屬性。
ParentFont屬性和ParentShowHint屬性。當(dāng)這些屬性值設(shè)置為Ture時,組件使用它的上一級組件的同一屬性的設(shè)置植,這樣可以使程式保持一致的風(fēng)格。(13)PopUpMenu
屬性。用於指定當(dāng)右擊該組件時彈出時的彈出式菜單PopUpMenu的名字,此時這個彈出式菜單應(yīng)該已經(jīng)存在,PopUpMenu本身也是一個組件。(14)Text屬性。 用於指定文本類組件顯示的文本,類似於Caption屬性。(15)Visible屬性。決定組件是否可見。當(dāng)設(shè)置為True時,在運行時可以看到該組件;設(shè)為False時運行時不可見。2.常用的公共事件
⑴
onClick事件?;笞箧I單擊某組件時觸發(fā)該事件。⑵
onDblClick事件?;笞箧I雙擊某組件時觸發(fā)該事件。⑶
OnEnter事件和OnExit事件。
當(dāng)通過滑鼠單擊組件或Tab鍵跳轉(zhuǎn)到組件上時,該組件獲得焦點,此時該組件的OnEnter事件被觸發(fā);該組件由焦點狀態(tài)轉(zhuǎn)為非焦點狀態(tài)時將觸發(fā)OnExit事件。⑷
OnMouseDown事件、OnMouseMove事件和OnMouseUp事件這是回應(yīng)滑鼠的一組事件。其中當(dāng)滑鼠在組件上被按下時觸發(fā)OnMouseDown事件;當(dāng)滑鼠在組件的顯示區(qū)域內(nèi)移動時觸發(fā)OnMouseMove事件;當(dāng)釋放了在組件區(qū)域內(nèi)按下的滑鼠鍵時觸發(fā)OnMouseUp事件。這三個事件不僅可以判斷滑鼠按下的是左、中、右鍵中的哪一個鍵,還可以判斷是否同時按下了Alt、Shift或Ctrl鍵。具體應(yīng)用請看下麵章節(jié)的組件介紹。⑸OnKeyDown事件、OnKeyUp事件和OnKePress事件這是回應(yīng)鍵盤的一組事件。組件處於啟動的焦點狀態(tài)時,按下了鍵盤上的鍵時將觸發(fā)OnKeyDown事件,返回的是按下鍵的鍵值,可以是複合鍵;釋放一個按下的鍵時將觸發(fā)OnKeyUp事件;鍵盤上的鍵一次完整地按下和釋放操作將觸發(fā)OnKeyPress事件。
3.2常用組件的使用Delphi封裝了大量的可視化組件,使程式員能夠在拖拖放放中輕鬆地設(shè)計程式介面。Delphi中提供的【Standard】、【Additional】和【W(wǎng)in32】三個標(biāo)籤頁放置基本組件。這些組件都是任何程式設(shè)計必不可少的。本節(jié)將詳細(xì)介紹常用組件的使用方法。3.2.1Label組件
Label(標(biāo)籤)組件在Standard標(biāo)籤頁中,主要用於在窗體中顯示提示資訊,常與Edit組件一起使用,是顯示文本的主要組件。其特殊屬性有:1.Autosize屬性 該屬性用來判斷Label(標(biāo)籤)組件是否隨Caption屬性值自動調(diào)整大小。如果該屬性值為True,則Label的長度隨著Caption屬性值自動調(diào)整大?。蝗绻搶傩灾禐镕alse,則Label保持設(shè)計時定義的大小不變,此時,若標(biāo)題太長,則只能顯示部分內(nèi)容。2.Caption屬性 該屬性用來設(shè)置在標(biāo)籤上顯示的文本。3.Wordwrap該屬性 該屬性用於設(shè)置Caption屬性的顯示方式。缺省為False,表示標(biāo)籤上的標(biāo)題(提示資訊)不能自動換行;如果該屬性為True,則標(biāo)籤將在垂直方向變化大小,以使其與顯示的文本相適應(yīng),而水準(zhǔn)方向的大小不變。但若想使該屬性起作用,還必須將Autosize屬性設(shè)為True。4.Layout該屬性 該屬性可以改變文本在標(biāo)籤中的位置。5.Transparent該屬性 該屬性決定標(biāo)籤的背景是否透明。其值為True時,透明,即標(biāo)籤不會擋住它下麵的組件。默認(rèn)值為False。3.2.2Edit組件
Edit組件在Standard標(biāo)籤頁中,也稱編輯框組件是Windows程式中常用的組件,它主要用於輸入單行文字。Edit組件的常用屬性有:1.AutoSelect屬性
該屬性確定當(dāng)編輯框獲得輸入焦點時,編輯框中的文字是否自動被選中。2.AutoSize屬性該屬性確定編輯框是否隨字體變化而自動變動尺寸,缺省為True。3.BorderStyle屬性該屬性確定Edit控件是否有邊框。4.CharCase屬性該屬性設(shè)置文本框內(nèi)字元的大小寫,其值為:ecLowerCase,全部轉(zhuǎn)換為小寫;ecNormal,不轉(zhuǎn)換;ecUpperCase,全部轉(zhuǎn)換為大寫。5.HideSelection屬性該屬性決定當(dāng)輸入焦點從Tmemo組件移走後,編輯框內(nèi)原來被選中的文本是否依然保持選中狀態(tài)。其設(shè)置為True,不保持;其值為False,保持。該屬性的默認(rèn)值為True。6.MaxLength屬性該屬性確定編輯框最多可以輸入的字元數(shù),缺省值為0,表示可以輸入任意多的字元;如果該屬性不為0,只能向編輯框中輸入小於或等於設(shè)定值的字元數(shù)。7.Modified屬性該屬性確定編輯框中的內(nèi)容自建立以來或者M(jìn)odified屬性最後一次被設(shè)置為False之後是否被修改。8.PasswordChar屬性該屬性在一些編輯框組件如TMaskEdit、TDBEdit中都有。缺省時該屬性為#0,即沒有掩碼。用戶可以自己設(shè)置一個掩碼,如‘*’,則用戶在編輯框中輸入的字元都將以‘*’字元顯示,而隱藏真實的字元。9.Text屬性該屬性用於顯示和保存編輯框中的內(nèi)容。10.ReadOnly屬性該屬性確定程式運行時,用戶是否可以改變編輯框中的內(nèi)容。若為True,表示編輯框是只讀的,其內(nèi)容不可以編輯修改。11.SelLength屬性該屬性可以返回在編輯框中被選中的文本的長度。12.SelStart該屬性該屬性確定在編輯框中被選中文本的起始位置(第一個字元的序號為0)。13.SelText屬性該屬性用來設(shè)置或指示選中的文本。
Edit組件的主要方法方法說明Clear使用該方法可以清除文本框中的文本內(nèi)容。CanFocus該方法用來測試Memo控件是否可以接受焦點。如果其值為False,則控件不能接受焦點;反之可以接受焦點。ClearSelection該方法將刪除Memo框中被選中的文本。如果在Memo控件中沒有被選擇的內(nèi)容,那麼該方法不刪除任何東西。CopyToClipboard使用該方法可以將文本框中選中的內(nèi)容複製到剪切板中。CutToClipboard使用該方法可以將文本框中選中的內(nèi)容剪切到剪切板中。PasteFromClipboard使用該方法可以將剪切板中的內(nèi)容粘貼到文本框中。SelectAll使用該方法將選中文本框中的所有內(nèi)容。
Edit組件常用的幾個事件有:OnChange、OnKeyPress、OnEnter事件。Edit組件的常用事件
事件說明OnChange當(dāng)編輯框中的內(nèi)容發(fā)生變化時,觸發(fā)該事件,它是Edit中最常用,也是最有用的事件之一。OnKeyPress當(dāng)按下一個按鍵時,觸發(fā)該事件。OnEnter編輯框獲得輸入焦點時,觸發(fā)該事件。3.2.3Memo組件Memo組件在Standard標(biāo)籤頁中,Memo組件為用戶提供了一種處理多行文本的方法,還可用它快速地閱讀檔中的數(shù)據(jù),而且讀取和保存文本的最大長度可達(dá)255KB。
Memo組件的屬性
Memo組件的屬性、方法和事件與Edit組件大致相同。其特有的幾個屬性有:1.Lines屬性按行處理文本。2.ScrollBars屬性該屬性用來設(shè)置備註框是否出現(xiàn)滾動條以及滾動條的種類。3.WordWrap屬性該屬性用來決定當(dāng)輸入的文本到達(dá)右邊界時是否插入軟回車,以便換到下一行再輸入。3.2.3Memo組件Memo組件的方法⑴
使用剪貼板(Clipboard)
Memo組件同Edit組件一樣,也可使用CutToClipboard、CopyToClipboard和PastFromClipboar這三種方法,實現(xiàn)將Memo組件中被選擇文本剪切或複製到剪貼板上,以及將剪切板上的內(nèi)容粘貼到Memo組件中。 將Memo中的選中文本剪切到剪貼板的語句如下:
ifMemo1.SelLength>0then Memo1.CutToClipboard;2.文本的添加(Add方法)
利用Lines屬性,可以增加、刪除一行文本,也可以移動一行文本。下麵的代碼將文本添加到Memo中的最後一行:
Memo1.Lines.Add(‘在Memo1的最後添加一行文本’);3.檔的保存和裝載(LoadFile方法、SaveToFile方法)
Memo1.Lines.LoadFile(Opendialog1.FileName)
可以將Memo組件中的文本保存成文本文件,也可以將文本檔裝載到Memo中。這需要配合使用SaveDialog組件和OpenDialog組件。將Memo中的文本保存為文本檔的語句為:
ifSaveDialog1.Executethen//打開保存
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
以上語句先打開保存對話框,然後將Memo中的文本保存對話框到一個檔中,檔案名為我們在SaveDialog中輸入的文本。在Memo中裝載文本檔的語句為:
ifOpendialog1.ExecutethenMemol.Lines.LoadFile(Opendialogl.FileName);
3.2.4MaskEdit組件
MaskEdit組件在Additional標(biāo)籤頁中,MaskEdit組件(也稱掩碼編輯框)是一種特殊的編輯框,它的主要屬性是EditMask。使用它可以設(shè)計出許多複雜的輸入格式。在選用MaskEdit之後,需要為它設(shè)計一個輸入格式。其格式輸入符參見P99頁表3-6。MaskEdit組件輸入格式符格式符意義l和Ll表示該位置只可能是一個字母,可以用游標(biāo)鍵跳過它,但是不能是其他類型的字元。L表示該位置必須是一個字元。a和Aa表示該位置只可能是一個字母或數(shù)字字元。A表示該位置必須有一個字母或數(shù)字字元。c和Cc表示該位置只可能是一個字母,C表示該位置必須有一個字母。9和09表示該位置只可能是一個數(shù)字,0表示該位置必須有一個數(shù)字?!春汀?lt;格式符表示隨後的字母均以小寫的形式顯示,直到遇到一個>格式字元或<>格式符。>格式符則和<正好相反?!础当硎静蛔鞔笮戅D(zhuǎn)換,以輸入時的形式為準(zhǔn)。\表示該格式符之後的那個掩碼格式符將作為數(shù)據(jù)中的普通字元對待。如果想在數(shù)據(jù)中放進(jìn)一個掩碼格式符時,應(yīng)該在這個格式符前放一個\符號。如\A等等。#表示該位置可能是一個數(shù)字或正符號。!如有!表示數(shù)據(jù)前的空格將不被保存在數(shù)據(jù)中,沒有!則數(shù)據(jù)後的空格不被保存。!格式符只能放在掩碼格式符的第一個字元處。;和/標(biāo)準(zhǔn)的分隔符號,可作為數(shù)據(jù)的一部分。其中/在顯示時為‘-’而非/。3.2.5RichEdit組件RichEdit組件在Win32標(biāo)籤頁中,RichEdit組件和Memo組件非常相似,但RichEdit組件功能更強(qiáng)大,能夠?qū)ξ淖诌M(jìn)行格式化,如設(shè)置字體、顏色等,可以插入OLE文檔,支持滑鼠拖放,還可以對文本進(jìn)行搜索和列印。一般用RichEdit組件製作文本編輯器。具體應(yīng)用與例3-4類同請參閱例3-4的介面及代碼部分。3.2.6ListBox組件ListBox(列表框)組件在Standard標(biāo)籤頁中,ListBox通常用來對一組資訊進(jìn)行列表。列表框和組合框(ComboBox)的功能類似,只不過組合框一次只能顯示一條資訊,要流覽全部資訊,需要按下組合框旁邊的三角按鈕。在列表框中的專案列表是Items屬性的值,可使用Add、Insert、Delete方法對列表框中的專案進(jìn)行增加、插入和刪除操作。ListBox組件的主要屬性有:
1.Canvas
該屬性只有在列表框風(fēng)格為自繪時才有用,用於在列表框?qū)0干侠L製圖形。
2.Colums
該屬性用來控制列表框中的專案需顯示成幾列。默認(rèn)是0,表示以單列顯示。
3.Height
該屬性決定列表框在垂直方向的高度。
3.2.6ListBox組件
4.ItemIndex屬性該屬性指出在列表框中被選中的哪個專案的索引號。5.Items屬性該屬性用來存放列表框中的列表項。6.MultiSelect屬性該屬性用來設(shè)置能否在列表框中選擇多個列表項,即是否允許多選。7.Selected屬性該屬性用來測試某個列表項是否被選中。8.Stored屬性該屬性決定是否自動地為用戶進(jìn)行排序。
3.2.6ListBox組件
ListBox組件的常用方法Clear方法:該方法清除在列表框中的所有專案。Add方法:可在運行時使用該方法為列表框添加新專案。Delete方法:可在運行時使用該方法刪除列表框中的專案。Insert方法:可在運行時使用該方法為列表框插入新專案。ScreenToClient方法:該方法返回列表框在螢?zāi)簧系漠?dāng)前位置。
ClearSelection方法:該方法的作用是清除列表框中所有被選中的選項。CopySelection方法:該方法用來把列表框中的所有選中的列表項複製到另一個列表框中。ListBox組件的事件OnDrawItem事件:當(dāng)列表框中的內(nèi)容重新顯示時,該事件發(fā)生。比如,當(dāng)用戶選擇了列表框中的專案,系統(tǒng)需對選擇的專案反白顯示,此時就觸發(fā)OnDrawItem事件。但是該事件僅當(dāng)Style屬性值為IbOwnerDrawFixed或者LbOwnerVariable時才會發(fā)生。OnEnter事件:當(dāng)ListBox組件成為當(dāng)前列表框時,該事件發(fā)生。OnMeasureItem事件:不管何時應(yīng)用程式需重新顯示在列表中的專案時,該事件發(fā)生。在事件發(fā)生後,它將測出需重畫區(qū)域的大小參數(shù)傳給OnDrawItem事件,該事件重新顯示給定的區(qū)域。3.2.7ComboBox組件ComboBox組件在Standard標(biāo)籤頁中,稱為組合框。它是設(shè)計Windows應(yīng)用程式時使用較多的組件。它彙集了列表框和編輯框的功能,使用戶可從下拉列表中選擇數(shù)據(jù)或者直接向組合框中輸入數(shù)據(jù)。
ComboBox組件的屬性
1.Style屬性該屬性用來設(shè)置或返回組合框的風(fēng)格。
2.Text屬性該屬性用於設(shè)置或返回組合框中當(dāng)前顯示出來的文本值。
3.ItemIndex屬性該屬性指定組合框中被選擇的專案。
4.SelStart屬性該屬性確定組合框中所選文本的開始位置。
5.DropDownCount屬性該屬性控制組合框被下拉時彈出的專案條數(shù)。超出該屬性規(guī)定的專案數(shù)時,自動出現(xiàn)垂直滾動條。
ComboBox組件的常用方法
ComboBox組件的常用方法與ListBox組件的相同,其列表項也是由Items屬性來控制。在程式中可以使用Add、Delete、Insert方法進(jìn)行專案的添加、刪除和插入操作等管理。3.2.8GroupBox組件GroupBox組件又稱為分組框組件,它在組件面板的Standard標(biāo)籤頁中。在該組件裏可以放置如RadioButton、CheckBox等組件。放進(jìn)去的組件將會自動成為一組。通過它的Caption屬性可以修改該組件的標(biāo)題。3.2.9RadilGroup組件
在對象查看器中單擊Items屬性旁邊的省略號,然後在彈出的【StringListEditor】對話框中添加項,每添加一行就會在RadioGroup組件中產(chǎn)生一個標(biāo)題為添加項文本內(nèi)容的RadioButton組件,添加完單擊OK按鈕。RadioGroup組件的屬性
1.Items屬性
Items屬性用於生成個單選按鈕。
2.ItemIndex屬性
ItemIndex屬性用於表明單選按鈕組中哪一項被選中了。若為-1(缺省值),表示沒有被選中的項;若為0,表示第一項被選中;若為1,表示第二項被選中;其他依次類推。3.2.10Button組件與BitBtn組件Button組件(按鈕)是Windows應(yīng)用程式介面中最常用、最簡單的組件之一。除此之外,Delphi還提供了一種位圖按鈕(BitBtn)。這種按鈕的不同之處在於按鈕上可以顯示位圖。Button組件的主要屬性
1.Caption屬性:標(biāo)題屬性。
2.Cancel屬性決定該按鈕是否為取消按鈕,默認(rèn)值為False。
3.Default屬性決定該按鈕是否為默認(rèn)按鈕,缺省值為False。Button組件的常用事件
OnClick事件:單擊事件,是TButton組件的最常用事件。
3.2.10Button組件與BitBtn組件BitBtn組件的主要屬性
1.Glyph屬性為按鈕指定一個位圖文件,顯示在按鈕的表面。
2.Kind屬性決定位圖按鈕的種類。位圖按鈕使用最多的屬性就是Kind。BitBtn組件的常用事件
OnClick事件:單擊事件,是TButton組件的最常用事件。3.2.11SpeedButton組件SpeedButton組件通常稱為快捷按鈕,在Additional標(biāo)籤頁中。此組件與位圖按鈕非常相似,同樣可以顯示圖像,它們的主要區(qū)別是:SpeedButton按鈕一般只顯示圖像不顯示文字,另外SpeedButton可以保持在單擊時被選中的狀態(tài),該組件在設(shè)計工具欄時使用。
SpeedButton組件的特殊屬性
1.AllowAllUp屬性該屬性為True,則表示允許一組中的所有快捷按鈕均為彈起狀態(tài)。如果設(shè)置為False,則表示某組快捷按鈕中至少有一個不能彈起。
2.Down屬性該屬性用於設(shè)置按鈕的狀態(tài),其值為True,表示按鈕處於選中狀態(tài)。默認(rèn)值為False。
3.Flat屬性該屬性判斷按鈕是否被選中。其值為True則表示按鈕在非選定狀態(tài)下沒有邊框,只有在選中的狀態(tài)下才有邊框。
4.GroupIndex屬性當(dāng)需要將幾個快捷按鈕合成一組時,需要用GroupIndex屬性設(shè)置。
5.Cursor屬性該屬性用於設(shè)置滑鼠的形狀,可供選擇的形狀很多,不同的形狀可增添程式的趣味性。
3.2.12CheckBox組件
CheckBox組件通常稱為複選框,複選框往往是多個構(gòu)成一組,在應(yīng)用程式運行時,可以選中其中的一個或多個,也可以一個都不選。CheckBox組件的主要屬性
1.Caption屬性該屬性表示複選框所提示的內(nèi)容。
2.Checked屬性該屬性表示複選框是否被選中,有兩個可選值:True表示複選框被選擇,F(xiàn)alse
表示未選中。
3.State屬性該屬性表示複選框當(dāng)前的複選狀態(tài),其值有三種:cbUnChecked(未選中)、cbChecked(選中)、cbGrayed(變灰選中)。
3.2.13RadioButton組件RadioButton組件通常稱為單選按鈕,在Standard標(biāo)籤頁中,單選按鈕提供了一個選項集,只能在這些選項中排他性地選擇其中一個,所以叫單選按鈕。該組件的主要屬性就是:Checked屬性,該屬性表明單選按鈕是否被選中。如果選中,則該屬性值為True,默認(rèn)值為False,表示未選中。3.2.14Image組件
圖像組件Image在Additional標(biāo)籤頁上,用來在窗口中顯示一幅圖片,可以在picture屬性中調(diào)入圖像檔。Delphi支持位圖(.BMP)、圖示(.ICO)、圖元(.WFM)三種檔格式。比較重要的屬性:
Autosize屬性和Stretch屬性。它們決定了圖像在窗口中的顯示尺寸。Autosize屬性為True表示按原尺寸顯示,Stretch屬性為True表示圖像按對象圖框的大小顯示,這時圖像的大小可以人為改變。3.2.15Shape組件
圖形組件Shape可以處理多種幾何形狀,如線形、矩形、圓形等。通過設(shè)置Shape屬性設(shè)置幾何圖形的類型,通過設(shè)置Pen和Brush的嵌套屬性,可以設(shè)置圖形邊框顏色、線型及圖形的風(fēng)格、填充方式等。
Shape屬性可選值為stCircle、stEllipse、stRectangle、stRoundRect及stRoundSquare。3.2.16TreeView組件
TreeView(樹狀視圖)組件,在Win32標(biāo)籤頁中??梢岳迷摻M件描述一個樹狀結(jié)構(gòu),如Windows資源管理器左窗格顯示的樹形結(jié)構(gòu)目錄,就可以利用TreeView組件實現(xiàn)。在TreeView中,每個節(jié)點都是TtreeNode類型的對象,而它和所屬的節(jié)點又組成了一個TtreeNodes對象。在圖3-14中,Windows是一個TtreeNode對象,而Windows和其下的子目錄又構(gòu)成了一個TtreeNodes對象,訪問TtreeNode和TtreeNodes對象的方法有所不同。
圖3-2TreeView示例3.2.17ListView組件ListView(列表視圖)組件,在組件面板的Win32標(biāo)籤頁。Windows資源管理器的右半部分是典型的列表視圖。它有四種方式,即大圖示、小圖示、簡單列表和詳細(xì)列表。ListView組件本身比較複雜,主要有兩類對象來控制,那就是縱向的列對象TlistColumn和橫向的TlistItem對象。TlistColumn
每個列都有標(biāo)題、對齊方式及寬度等屬性。在TlistView中,所有的列集中起來,由Columns管理的,它是一個TlistColumns對象,有屬性Items和Count,通過這個對象的數(shù)組屬性Items[n]來訪問每個列。使用Columns的Add方法可以增加列。TlistItem
這是描述列表專案的對象。每個專案都應(yīng)有標(biāo)題Caption,複選狀態(tài)Checked。屬性ImageIndex,OverLayIndex,StateIndex分別表示專案的圖示序號,用於透明覆蓋的圖示序號,用於表明狀態(tài)的圖示序號。屬性Selected,Cut,F(xiàn)ocused分別表示專案是否被選中,是否被剪貼,是否具有輸入焦點。所有的專案集中由TlistView的屬性Items管理,它是TlistItems對象,有屬性Items和Count,通過這個對象的數(shù)組屬性Items[n]來訪問每個專案,使用方法Add增加列表專案。TlistView組件的示例操作(1)賦值withListView1.Items.AdddobeginCaption:=‘caption’;//添加第一項
SubItems.add(‘a(chǎn)aaaa’);//添加後面數(shù)據(jù)
SubItems.add('1234');end;//一定要使用WITH結(jié)構(gòu).(2)取值listview1.Items.Item[i].Caption;//取得某條數(shù)據(jù)標(biāo)題listview1.Items.Item[i].SubItems.Strings[j];//取得某條數(shù)據(jù)內(nèi)容listview1.Items.Item[i].SubItems.CommaText;//一條記錄的全部內(nèi)容,格式:“標(biāo)題”,“內(nèi)容1”,“內(nèi)容2”,listview1.Items.Item[i].SubItems.Text //一條記錄的全部內(nèi)容(3)刪除listview1.Items.Item[i].Delete;刪除一條數(shù)據(jù)(4)數(shù)據(jù)類型定義i:=ListV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 砌磚抹灰勞務(wù)合同
- 事業(yè)單位職工勞動合同
- 廠房建筑施工合同
- 軟件合作開發(fā)協(xié)議書8篇
- 第三單元巖石與土壤 教學(xué)設(shè)計-2023-2024學(xué)年科學(xué)四年級下冊教科版
- 第四章第三節(jié) 工業(yè)同步教學(xué)設(shè)計2023-2024學(xué)年八年級上冊地理 人教版
- 格賓加筋土邊坡施工方案
- 二米六鈦金條門施工方案
- 2025新版工程裝修合同8篇
- 專題節(jié)目許可使用協(xié)議范本7篇
- 抖音開店品牌授權(quán)模板
- 人教版七年級英語下冊聽力翻譯
- 工程形象進(jìn)度一覽表(每月20日)
- 幼兒園講座地鐵小知識介紹
- 隱蔽工程工驗收記錄(表C5-1)
- 《單位內(nèi)個人清繳社保費申請表》(填寫樣例)
- T-CAMET 04017.7-2019 城市軌道交通 全自動運行系統(tǒng)規(guī)范 第7部分:運營管理
- 小升初、小學(xué)生滿分優(yōu)秀作文匯編100篇
- 次聲波在臨床醫(yī)學(xué)及麻醉中的作用 次聲波在臨床麻醉中的作用
- 2022年云南省中考數(shù)學(xué)試題及答案解析
- TS16949五大工具:SPC
評論
0/150
提交評論