国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
第二章 Delphi面向?qū)ο蟮木幊谭椒ǎㄒ唬?/div>
第二章 Delphi面向?qū)ο蟮木幊谭椒ǎㄒ唬?

        Delphi的編程語言是以Pascal為基礎(chǔ)的。Pascal語言具有可讀性好、編寫容易的特點(diǎn),這使得它很適合作為基礎(chǔ)的開發(fā)語言。同時(shí),使用編譯器創(chuàng)建的應(yīng)用程序只生成單個可執(zhí)行文件(.EXE),正是這種結(jié)合,使得Pascal成為Delphi這種先進(jìn)開發(fā)環(huán)境的編程語言。

        本章中,我們將討論Object Pascal的主要特點(diǎn),并講解如何在事件處理過程和其他應(yīng)用程序中,使用它來編制程序代碼。本章將講解Delphi應(yīng)用程序中最常用的Object Pascal語法,而不是Pascal語言的一切細(xì)節(jié)。如果您完全不熟悉Pascal編程,請參閱一些基礎(chǔ)的Pascal教程。如果您具有編程經(jīng)驗(yàn),并能熟練地使用其他流行程序語言,您將在本章的Object Pascal中發(fā)現(xiàn)一些相同的概念。如果您已經(jīng)熟悉了Borland Pascal,就可以快速瀏覽或跳過本章?!?/font>

2.1 編寫Object Pascal程序代碼 

        在前邊的章節(jié)中,我們通過例程,已經(jīng)編寫了幾行簡單的代碼。在本章中,我們將從熟悉Pascal編程的角度,配合實(shí)例,講解Object Pascal編程的基本方法。

        在編寫自己的Object Pascal程序時(shí),要注意程序的可讀性。Pascal語言是英式結(jié)構(gòu)語言,在程序中選擇合適的縮排、大小寫風(fēng)格,并在需要時(shí)將程序代碼分行,會使得程序代碼能夠很容易地被自己和他人讀懂。一般的程序員都有這樣的體驗(yàn):如果不給程序加上適當(dāng)?shù)淖⒔?,一段時(shí)間后,自己也難以理清程序的流程。給程序及時(shí)地加上注釋是良好的編程習(xí)慣。Delphi的注釋需要加注在{}之間,編輯器會把它們處理成為空白。Delphi保留了Borland Pascal編輯器的風(fēng)格,關(guān)鍵字采用黑體字,被注釋的部分會變暗,這使得編程風(fēng)格良好,易讀易寫。 

2.1.1 編寫賦值語句 

        在事件處理過程中,最常用到的工作就是把一個新值賦給一個屬性或變量。在設(shè)計(jì)用戶界面時(shí),可以使用Object Inspector(Object Inspector)來改變其屬性;但有時(shí)需要在程序執(zhí)行時(shí)改變屬性的值,而且有些屬性只能在執(zhí)行時(shí)改變,這些屬性在Delphi的在線幫助的“Proprety”主題中被標(biāo)為執(zhí)行期屬性。進(jìn)行這種改變,就必須使用賦值語句。

       下文的賦值語句表征一個OnClick事件。當(dāng)按鈕按動后,將編輯框部件Edit1Color屬性置為clRed:

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit1.Color := clRed;

end; 

        當(dāng)按動按鈕后賦值語句被執(zhí)行,編輯框變成紅色。

        在語句中,部件的名稱在屬性前,中間用“.”表示屬性的所屬關(guān)系。這樣就準(zhǔn)確地指定了要將clRed值賦給哪一部件的哪一屬性。賦值號為“:=”,不論給屬性還是給變量賦值,都是將右邊的值賦給左邊的屬性或變量。

         當(dāng)將一個屬性值、變量、常量或文本數(shù)據(jù)賦給屬性或變量時(shí),所賦值的類型和接受此值的屬性或變量的類型應(yīng)相同或兼容。一個屬性或變量的類型定義了此屬性或變量的可能值集合,也定義了程序代碼可以執(zhí)行的運(yùn)算。在前邊的例程中,編輯框部件的Color屬性和clRed的類型都是TColor??梢栽谠诰€幫助中找到一個屬性的類型;另外一種方法是在Object Inspector中選定該屬性值段,并按下F1鍵,則類型將在屬性說明的結(jié)尾處列出,例如Color屬性列出下邊的語句: 

