版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi概述
內容提要
Delphi簡介
Delphi7集成開發環境
Delphi的檔結構簡單應用程式實例1.1Delphi簡介
Delphi是Borland公司推出的面相對象的可視化編程環境,特別適合於快速規範地開發Windows應用程式。從Borland公司推出Delphi1.0至今,Delphi已經發展了7代產品,每一代都是伴隨Windows操作平臺的升級而升級。使用Delphi,用戶可以輕鬆地進行各種複雜應用程式的開發。
1.2Delphi的新特性Delphi具有簡單、高效、功能強大的特點,而Delphi7在以下幾個方面又進行了加強:
企業應用的MDA開發可視化的快速Web開發內建的對Linux的跨平臺支持企業級的報表能力免費的DataSnap多層應用開發WindowsXP應用
1.4Delphi7的集成開發環境
Delphi7的集成開發環境(IDE)和
Delphi以前的版本基本一致。它把菜單、多個工具欄以及一組窗口和應用程式設計在一起,將代碼以事件的形式與介面的每一元素建立聯繫,使用戶很方便的在這個高度集成的開發環境裏進行應用程式的開發和調試。
Delphi7的集成開發環境(IDE)是進行設計、運行和測試程式的工作系統。啟動Delphi7,運行後可以見到它的開發環境如圖1-1所示。1.4.1Delphi7集成開發環境的組成
主要包括以下幾個窗口:主窗口;對象樹狀圖、對象監視器窗口;窗體設計器窗口、代碼編輯器窗口。(圖1-1Delphi7開發環境)1.4.2Delphi7主窗體
Delphi7的主窗體位於螢幕的上端,主要包括四個部分:標題欄、菜單欄、工具欄和組件欄。Delphi7的主窗口如圖1-2所示。(圖1-2)
Delphi7的主窗口1.4.3對象樹狀圖及對象監視器窗口
對象樹狀圖窗口(ObjectTreeView)用樹形表方式列出了專案中所有的對象,即窗口、組件、菜單等,並清楚地表明瞭它們之間的關係。對象樹形窗口如圖1-3所示。
在對象樹狀圖窗口下方是對象監視器窗口(ObjectInspector),對象監視器窗口含有兩個頁卡:屬性頁卡(Properties),顯示窗體中當前被選擇部件的屬性資訊,並允許改變對象的屬性;事件頁卡(Events),列出了當前部件可以回應的事件。對象監視器窗口如圖1-4所示。
圖1-3對象樹狀圖窗
圖1-4對象監視器窗1.4.5窗體設計器在
Delphi7的開發過程中,大部分的設計是在窗體設計器中,主要是通過向窗體中添加組件以及更改窗體及組件的屬性和填寫事件來完成的。當創建一個
Windows應用程式時,Delphi會缺省的建立一個窗體
Form1。窗體設計器窗口如圖1-5所示。
對象樹狀圖窗口與對象觀察器窗口、窗體設計器窗口同步,即在此三個工具的任何一個中改變焦點時,另外兩個工具的焦點也會發生變化。圖1-5窗體設計器窗口1.4.6代碼編輯器代碼編輯器是一個程式代碼的輸入和編輯工具,也稱單元窗口。通常情況下隱藏在窗體設計器的下麵,可通過菜單或工具欄上的按鈕對它們進行切換。Delphi7的代碼編輯器具有彩色高亮度語法顯示、自動進行語法校驗、代碼參數提示輸入和代碼完善等功能。
啟動Delphi或執行NewForm菜單項時,系統即生成一個新的窗體,並在代碼編輯器中產生一個新頁卡,在新頁卡中可以編輯相應的單元代碼。按F12可以在窗體設計器窗口和代碼編輯器窗口之間轉換。
圖1-6代碼編輯器窗口1.5Delphi的檔結構利用
Delphi開發
Windows應用程式都是以工程為中心的,即每個應用程式都對應一個工程。工程中可包含一個或多個檔,這些檔主要是工程檔、單元檔、窗體檔和資源檔等。
1.5.1工程檔工程檔是一個
Delphi應用程式的總體管理和描述的檔,它的檔尾碼是
.dpr,是整個應用程式的主程序。工程檔由Delphi7自動生成,一般情況下不修改這個檔。下麵是一個工程檔的程式清單。
programProject1; //保留字program說明這是一個工程檔
//檔案名為Project1.dpruses//保留字uses對工程所引用的單元進行說明
Forms, //引用Forms單元
Unit1in'Unit1.pas'{Form1};
//引用Unit1單元,在當前目錄的Unit1.pas檔中,相應的窗體為Form1{$R*.res}//系統編譯命令,將擴展名為.res的二進位資源檔連接到.exe檔中去begin //工程執行部分的開始聲明
Application.Initialize;//應用程式的初始化
Application.CreateForm(TForm1,Form1);//創建窗體Form1 Application.Run; //運行程式end. //工程執行部分的結束說明1.5.2單元檔
單元檔是
Delphi的核心檔,它的檔尾碼是
.pas。在Delphi7中每個窗體都有一個單元檔與之相對應,窗體的單元檔包含了程式部分,用以控制窗體的行為。在一個工程中,還可以建立與窗體無關的單元檔,用來編寫工程中公用的函數、過程或定義新的數據。許多工程還調用了Delphi7附加庫或其單元檔中的過程或函數。uses子句中包含的公共單元檔包含了支持可視窗體及其控制的對象聲明。這些單元也包含了用於啟動窗體的事件處理過程程式。(詳見本教程P20~P21)1.5.3窗體檔
窗體檔記錄設計時窗體和組件的屬性,它的檔尾碼是
.dfm。一個或多個窗體檔,它們含有相應的單元檔。dfm檔在
Delphi7下是一種腳本化的文本檔。在Delphi7中,一個應用程式至少需要一個窗體。可以在窗體上單擊滑鼠右鍵,選擇
【ViewasText】命令,窗體將在代碼編輯器中顯示為文本格式。
(代碼省略,詳見本教程P21~P22)1.5.4資源檔
資源檔中可以包含各種資源,用它可豐富應用程式,它的檔尾碼是
.res。編譯器可以把資源檔鏈接到可執行檔裏。資源檔的生成和編輯需要有專門的工具,如
Delphi7附帶的
ImageEditor,利用它就可以創建、打開、編輯和保存圖片資源。1.5.5其他檔尾碼格式為如下形式:*.~pas:Delphi單元的備份檔;*.dof:Delphi中的有關配置和選項檔;*.dcu:Delphi的中間編譯單元檔;*.dpk:Delphi的包檔;*.dll:動態鏈接庫(Delphi可創建的一種終端檔);*.ocx:ActiveX控件(Delphi可創建的一種終端檔);
*.exe:可執行檔(Delphi可創建的一種終端檔)。
1.6Delphi簡單應用程式實例
本節要創建一個簡單的應用程式。啟動Delphi7程式,出現一個窗口,窗體標題欄中顯示“演示程式”字樣,在窗體上顯示一行文字“歡迎使用Delphi7開發工具!”;單擊窗體中“測試”按鈕,彈出資訊框告知“我成功了!”;單擊窗體中的“退出”按鈕,能夠退出應用程式。通過設計一個簡單的應用程式。掌握以下內容:
應用程式開發過程;
常用開發工具及功能;
應用程式組成;
應用程式編譯及執行。
在Delphi7中開發的每個應用程式都被稱為工程。Delphi7編程首先從創建一個新工程開始。創建新工程有以下兩種方法:
1.6.1建立用戶介面的對象(1)
新創建的工程中包含一個默認窗體(Form1)和它對應的單元(Unit1),根據工程的需要可添加窗體或單元。工程檔的擴展名為.dpr。打開一個已建立的工程的方法是:單擊File菜單,指向OpenProject,然後選擇工程檔即可。⑴啟動Delphi7進入開發環境,此時系統自動生成一個工程,默認名為Project1;⑵選擇File菜單,指向New,然後單擊Application系統將創建一個新的工程。1.6.1建立用戶介面的對象(2)
程式設計首先是窗體設計。因此第一項工作就是在窗體設計器完成窗體設計,在窗體中添加各種所需對象進行介面設計。將組件板上的組件添加到窗體上有三種方法。(1)單擊組件板上所需組件的按鈕,然後在窗體適當位置拖動滑鼠畫出組件,即可將組件添加到窗體指定位置。(2)雙擊組件板上所需組件的按鈕,即可將組件添加到窗體中心位置。(3)按下Shift鍵不放,單擊組件板上所需組件的按鈕,所選擇組件出現藍色邊框,同時對象選擇按鈕彈起。可以在窗體適當位置連續畫出該類組件,用滑鼠單擊對象選擇按鈕,可以取消該類組件的連續添加操作。
本例中共涉及3個對象:1個TLabel組件和2個TBotton組件。Label組件用來顯示資訊,不能用於輸入;Button組件用來執行有關操作;窗體是上述對象的載體
1.6.1建立用戶介面的對象(3)
如果組件在窗體中的位置不合適,可以用滑鼠拖動的方法進行移動,直到對所有組件的位置感到滿意為止。剛添加到窗體中的組件,其邊框上有八個黑色小方塊,表明它是當前被選定的組件。可以用滑鼠拖拉邊框上黑色小方塊使組件在相應方向上放大或縮小,也可用滑鼠指向組件內部,按下滑鼠左鍵並拖動滑鼠到窗體的任意位置。按組合鍵Ctrl+C可以對所選組件進行複製,Ctrl+V可以在窗體中進行粘貼,按Delete鍵可以刪除所選組件1.6.2對象屬性設置(3)在
Delphi中,設置窗體和組件的屬性是通過對象檢查器實現的,對象檢查器是設計介面過程中最頻繁使用的工具。選中窗體上要設置屬性的組件,對象檢查器會顯示該組件的所有屬性,只需對要改變的屬性後面的值進行修改就可以了。本例中,各組件的屬性設置:
組件名稱組件屬性屬性值說明Label1Caption空值使Label1中不顯示任何文字AutoSizeTrue使Label1大小隨裏面的內容變化和適應Button1Caption測試在Button1按鈕上顯示指定文字Button2Caption退出在Button2按鈕上顯示指定文字1.6.3對象事件過程及編程(1)
建立了用戶介面並為每個對象設置了屬性後,就要考慮用什麼事件來激發對象執行所需要的操作。這涉及到選擇對象的事件和編寫事件過程代碼。為了在窗體上顯示“歡迎使用
Delphi7開發工具!”,同時改變窗體的標題為“演示程式”,需對Form1窗體的OnCreate事件進行編程。代碼如下:procedureTForm1.FormCreate(Sender:TObject);beginForm1.Caption:='演示程式';Label1.Caption:='歡迎使用
Delphi7開發工具!';end;1.6.3對象事件過程及編程(2)
為了實現單擊“測試”按鈕彈出對話框功能,需在Button1的OnClick事件中進行編程。方法是:選擇Button1對象,在對象監視器中選擇“事件”選項卡,在事件選項卡中選擇OnClick事件,雙擊事件處理欄,Delphi自動生成該事件過程的代碼框架,同時打開代碼編輯窗口,將游標定位在代碼框架過程體的首行處,在過程體中加入如下代碼:ShowMessage('我成功了!');
輸入完畢可以看到按鈕Button1的滑鼠單擊事件處理程式的全部內容是:procedureTForm1.Button1Click(Sender:TObject);begin
ShowMessage('我成功了!');
end;end.1.6.3對象事件過程及編程(3)同樣,輸入完畢的Button2按鈕的滑鼠單擊事件處理程式的全部內容是:procedureTForm1.Button1Click(Sender:TObject);begin
Close;
end;end.1.6.4編譯、調試、執行
Delphi是先編譯後執行的程式,它不是解釋執行的。所以一般可先使用菜單【Project】|【BuildAllProjects】進行編譯程序,但更多的時候是直接使用菜單【Run】|【Run】來直接運行一個程式,因為它會先編譯,如果沒錯誤再運行。
程式運行結果如圖1-16所示,當出現一個名為Delphi7程式的窗口,單擊窗口上的顯示按鈕,顯示一行文字“第一個Delphi7程式”,單擊窗體右上方關閉按鈕時退出程式。在程式中除了語法錯誤,還有可能在程式運行中出現錯誤,這就要涉及到程式的調試。Delphi7為程式員提供了方便的程式調試手段。圖1-15程式運行結果1.6.5保存工程
當程式調試完畢沒有任何問題時,還要注意保存程式。可通過菜單【File】|【SaveAll】保存所有檔,也可以單個保存每一個要保存的檔。
打開Sample目錄可以發現有六個檔,分別是Main.dfm、Main.pas、Sample.cfg、Sample.dof、Sample.dpr、Sample.res。應當注意,一個應用程式並不是只由一個檔組成,而是由許多不同類型的檔組成的。
OOPPascal基礎知識
內容提要
OOPPascal基本知識
常用數據類型
運算和運算符常量和變數常用語句過程和函數2.1OOPPascal基本要素
Delphi是Borland公司推出的面向對象的可視化編程環境,特別適合於快速規範地開發Windows應用程式。從Borland公司推出Delphi1.0至今,Delphi已經發展了7代產品,每一代都是伴隨Windows操作平臺的升級而升級。使用Delphi,用戶可以輕鬆地進行各種複雜應用程式的開發。
2.1.1識別字識別字是用來標識一個特定元素的,如類名、變數名、單元名、方法名等。利用識別字可以完成對變數、常量、數據類型、過程、函數、類等的引用。ObjectPascal識別字由字母、數字、下劃線組成,其規定為:(1)必須以字母或下劃線開始;(2)不能與保留字相同;(3)避免與ObjectPascal已經使用的標準識別字相同。2.1.2關鍵字
關鍵字又稱保留字(ReservedWords)是由系統規定的、具有特定意義的單詞。在編程時不能被重新定義或另作他用。ObjectPascal語言規定的保留字詳見本教程P28頁表2-1。
除了上述的保留字外,Private、Protected、Public、Published和Automated在定義對象類型時也作為保留字,而在其他場合則作為指令符。單詞at和on也具有特殊的含義。
注意:ObjectPascal編程語言和許多編程語言不同,它對單詞的大小寫是不敏感的。ObjectPascal不區分大小寫。IN、in和In都被看做是同樣的意義。2.1.3指示字
注意:
可以定義一個跟指示字完全相同的識別字,但最好不這樣做。
指示字(directives)也是具有特殊意義的單詞,但與保留字不同的是可以將指令符定義為識別字,ObjectPascal不會指示出錯,但這容易混淆。ObjectPascal規定的指令指示字見表2-2。2.2數據類型
OOPPASCAL語言是一種強類型語言,這表明每一個變數在賦值之前必須明確給出它的類型。即變數在訪問之前必須聲明。OOPPASCAL數據類型豐富,它允許使用17種類型的數據。其結構如P31圖2-1所示。2.2.1簡單類型
OOPPASCAL中的簡單類型包括整形、字元型、布爾型、枚舉型、子界類型以及實數類型。
其中,整形、字元型、布爾型、枚舉型、子界類型統稱為順序類型(ordinaltypes)。在順序類型中,除了第一個元素,每一個元素都有唯一的前趨;除了最後一個元素外,每一個元素都有唯一的後繼。
1.整型
OOPPASCAL中將整數類型分為基本的(fundanmental)和一般的(generic)整數類型。基本的整數類型包括Shortint(短整型)、Smallint(小整型)、Longint(長整型)、Int64(64位整型)、Byte(位元組型)、Word(字型)和Longword(長字型)。它們的取值範圍和格式如表2-4所示:表2-4基本整數類型類型範圍格式Shortint-127...1278位帶符號數Smallint-32768…3276716位帶符號數Longint-2147483648…214748364732位帶符號數Int64-2^63…2^63-164位帶符號數Byte0…2558位無符號數word0…6553516位無符號數Longword0…429496729532位無符號數2.字元型
字元類型也有基本類型和一般類型之分。基本類型包括AnsiChar和WideChar兩種類型。其中,AnsiChar的格式為8位位元組,取值的序數按擴展ANSI字元集排列;而WideChar的格式為16位位元組,是為相容UniCode字元集而設置的,它的前256個UniCode字元同ANSI字元相同。一般的通用字元類型為Char,它等價於AnsiChar。由於字元型也屬於順序類型,可用函數Ord來取出字元的序數,即Ord(‘A’)=65成立。也可用預定義的函數Chr來返回對應的字元值,即Chr(65)=’A’成立。
3.布爾型
布爾型數據用於進行邏輯運算,布爾型數據的值只有兩個:True(真)和False(假)。ObjectPascal包括4種形式的布爾型數據,詳見表2-7。表2-7ObjectPascal語言的布爾型類型名稱位元組數取值布爾型Boolean1只能為False(0)或True(1)位元組布爾型ByteBool1False或True(非False)寬布爾型WordBool2False或True(非False)長布爾型LongBool4False或True(非False)4.枚舉型
枚舉類型定義了一組值的順序集合。它們的次序根據識別字的枚舉順序而定。在Delphi中廣泛使用了枚舉類型來定義組件對象的屬性。枚舉類型是一種用戶子定義類型,定義枚舉類型的語法如下:Type類型名稱(TypeName)=(值1,值2,值3,……,值n);如下是定義枚舉類型的例子:
TypeFruits=(Apples,Oranges,Bananas,Grapes);
在程式中定義好了枚舉類型後,可以象如下聲明變數:
VarMyFruit:Fruits;
5.子界類型子界類型也是一種用戶字定義類型,它規定了值域的上界和下界及取值的類型。位元組類型必須是順序類型中某範圍的值,在想限制一個變數的取值範圍時,子界類型是非常有用的。子界類型的定義如下:Type類型名稱
=值域下界
…
值域上界;
定義子界類型必須注意以下幾點:
上界和下界必須屬於順序類型,且為同一順序類型。
上界和下界的類型定義了子界的基類型。
上界的序號必須大於下界的序號。正確的定義舉例如下:
TypeSomeNumbers=0…15;
SomeCaps=‘A’…‘H’;
6.實型實數類型用於定義一個通常所說的浮點數所表示的數字的集合。它是屬於數據類型中的簡單類型,但已不屬於順序類型。實數類型也有基本類型和一般類型。基本類型包括:Real48、Single、Double、Extended、Comp和Currency;一般類型為:Real。詳細的格式及表示範圍如表2-6所示:
類型名表示範圍有效位佔用記憶體(位元組)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字串類型字串型是存儲字串數據的類型。OOPPASCAL中提供的預定義類型如表2-7:
表2-7字串類型類型名最大長度(字元)所需記憶體用途ShortString2552~256B向後相容AnsiString2314~2GB8位ANSI字元WideString2304~2GBUniCode注:在
Delphi5.0以後的程式中可直接定義String類型,其默認為AnsiString類型(或者說是LongString類型),如果使用{$H-},則被解釋為ShortString類型。
2.2.3結構類型
結構類型包括:集合(Set)、數組(Array)、記錄(Record)、檔(File)以及類(Class)、類引用(ClassReference)、介面(Interface)等類型。它的實例中含有一個或多個值。
2.2.4指針類型指針是記憶體中數據結構的詳細地址,相當於一個表示記憶體地址的變數。指針類型聲明的一般形式為:
Type指針類型名
=^類型特殊符號
“^”
表明了是一個指針類型,其後面緊跟的類型確定了指針所指向的類型,可以是簡單類型,如整型、實型、枚舉等;也可以是結構類型,如數組、集合、記錄等類型。“^”還有另外一種含義,跟在指針類型的變數後面,表示具體的值。配合指針操作的還有符號“@”,它是取址運算符,表示取地址操作。
2.2.5過程類型
過程類型變數相當於指針的角色,它可指向一個過程或函數,並且可以作為另一個過程或函數的參數使用。其定義的方式如下例:TypeTProcedure=Procedure;//聲明一個無參數過程類型TIntegerFunction=Function:Integer;//聲明一個無參數函數類型,返回值為整型TStringProcedure=Procedure(constS:String);//聲明一個帶有
String類型參數的過程類型VarProc:Tprocedure;IntF:TintegerFunction;StrP:TstringProcedure;2.2.6可變類型
用於標識可變類型的保留字是Variant,Variant類對象本質上是無類型變數,也就是它們可以自動顯現不同的類型。可變類型就是為了解決在編譯時數據類型無法確定的情況下,ObjectPascal才引入的數據類型。可變類型變數舉例如下:VarX:Variant;S:String;BeginX:=10;S:=IntToStr(X+20);X:=‘ObjectPascal’;MessageDlg(X,mtConfirmation,mbYesNoCancel,0);End;2.3運算和運算符
運算是對數據進行加工處理的過程,描述各種不同運算的符號稱為運算符,而參與運算的數據稱為運算元。運算式是表示某個求值規則的運算公式,它由運算符和圓括號將常量、變數等運算元以合理的形式組合而成。運算式可以用來執行運算、操作或測試數據,每個運算式都會產生惟一的值。運算式的類型由運算符的類型決定。在ObjectPascal中有以下幾種運算符:算術運算符、位運算符、字串運算符、關係運算符、布爾運算符、集合運算符、指針運算符、類運算符和@運算符。本節介紹幾種常用的運算和運算符。2.3.1算術運算
算術運算的操作對象為整形或實型,算術運算符包括
+,-,*,/,div和
mod,詳細說明如下表2-8:
表2-8OOPPASCAL語言的算術運算符操作符操作運算元類型結果類型+加整形,實型整形,實型-減整形,實型整形,實型*乘整形,實型整形,實型/除整形,實型整形,實型Div整數除整形整形Mod取模整形整形
2.3.2布爾運算
布爾運算的操作對象的類型為布爾型,返回的結果值也是布爾類型。布爾運算符基本有四個,分別是
Not,And,Or,Xor,其詳細說明如表2-9:
表2-9OOPPASCAL語言的布爾運算符
操作符操作操作規則Not取反NotTrue=False;NotFalse=TrueAnd與(布爾乘)TrueAndTrue=True;AAndFalse=FalseOr或(布爾加)FalseOrFalse=False;AOrTrue=TrueXor異或AXorA=False;AXor(NotA)=True2.3.3邏輯運算
邏輯運算實現的是按位的運算,它的操作及其操作的結果均為整數,邏輯運算的操作說明如下表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語言的指針運算符
操作符操作運算元類型結果類型+加法字元指針、整數字元指針-減法字元指針、整數字元指針、整數∧取值指針指針基類型=相等指針布爾<>不等指針布爾2.3.5集合運算
集合運算是以集合類型作為運算元的,它的運算符及其說明如下表2-12:
表2-12OOPPASCAL語言的集合運算符
操作符操作結果類型+並集集合-差集集合*交集集合<=子集布爾>=父集布爾=相等布爾<>不等布爾In屬於布爾2.3.6關係運算
關係運算用於比較兩個運算元,其返回值的類型是布爾型。關係運算符的操作說明如下表2-13:
表2-13OOPPASCAL語言的關係運算符
操作符操作運算元類型=相等簡單類型、類、類引用、介面、字串、緊縮字串<>不等簡單類型、類、類引用、介面、字串、緊縮字串<小於簡單類型、字串、緊縮字串、PChar>大於簡單類型、字串、緊縮字串、PChar<=不大於簡單類型、字串、緊縮字串、PChar>=不小於簡單類型、字串、緊縮字串、PChar2.3.7字串運算
操作符
+可以用作算術運算符、指針運算符和集合運算符,還可以用作表示把兩個字串類型的運算元相連接,即連接兩個字串。例如:‘My’+‘String’=‘MyString’;
2.3.8取址運算
取址運算符@
,它返回變數、函數、過程或方法的地址。關於取址運算符@,其原則說明如下:如果
X是變數,則
@X
返回
X的地址;在默認的編譯指示{$T-}下,@X的類型為
Pointer;而在{$T+}狀態,
@X的類型為
^T,其中的
T為
X的類型。如果F是一個過程或函數,@F返回F的入口點,它的類型一定是Pointer。
2.3.9運算符的優先順序在運算式中有多種運算符時,要注意各個操作符之間的優先順序。通常情況下,先作括弧裏的運算,再從優先級由高到低的次序來做,同等優先順序的,按從左到右出現的順序處理。所以,在不清楚具體優先順序的情形下,可以使用括弧,來確保程式的正確性。
表2-14OOPPASCAL中運算符的優先順序
優先順序操作符最高@,Not次高*,/,Div,Mod,And,Shl,Shr,As次低+,-
,Or,Xor最低=,<>,<,>,<=,>=,In,Is2.4常量與變數
定義常量的目的基本上有兩種:其一,在程式中經常用到某些常數值,為了書寫方便及減少頻繁輸入造成錯誤,可把它定義為一個常量;其二,就是為了便於程式的閱讀或修改,定義常量可使程式易於維護。
1.常量的聲明常量可以在程式、單元、過程或函數的聲明部分進行聲明,常量在說明時就被賦予了一個值,在程式執行過程中是不可改變的。
聲明常量的一般形式如下:Const
常量名1=常量值1;
常量名2=常量值2;
……
在程式設計中常用到兩種形式的數據,一種是在程式執行過程中其值保持不變的數據,稱為常量;另一種是在程式執行過程中其值可以改變的數據,稱為變數。2.4.1常量2.類型常量類型常量主要是不能修改的只讀變數。在聲明常量時,直接聲明其常量類型。類型常量的聲明方法如下:
Const
常量名1:類型名=常量值1;
常量名2:類型名=常量值2;
……舉例如下:ConstWeekDays:Integer=7;DayInYear:Integer=365;2.4.1常量(2)2.4.2變數變數實際就是程式員在內存中指定的一個帶有識別字的地址空間,變數名則是這個指定記憶體地址的識別字,而變數的類型則確定了這個記憶體地址中存的值什麼樣是合法的或可能的,並且該記憶體地址裏的值是可以改變的。1.變數的聲明變數在使用之前,也必須先進行聲明。聲明變數的保留字為Var,其聲明的一般形式如下:
Var
變數名1:類型名1;變數名2:類型名2;
……聲明變數舉例如下:
VarGz_Sum:Real;Value_1,Value_2:Integer;StrTitle:String;X:Variant;2.4.2變數2.變數的作用域變數的作用域是指它的可見性和生命期。可見性是指可以訪問該變數的區域,生命期是指一個變數可以保持它的值和可見性的時間。在
Delphi7中,變數可以在程式、單元、函數或過程的聲明部分進行聲明,聲明的位置則決定了變數的作用域。
聲明在過程或函數內部的變數有時叫做局部變數,而在應用程式開始聲明的變數叫做全局變數。全局變數可以在聲明時對它進行初始化,格式為:
var<變數名>:<類型名>=<常量運算式>
其中常量運算式的值必須與變數定義的類型相相容。2.4.2變數3.變數的強制類型轉換由於
Delphi的編譯器對各種類型的參數檢查是非常嚴格的,類型不匹配則通不過編譯器的編譯檢查,為通過編譯器的編譯檢查,經常需要把一個變數的類型轉換為另一個變數類型。強制類型轉換就是一種技術,通過它能使編譯器把一種類型的變數當作另一種類型變數,由此來通過編譯器的編譯檢查。注:強制類型轉換要求兩種類型在內存中存儲空間的大小必須相同,整數類型變數與實數類型之間不能進行這樣的轉換,應該通過預定義的標準函數,如:Trunc()或Round()函數。
2.5OOPPASCAL中的語句
ObjectPascal中的語句可分為簡單語句和結構語句兩種。簡單語句有賦值語句、空語句、跳轉語句(Goto語句)和過程語句;結構語句有複合語句、條件語句、迴圈語句和
開域語句(With語句)。
語句的書寫規則⑴可以把多個語句放在一個程式行中,也可把一個語句分多行書寫⑵每個語句都必須以分號“;”結束。
⑶對於較為複雜的程式常用到複合語句,複合語句是指將多個語句用begin和end兩個保留字包圍起來,格式如下:begin<語句1>;…;<語句n>;end;複合語句在ObjectPascal中被視為一個語句,因此在end後必須2.5.1簡單語句1.賦值語句賦值語句用來顯式地給變數賦值,即用運算式的值取代變數的當前值。賦值語句的一般形式如下:變數名
:=運算式
;如:MyNumber_1:=100;
2.空語句在
ObjectPascal中允許使用空語句,所謂空語句就是語句中沒有任何運算式的值和賦值符號,只有一個分號。
可參見P57例題。2.5.1簡單語句(2)
3.Goto語句和語句標號
Goto語句可以將程式的執行流程轉移到程式指定的某個位置,即轉移到其他語句處再繼續執行。Goto語句必須借助語句標號才可能使程式知道轉移的位置,ObjectPascal可以使用標號(Labels)來標識語句以提供Goto語句將跳轉的確切位置。Goto語句的一般形式如下:
Goto語句標號;注:Goto語句所轉向的語句標號必須和該語句同處於相同的程式段內,不能轉入或轉出一個過程或函數,也不能轉入該程式段內其他的迴圈結構。
2.5.2複合語句
複合語句由若干個簡單語句或結構語句構成,在這些語句前後加入保留字Begin和End即可。其一般形式如下:
Begin
語句1;語句2;
……
語句n;
End;例如:把兩個變數的值進行交換的複合語句如下:
BeginX:=Number_1;
Number_1:=Number_2;
Number_2:=X;
End;
2.5.3條件語句(1)
ObjectPascal語言提供的條件語句有兩種,即
If語句和
Case語句。
1.If語句
If語句需要計算一個運算式,並根據計算結果決定程式流程。If保留字後的運算式的值必須是一個布爾類型(Boolean)。其語句的一般形式如下:If<logicalexpression>Then<statement>;或語法中帶有Else子句,如:If<logicalexpression>Then<statement>Else<statement>;其中,<logicalexpression>是一個邏輯型的運算式,其值為Boolean類型。當值為真(True)時,程式執行保留字Then後的<statement>;當值為假(False)時,程式則執行保留字Else後的<statement>。兩種形式中的<statement>即可以是單語句也可以是複合語句。最後的“;”號代表著If語句的結束,所以在保留字Else之前不應加有“;”號。
2.5.3條件語句(2)2.Case語句
Case語句的一般語法形式為:
Case選擇器運算式Of
情況常量表1:語句1;情況常量表2:語句2;
……
情況常量表n:語句n;
Else
語句
End;其中:選擇器運算式的值必須為順序類型(如整型、字元型、布爾型和子界型等)。情況常量列表中的值應是選擇器運算式可能具有的值。由每一個情況常量列表列出的值在Case語句中必須是唯一的,相互間值的範圍也不允許有重疊部分。Else提供了如果所列出的情況都不出現,應執行的語句,也就是說程式只能選擇一個執行結果。根據需要也可以省略掉Else部分和它後面的語句。2.5.3條件語句(3)條件語句舉例:以例題2.2為例,用Case語句來代替If語句的實現。程式代碼如下:
CaseMarkOf90..100:ShowMessage('優');80..89:ShowMessage('良');70..79:ShowMessage('中');60..69:ShowMessage('及格');0..59:ShowMessage('不及格');ElseShowMessage('輸入超出範圍');End;2.5.4迴圈語句(1)
在編程過程中遇到的好多問題是重複單調的。比如從1加到100,問題雖然簡單卻要重複操作。我們可以把這些重複的動作交給電腦去完成。引例:求1+2+3+……+100的值。
OOPPascal語言提供了三種迴圈語句,每一種可分別適合某一特定情況。這三種迴圈分別是:Repeat、While和For迴圈語句。
迴圈結構只關心下麵的三個要素:進入迴圈結構的條件是什麼?在什麼情況下結束迴圈過程?循環體內部要完成的操作及在循環體內如何改變迴圈條件?
2.5.4迴圈語句(2)
1.Repeat迴圈語句
Repeat迴圈語句是以Repeat開始,以Until結束。它可以重複執行Repeat和Until之間的語句,直至Until後的運算式為真,則退出迴圈執行其後的語句。Repeat迴圈語句的一般形式為:
Repeat
語句1;語句2;
……
語句n;
Until<邏輯運算式>;循環體2.5.4迴圈語句(3)
2.While迴圈語句While迴圈語句在多數場合下都可以代替Repeat迴圈語句,但與Repeat迴圈語句不同的是,它的布爾類型的運算式在While之後,即在迴圈剛開始處,所以While迴圈是先進行判斷,再執行迴圈語句。While迴圈語句的一般形式為:
While<邏輯運算式>Do<循環體語句>
其中,運算式必須是一個具有Boolean類型值的運算式。如果運算式的值為真(True)則執行
Do後的循環體語句;如果運算式的值為假(False),則不執行
While循環體而直接跳到
While循環體後再執行其他語句。Do後的循環體語句,可以是簡單語句、複合語句或其他結構語句。
2.5.4迴圈語句(4)
3.
For迴圈語句
For迴圈語句可以執行一定的次數,它需要一個迴圈變數來控制迴圈的次數。For迴圈語句有兩種形式:增量迴圈和減量迴圈。
增量迴圈
For語句的一般形式為:
For迴圈變數名:=初值
To終值
Do語句
減量迴圈
For語句的一般形式為:
For迴圈變數名:=初值
DownTo終值
Do語句其中,迴圈變數必須是一個順序類型的局部變數,也不允許帶有限定符。初值和終值的類型應和迴圈變數的類型相容。循環體中的語句可以是簡單語句、複合語句或結構語句。
2.5.4迴圈語句(5)
3.
For迴圈語句
For迴圈語句可以執行一定的次數,它需要一個迴圈變數來控制迴圈的次數。For迴圈語句有兩種形式:增量迴圈和減量迴圈。
增量迴圈
For語句的一般形式為:
For迴圈變數名:=初值
To終值
Do語句
減量迴圈
For語句的一般形式為:
For迴圈變數名:=初值
DownTo終值
Do語句其中,迴圈變數必須是一個順序類型的局部變數,也不允許帶有限定符。初值和終值的類型應和迴圈變數的類型相容。循環體中的語句可以是簡單語句、複合語句或結構語句。
2.5.4迴圈語句(6)
三種迴圈的比較以上三種迴圈都可用來實現迴圈,它們的使用特點歸結為:如果知道迴圈執行多少次的話,可以使用For迴圈語句結構。For迴圈執行速度快,效率高。如果不知道迴圈要執行多少次,但至少會執行一次的話,選用Repeat…Until迴圈語句結構比較合適;當認為程式可能一次都不執行的話,最好選用While…Do迴圈語句結構。Break()過程和Continue()過程在While、Repeat或For三種的循環體中,可調用Break()過程,使得程式的執行流程發生改變,即在循環體中當某個條件成立時跳出循環體。如果想跳過循環體中部分代碼重新開始下一次迴圈,調用Continue()過程。
2.6過程和函數一般來說每個程式都由若干個主要的任務構成,每個主要任務又可分成若干個子任務,這樣逐層細化,一直細化到每個子任務都只完成一個簡單的基本功能為止。
為此,可以把某些功能完全相同或非常相近的子任務單獨提取出來,劃分成程式的基本單元,其他程式可以重複調用。這樣做提高了編程效率,是程式更加規範化,也減少了代碼的出錯率。
函數和過程就是OOPPascal語言中的兩種子程式,它們可以隨時被調用。函數在執行時將返回一個值,而過程執行時不返回任何值。
2.6.1過程的聲明過程聲明的一般語法形式為:
procedure過程名(形式參數表);指令符;局部聲明:begin執行語句
……end;在Delphi7的單元中聲明過程或函數時,只需要在單元內聲明過程或函數頭部(可在單元的介面部分,也可在單元的實現部分),然後把游標定位在頭部內,點擊滑鼠右鍵彈出快捷菜單,在該菜單中單擊【CompleteClassatCursor】菜單項即可。Delphi7會幫助完成自定義過程、函數或類的輸入。2.6.2函數的聲明函數聲明的一般語法形式為:
Function函數名(形式參數表):返回類型;指令符;局部聲明部分begin執行語句……end;需要特別注意的是:函數必須有返回值,所以在函數聲明時要給出返回值的類型;而過程沒有返回值,聲明時也就沒有返回類型。
2.6.3過程和函數的調用1.過程調用調用過程的一般形式如下:過程名(實參數表);如果聲明的過程沒有形參,調用時便可以省略後面的實參表,其形式如下:過程名;2.函數的調用調用函數的一般形式如下:函數名(實參數表);在調用過程和函數時要注意:在過程與函數聲明的作用域內才可調用該過程或函數;調用過程或函數時還要注意有參數時,參數的類型一定要保持相同。2.6.4參數傳遞方式在上面的調用過程或函數時,程式將把實參傳遞給形參,按傳遞方式的不同,OOPPascal中過程和函數的參數可分為:值參數、常量參數、變數參數和外部參數。1.值參數如果形式參數表中的參數前面沒有Const、Var或Out聲明的參數,該參數則為值參數類型。
在OOPPascal中值參數是按“值傳遞”方式將實參的值傳送給形參的。值傳遞指的是在調用子過程語句被執行時,帶實參值的調用語句將實參複製給子過程中的形參。所以要求實參的個數、數據類型與形參個數、數據類型完全匹配。2.6.4參數傳遞方式2.常量參數如果形式參數表中的參數前面有
Const聲明的參數,該形式參數則為常量參數。常量參數在過程或函數中是絕對不允許改變的參數值,也不能再作為實參傳送給該過程或函數體中另一個過程或函數的變數形參。如果在一個過程或函數中其形參在執行過程中不應該改變其數值的話,那麼就應該使用一個常量參數。這樣可以保護形參而杜絕發生意外的情況。Delphi7系統
在
Sysutils中聲明的字串比較函數,如
CompareStr()函數中的形參就是常量參數,它的首部如下:
FunctionCompareStr(ConstS1,S2:String):Integer;2.6.4參數傳遞方式3.變數參數如果形式參數表中的參數前面有
Var聲明的參數,該形式參數則為變數參數類型。變數參數的參數傳遞方式為“地址傳遞”方式。地址傳遞指的是調用過程語句被執行時,過程中的形參直接引用了調用語句中的實參。所以形參與實參實質上是用同一個存儲單元。如果在子過程中修改了形參值,就會直接體現在實參上,在某些情況下,會造成負面影響。2.6.4參數傳遞方式4.外部參數如果形式參數表中的參數前面有
Out聲明的參數,該形式參數則為外部參數類型。外部參數與變數參數一樣在實參與形參之間的值傳遞是按地址傳遞方式進行的。但是使用時與變數參數有很大的區別。當調用含有外部參數的過程或函數時,所引用的實參(變數)的初始值將被拋棄,該變數僅被用來作為一個容器來存儲過程或函數執行的中間結果。在編寫應用象COM、CORBA這樣的分佈式對象模型的程式中,會經常使用外部參數。
可視化組件的應用
內容提要
窗體與組件常用組件的使用3.1窗體與組件在Windows環境中,人機交互主要是在一些窗體和對話框中進行的。在Delphi中,窗體指的就是窗口和對話框,進行可視化程式設計一般就是從窗體開始並在窗體中完成的。窗體本身就是一個組件,它與其他組件不同的是:窗體像一個可以放置東西的容器,可以根據任務的需要在其上放置各種各樣的組件。窗體與組件的關係參見圖3-1。3.1.1窗體與組件的關係圖3-1窗體與組件3.1.2組件的公共屬性和事件
不同的組件具有不同的屬性、方法和事件,但有些屬性和事件是公共的,也就是它們雖然出現在不同的組件中但含義和使用方法相同。
1.常用的公共屬性(1)Action屬性。用來設置與菜單項相關的動作對象,可以通過動作列表編輯器來設置。(2)Align屬性。用於決定組件在窗體或上一級組件中的位置和尺寸。(3)Autosize屬性。用於決定組件是否隨其所包含內容的大小而調整尺寸。(4)Caption屬性。用來設置組件的標題。(5)Color屬性。用來設置組件的顏色。
(6)Cursor
屬性。用於設定當滑鼠的游標落入該組件的區域時滑鼠游標的形狀。(7)Font
屬性。用於設置組件上所顯示的文字的字體。(8)Height
屬性和Width屬性。用於設置組件的高度和寬度。(9)Hint
屬性和ShowHint屬性。Hint屬性用於設置滑鼠在組件上停留是顯示提示資訊的內容;ShowHint屬性用於指定滑鼠在該組件上停留時是否顯示提示資訊。(10)Left
屬性和Top屬性。指定該組件在窗體中的左上頂點的座標值。(11)Name
屬性。這是每個組件都具有的屬性,該屬性用於指明組件對象的名字,通過組件對象的名字來使用組件。(12)ParentColor
屬性。
ParentFont屬性和ParentShowHint屬性。當這些屬性值設置為Ture時,組件使用它的上一級組件的同一屬性的設置植,這樣可以使程式保持一致的風格。(13)PopUpMenu
屬性。用於指定當右擊該組件時彈出時的彈出式菜單PopUpMenu的名字,此時這個彈出式菜單應該已經存在,PopUpMenu本身也是一個組件。(14)Text屬性。 用於指定文本類組件顯示的文本,類似於Caption屬性。(15)Visible屬性。決定組件是否可見。當設置為True時,在運行時可以看到該組件;設為False時運行時不可見。2.常用的公共事件
⑴
onClick事件。滑鼠左鍵單擊某組件時觸發該事件。⑵
onDblClick事件。滑鼠左鍵雙擊某組件時觸發該事件。⑶
OnEnter事件和OnExit事件。
當通過滑鼠單擊組件或Tab鍵跳轉到組件上時,該組件獲得焦點,此時該組件的OnEnter事件被觸發;該組件由焦點狀態轉為非焦點狀態時將觸發OnExit事件。⑷
OnMouseDown事件、OnMouseMove事件和OnMouseUp事件這是回應滑鼠的一組事件。其中當滑鼠在組件上被按下時觸發OnMouseDown事件;當滑鼠在組件的顯示區域內移動時觸發OnMouseMove事件;當釋放了在組件區域內按下的滑鼠鍵時觸發OnMouseUp事件。這三個事件不僅可以判斷滑鼠按下的是左、中、右鍵中的哪一個鍵,還可以判斷是否同時按下了Alt、Shift或Ctrl鍵。具體應用請看下麵章節的組件介紹。⑸OnKeyDown事件、OnKeyUp事件和OnKePress事件這是回應鍵盤的一組事件。組件處於啟動的焦點狀態時,按下了鍵盤上的鍵時將觸發OnKeyDown事件,返回的是按下鍵的鍵值,可以是複合鍵;釋放一個按下的鍵時將觸發OnKeyUp事件;鍵盤上的鍵一次完整地按下和釋放操作將觸發OnKeyPress事件。
3.2常用組件的使用Delphi封裝了大量的可視化組件,使程式員能夠在拖拖放放中輕鬆地設計程式介面。Delphi中提供的【Standard】、【Additional】和【Win32】三個標籤頁放置基本組件。這些組件都是任何程式設計必不可少的。本節將詳細介紹常用組件的使用方法。3.2.1Label組件
Label(標籤)組件在Standard標籤頁中,主要用於在窗體中顯示提示資訊,常與Edit組件一起使用,是顯示文本的主要組件。其特殊屬性有:1.Autosize屬性 該屬性用來判斷Label(標籤)組件是否隨Caption屬性值自動調整大小。如果該屬性值為True,則Label的長度隨著Caption屬性值自動調整大小;如果該屬性值為False,則Label保持設計時定義的大小不變,此時,若標題太長,則只能顯示部分內容。2.Caption屬性 該屬性用來設置在標籤上顯示的文本。3.Wordwrap該屬性 該屬性用於設置Caption屬性的顯示方式。缺省為False,表示標籤上的標題(提示資訊)不能自動換行;如果該屬性為True,則標籤將在垂直方向變化大小,以使其與顯示的文本相適應,而水準方向的大小不變。但若想使該屬性起作用,還必須將Autosize屬性設為True。4.Layout該屬性 該屬性可以改變文本在標籤中的位置。5.Transparent該屬性 該屬性決定標籤的背景是否透明。其值為True時,透明,即標籤不會擋住它下麵的組件。默認值為False。3.2.2Edit組件
Edit組件在Standard標籤頁中,也稱編輯框組件是Windows程式中常用的組件,它主要用於輸入單行文字。Edit組件的常用屬性有:1.AutoSelect屬性
該屬性確定當編輯框獲得輸入焦點時,編輯框中的文字是否自動被選中。2.AutoSize屬性該屬性確定編輯框是否隨字體變化而自動變動尺寸,缺省為True。3.BorderStyle屬性該屬性確定Edit控件是否有邊框。4.CharCase屬性該屬性設置文本框內字元的大小寫,其值為:ecLowerCase,全部轉換為小寫;ecNormal,不轉換;ecUpperCase,全部轉換為大寫。5.HideSelection屬性該屬性決定當輸入焦點從Tmemo組件移走後,編輯框內原來被選中的文本是否依然保持選中狀態。其設置為True,不保持;其值為False,保持。該屬性的默認值為True。6.MaxLength屬性該屬性確定編輯框最多可以輸入的字元數,缺省值為0,表示可以輸入任意多的字元;如果該屬性不為0,只能向編輯框中輸入小於或等於設定值的字元數。7.Modified屬性該屬性確定編輯框中的內容自建立以來或者Modified屬性最後一次被設置為False之後是否被修改。8.PasswordChar屬性該屬性在一些編輯框組件如TMaskEdit、TDBEdit中都有。缺省時該屬性為#0,即沒有掩碼。用戶可以自己設置一個掩碼,如‘*’,則用戶在編輯框中輸入的字元都將以‘*’字元顯示,而隱藏真實的字元。9.Text屬性該屬性用於顯示和保存編輯框中的內容。10.ReadOnly屬性該屬性確定程式運行時,用戶是否可以改變編輯框中的內容。若為True,表示編輯框是只讀的,其內容不可以編輯修改。11.SelLength屬性該屬性可以返回在編輯框中被選中的文本的長度。12.SelStart該屬性該屬性確定在編輯框中被選中文本的起始位置(第一個字元的序號為0)。13.SelText屬性該屬性用來設置或指示選中的文本。
Edit組件的主要方法方法說明Clear使用該方法可以清除文本框中的文本內容。CanFocus該方法用來測試Memo控件是否可以接受焦點。如果其值為False,則控件不能接受焦點;反之可以接受焦點。ClearSelection該方法將刪除Memo框中被選中的文本。如果在Memo控件中沒有被選擇的內容,那麼該方法不刪除任何東西。CopyToClipboard使用該方法可以將文本框中選中的內容複製到剪切板中。CutToClipboard使用該方法可以將文本框中選中的內容剪切到剪切板中。PasteFromClipboard使用該方法可以將剪切板中的內容粘貼到文本框中。SelectAll使用該方法將選中文本框中的所有內容。
Edit組件常用的幾個事件有:OnChange、OnKeyPress、OnEnter事件。Edit組件的常用事件
事件說明OnChange當編輯框中的內容發生變化時,觸發該事件,它是Edit中最常用,也是最有用的事件之一。OnKeyPress當按下一個按鍵時,觸發該事件。OnEnter編輯框獲得輸入焦點時,觸發該事件。3.2.3Memo組件Memo組件在Standard標籤頁中,Memo組件為用戶提供了一種處理多行文本的方法,還可用它快速地閱讀檔中的數據,而且讀取和保存文本的最大長度可達255KB。
Memo組件的屬性
Memo組件的屬性、方法和事件與Edit組件大致相同。其特有的幾個屬性有:1.Lines屬性按行處理文本。2.ScrollBars屬性該屬性用來設置備註框是否出現滾動條以及滾動條的種類。3.WordWrap屬性該屬性用來決定當輸入的文本到達右邊界時是否插入軟回車,以便換到下一行再輸入。3.2.3Memo組件Memo組件的方法⑴
使用剪貼板(Clipboard)
Memo組件同Edit組件一樣,也可使用CutToClipboard、CopyToClipboard和PastFromClipboar這三種方法,實現將Memo組件中被選擇文本剪切或複製到剪貼板上,以及將剪切板上的內容粘貼到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標籤頁中,MaskEdit組件(也稱掩碼編輯框)是一種特殊的編輯框,它的主要屬性是EditMask。使用它可以設計出許多複雜的輸入格式。在選用MaskEdit之後,需要為它設計一個輸入格式。其格式輸入符參見P99頁表3-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东海洋文化旅游发展集团有限公司2025年度公开招聘拟聘用人员笔试历年典型考点题库附带答案详解
- 白山市2025吉林白山市事业单位招聘高层次和急需紧缺人才166人(1号)笔试历年参考题库典型考点附带答案详解
- 泸州市发布《泸州市2025年秋季企事业单位人才岗位需求信息》(6539人)笔试历年参考题库典型考点附带答案详解
- 曲靖市2025云南省曲靖市委党校青年人才专项引进笔试历年参考题库典型考点附带答案详解
- 广东省2025广东省农业科学院农业经济与信息研究所招聘劳动合同制工作人员2人笔试历年参考题库典型考点附带答案详解
- AI在智能建造中的应用
- AI在虚拟现实技术中的应用
- 2026糖尿病荞麦食用注意事项课件
- 工业旅游旅游产品定制协议
- 产后出血的护理服务与质量管理
- DB64+1858-2022+农业气象观测规范宁夏菜心
- 建立模糊专家系统实验报告
- 爱情片《百万英镑》台词-中英文对照
- 基于solidworks的齿轮泵仿真
- 半导体物理学(刘恩科)第七版-完整课后题答案
- 政策监控案例北京动物园搬迁风波
- 基础生态学-群落的组成与结构
- 理气药的药理作用(中药药理学课件)
- 霍金斯能量层级(全)
- T-SXDZ 057-2020 煤矿冲击地压危险性评价报告编制细则
- GB/T 25146-2010工业设备化学清洗质量验收规范
评论
0/150
提交评论