Property Color : TColor; 

         有些屬性是只讀(Read Only)的,它們只能被讀取,不能被改變。請查閱在線幫助,在Delphi中這些只讀屬性都有注解?!?/font>

2.1.2 標(biāo)識符的說明與使用 

         標(biāo)識符是Delphi應(yīng)用程序中一些量的名稱,這些量包括變量(var)、常量(const)、類型(type)、過程(procedure)、方法(Method)及其他,Object Pascal 在應(yīng)用標(biāo)識符時(shí),必須首先說明它們。Object Pascal是強(qiáng)類型語言,它的編譯器可以檢查確保賦給變量或?qū)傩缘闹凳钦_的類型,以便于您改正錯誤。因?yàn)?/font>Object Pascal是編譯語言,所以Delphi的執(zhí)行速度要比使用解釋語言快得多。在使用標(biāo)識符前說明它們,可以減少程序錯誤并增加代碼的效率。 

2.1.2.1 變量

         變量是程序代碼中代表一個內(nèi)存地址的標(biāo)識符,而此地址的內(nèi)存內(nèi)容在程序代碼執(zhí)行時(shí)可以被改變。在使用變量前必須對它進(jìn)行說明,即對它進(jìn)行命名,并說明它的類型。在所有變量說明以前加上保留字var。變量說明左邊是變量的名稱,右邊則是該變量的類型,中間用(:)隔開。 

var

Value ,Sum : Integer;

Line : String; 

        在窗體中加入一個名稱為Edit1的編輯框,再加入一個名稱(屬性Name)Add的按鈕部件,并建立如下的事件處理過程:

procedure TForm1.addClick(Sender: TObject);

var

X , Y: Integer;

begin

X := 100;

Y := 20;

Edit1.Text := IntToStr(X + Y);

end; 

        在本例中,當(dāng)按動ADD按鈕時(shí),編輯框中顯示值120。在Object Pascal中,必須確保變量或?qū)傩员毁x予類型相同或兼容的值。您可以嘗試將賦給X的值改為100.0,或去掉IntToStr函數(shù),在編譯時(shí)會出現(xiàn)類型不匹配的錯誤,這也說明了Object Pascal強(qiáng)類型語言的特點(diǎn)?!?/font>

2.1.2.2 預(yù)定義類型 

        Object Pascal有多個預(yù)定義的數(shù)據(jù)類型,您可以說明任何這些類型的變量:

        整形:Integer的范圍是-3276832767,2字節(jié)的內(nèi)存;Shortint-128127,占1字節(jié)內(nèi)存;Longint-21474436482147483647 4字節(jié)內(nèi)存;Byte0255,占1字節(jié);Word065535,占2字節(jié)內(nèi)存。它們都是沒有小數(shù)部分的數(shù)字。

        實(shí)型:Single可以包含78位有效小數(shù)部分,占用4字節(jié)的內(nèi)存;Double類可以包含1516位有效小數(shù)部分,占用8字節(jié)的內(nèi)存;Extended類型包含1920位有效小數(shù)部分,占用10字節(jié)內(nèi)存;Comp可以包含1920位有效小數(shù)部分,占用8字節(jié)內(nèi)存。以上實(shí)數(shù)類型只有在8087/80287選項(xiàng)[N+]打開才可以使用。Real可以包含1112位有效小數(shù)部分,占用6字節(jié)內(nèi)存。它只有在和以前Borland Pascal兼容的情況下才使用,否則應(yīng)使用DoubleExtended。

       布爾型:Boolean,只包含trueFalse兩個值,占用1字節(jié)內(nèi)存。

       字符型:Char,一個ASCII字符;字符串類型String一串最長可達(dá)255ASCII字符。

       指針型:Pointer,可以指向任何特定類型。

       字符串型:PChar,是一個指向以零結(jié)尾的字符串的指針。

        除了預(yù)定義類型外,Delphi還有自行定義的類型。上述例程的TColor就是這種類型。此外,用戶還可以定義自己的數(shù)據(jù)類型,這部分內(nèi)容將在下文中詳細(xì)講述。

        整型類別和實(shí)型類別都各有五種類型,同一類別中,所有的類型與其他同類別的都相容,您可以將一種類型的值賦給相同類別中不同類型的變量或?qū)傩裕恍枰@個值的范圍在被賦值的變量或?qū)傩缘目赡苤捣秶鷥?nèi)。例如,對于一個Shortint型的變量,可以接受在-128127范圍內(nèi)的任意整數(shù),例如Shortint類型的7;您不能將300賦給它,因?yàn)?/font>300已經(jīng)超出了Shortint的范圍了。將范圍檢查功能打開(選用Options|Project,并在Compiler Options Page中選擇Range Checking),將會檢查出一個范圍錯誤;如果Range Checking沒有被打開,那么程序代碼將可以執(zhí)行,但被賦值的值將不是您期望的值。

        在一些情況下,您可以進(jìn)行不同類型的變量或?qū)傩缘馁x值。一般來說,可以將一個較小范圍的值賦給一個較大范圍的值。例如,您可以將整型值10賦給一個接受實(shí)型值的Double屬性而使得值成為10.0,但如果將一個Double類型的值賦給整形變量,則會出現(xiàn)類型錯誤。如果您不清楚類型的兼容性,可以參閱Delphi的在線幫助中“Type Compatibility and Assignment Compatibility”主題?!?/font>

2.1.2.3 常量 

       常量在說明時(shí)就被賦予了一個值,在程序執(zhí)行過程中是不可改變的。下面的例子說明了三個常量: 

const

Pi = 3.14159;

Answer = 342;

ProductName = "Delphi"; 

        象變量一樣,常量也有類型。不同的是,常量假設(shè)其類型就是常量說明中其所代表的值的類型。上文的三個常量的類型分別是real型、整形、字符串型。常量用“= " 表示兩邊的值是相等的?!?/font>

2.1.3 過程與函數(shù) 

        過程與函數(shù)是程序中執(zhí)行特定工作的模塊化部分。Delphi的運(yùn)行庫包含許多過程與函數(shù)以供您的應(yīng)用程序調(diào)用。您不必了解過程與函數(shù)的邏輯,但要知道過程與函數(shù)的用途。在對象中說明的過程和函數(shù)稱為方法(Method)。所有的事件處理過程都是過程,以保留字procedure開頭。每一個事件處理過程只包含了當(dāng)這一事件發(fā)生時(shí)需要執(zhí)行的程序代碼。在事件處理過程中使用Delphi已經(jīng)存在的過程與函數(shù),只需在程序代碼中調(diào)用它們即可。 

2.1.3.1 一個調(diào)用Delphi方法的簡單例程 

      下文將通過對一個Memo部件的文本進(jìn)行剪切、拷貝、粘貼、清除等編輯的應(yīng)用程序編制,介紹使用Delphi過程和函數(shù)的調(diào)用方法。

       Memo(備注)部件有一個CutToClipboard方法,實(shí)現(xiàn)將用戶在memo中選擇的文本移到剪貼板上去。由于這個功能已經(jīng)被建立在此方法中了,所以您只需知道這個方法做什么以及如何使用它即可。

       下面的語句表明如何調(diào)用一個名為Memo1memo部件的CutToClipboard方法: 

       Memo1.CutToClipboard; 

       通過指定Memo1的名稱,說明調(diào)用哪一個部件的CutToClipboard方法。如果不指明對象名稱,Delphi會顯示Unknown identifier錯誤。當(dāng)該事件處理過程被觸發(fā),程序會執(zhí)行CutToclipboard中的語句,將Memo1中的文本剪貼到剪貼板上去。

       下文的例程展示了如何調(diào)用Delphi的方法,實(shí)現(xiàn)將備注部件的文本信息剪切、拷貝到剪貼板上;將剪貼板上的標(biāo)記文本粘貼到備注中,清除備注部件中的全部文本等四個功能。

       打開一個新的空窗體,加入一個memo部件和四個按鈕,并排列整齊。改變按鈕部件的Name屬性,分別命名為Cut,Copy,Paste,Clear。您會發(fā)現(xiàn),當(dāng)Name屬性發(fā)生改變時(shí),Caption屬性將發(fā)生相應(yīng)的變化。在Caption屬性前加標(biāo)“&”號設(shè)立加速鍵

        將memo部件的ScrollBars屬性設(shè)為ScVertical,以便加上滾行條。將WordWrap屬性設(shè)置為True,這樣當(dāng)用戶輸入文本到達(dá)Memo部件的右邊緣時(shí)會自動回行。將Line屬性第一行的Memo1文本刪除,使得memo部件在初始顯示時(shí)為空的。

為每一個按鈕建立如下的事件處理過程: 

procedure TForm1.CutClick(Sender: TObject)

begin

Memo1.CutToClipboard;

end; 

procedure TForm1.CopyClick(Sender: TObject);

begin

Memo1.CopyToClipboard;

end; 

procedure TForm1.PasteClick(Sender: TObject);

begin

Memo1.PasteFromClipboard;

end; 

procedure TForm1.ClearClick(Sender: TObject);

begin

Memo1.clear;

end; 

        執(zhí)行此程序。您可以在備注部件中輸入文本,在進(jìn)行了文本的標(biāo)記后,可以任意地進(jìn)行剪切、拷貝、粘貼和清除。當(dāng)按鈕被按動時(shí),就調(diào)用相應(yīng)的過程進(jìn)行處理。用戶可以通過查閱在線幫助進(jìn)行Memo部件的Topic Search,在Memo Component項(xiàng)中查閱Method,會得到以上過程的詳細(xì)說明?!?/font>

2.1.3.2 調(diào)用Delphi的含參過程 

        有些過程要求用戶指明參數(shù)。被調(diào)用的過程會在執(zhí)行時(shí)使用傳入的參數(shù)值,這些值在過程中被認(rèn)為是已經(jīng)被說明的變量。例如,LoadFromFile方法在TString對象中被說明為: 

Procedure LoadFromFile(const FileName: String); 

        在調(diào)用這一過程時(shí),應(yīng)指明FileName參數(shù)是要裝入的文件名稱。下面的程序?qū)⑾却蜷_Open對話框,當(dāng)您選擇了一個文件后,Delphi將把該文件讀入一個Memo部件: 

begin

OpenDialog.Execute;

Memo1.lines.LoadFromFile(OpenDialog.FileName);

end; 

2.1.3.3 使用Delphi函數(shù) 

        與過程一樣,函數(shù)的程序代碼也執(zhí)行特定的工作。它和過程的差別為:函數(shù)執(zhí)行時(shí)會返回一個值,而過程則沒有返回值。函數(shù)可以用來賦給一個屬性或變量;也可以使用返回值來決定程序的流程。

        前文中我們實(shí)際上已經(jīng)接觸過了函數(shù)。在講述變量時(shí),曾用到過下面的程序段: Edit1.Text := IntToStr(X + Y);其中,IntToStr(Value)把一個LongInt類型的數(shù)值轉(zhuǎn)化為字符串的值,ValueIntToStr唯一的參數(shù),它可以是一個整形的值、變量、屬性或產(chǎn)生整形值的表達(dá)式。調(diào)用函數(shù),必須把返回值賦給和此返回值類型兼容的變量或?qū)傩浴?/font>

        有些函數(shù)返回一個TrueFalse的布爾量,用戶的程序可以根據(jù)返回值來決定跳轉(zhuǎn)。下文的例程講述了函數(shù)返回值為Boolean的判斷用法:

        在窗體中加入一個ColorDialog對象和一個Name屬性為ChangeColor的按鈕。為按鈕的OnClick事件建立事件處理過程如下: 

procedure TForm1.ChangeColorClick(Sender: TObject);

begin

if ColorDialog1.Execute then

Form1.Color := ColorDialog1.Color

else

Form1.Color := clRed;

end; 

        此事件處理過程使用一個返回Boolean值的Execute方法。按動按鈕,并在顏色對話框中選擇一個顏色。如果按動OK按鈕,ColorDialog.Execute方法將返回True,則Form1.Color將被賦值為ColorDialog1.Color,窗體顯現(xiàn)您選用的顏色;如果按動顏色對話框的Cancel按鈕,方法將返回False值,窗體將變?yōu)榧t色。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服