




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
高級程序設計棗莊學院信息科學與工程學院主要內容應用程序的基本結構編譯項目文件前的設置項目文件項目文件管理與優化編譯并運行項目項目文件中Application和Screen對象程序設計中的常用基本技巧第三章應用程序的框架和設計棗莊學院精品課程3.1應用程序的基本結構利用Delphi開發的應用程序從宏觀上可分為三個層次,即項目文件、主單元文件和功能模塊文件。項目文件是應用程序的主程序文件,它主要完成應用程序初始化及各種應用程序模塊的管理工作。主單元文件是用于控制應用系統操作的有窗體的單元文件,在項目文件中,主單元是由Application對象的Run過程調用執行的。功能模塊文件是能獨立完成某項功能的程序,它一般由主單元通過菜單調用來執行,功能模塊通常是有窗體的單元文件或數據模塊文件。棗莊學院精品課程應用程序基本構成圖示單元文件窗體文件主單元單元文件窗體文件數據模塊模塊n模塊1模塊2封面程序密碼確認程序主程序棗莊學院精品課程3.2開發應用程序前的系統設置設置自動保存程序代碼功能執行菜單Tools→EnvironmentOptions自動保存設置棗莊學院精品課程3.2開發應用程序前的系統設置設置自動保存程序代碼
若選中Editorfiles,則表示當編譯應用程序時,Delphi將自動保存當前正在編輯的程序文件。若選中ProjectDesktop,則表示當編譯應用程序時,Delphi自動保存當前項目的桌面信息(一旦保存了桌面信息,當下次啟動Delphi時,系統會自動回到保存的桌面狀態)。棗莊學院精品課程3.2開發應用程序前的系統設置設置使用撤銷操作執行菜單Tools→EditorOptions設置處棗莊學院精品課程3.3設置使用開發包使用外來組件包需要如下2個步驟:安裝組件包;設置組件包的搜索路徑。安裝組件安裝未編譯的組件包(即有源程序代碼的包)安裝已編譯組件包。棗莊學院精品課程未編譯組件包的安裝首先打開要安裝包的項目文件(為.dpk),則顯示類似如右圖所示的窗口(若系統沒有出現此窗口,可單擊菜單Project→ViewSource,然后再按F12功能鍵),單擊右圖中的“Install”按鈕即完成組件包的安裝。安裝按鈕棗莊學院精品課程設置組件包的搜索路徑單擊菜單Tools→EnvironmentOptions,選擇“Library”頁,并按下圖操作。加入選擇包所在路徑選擇包所在文件夾棗莊學院精品課程3.3項目文件項目文件是應用系統的主控文件,它的擴展名是dpr。本節主要內容:項目文件的建立結構加入或移出單元文件設置棗莊學院精品課程3.3.1建立項目文件方法:File→New→Application,則建立一個名為Project1.dpr新項目文件.
棗莊學院精品課程3.3.2項目文件的組成結構查看項目文件內容可使用Project→ViewSource菜單。項目文件內容主要有三大部分組成:聲明項目名部分、說明部分和執行部分。聲明部分格式:program項目名;用于說明項目文件名,可通過File->saveas菜單修改。棗莊學院精品課程3.3.2項目文件的組成結構說明部分說明項目文件可引用的單元、資源文件及定義項目文件中使用的類型、常量、變量、過程或函數等。除定義變量、過程或函數定義外,常用的格式語句:uses語句和資源引用語句
uses語句單元名in'文件名'{窗體名}讀取資源語句
{$R*.RES}
注意:這里的*表示與項目名重名。
棗莊學院精品課程3.3.2項目文件的組成結構執行部分執行部分是項目文件中Begin...End之間的部分,是應用程序啟動時首先要執行的程序代碼。主要有三種語句:初始化應用程序語句:Application.Initialize;窗體對象實例化語句,格式為:Application.CreateForm(窗體類名,窗體名);例如:Application.CreateForm(TForm1,Form1);上格式語句可以有多個,Delphi系統將第一個使用CreateForm語句建立的窗體默認為應用程序的主窗體。棗莊學院精品課程3.3.2項目文件的組成結構執行主窗體對應的程序:Aplication.Run;上語句不僅顯示主窗體,同時它負責當主窗體關閉時,退出應用程序并返回到操作系統。注意:項目文件一般是由系統自動維護的,除非特別需要,一般不修改其中的代碼。棗莊學院精品課程3.3.3將單元文件加入或移出項目文件用于將應用系統的模塊程序(單元文件)組合到項目中
加入移出單元文件步驟:打開項目文件執行File→Open菜單,找到要打開的項目文件名(.dpr)并打開。向項目文件中加入單元:執行Project→AddtoProject菜單,則出現一個對話框,在對話框中查找并選擇你要加入的單元文件,最后再單擊“打開”按鈕。注意:加入到項目文件中的單元,在項目文件中將以“單元名in'文件名'{窗體名}”的格式出現在Uses語句中。棗莊學院精品課程3.3.3將單元文件加入或移出項目文件用于將應用系統的模塊程序(單元文件)組合到項目中從項目文件中移出單元文件:單擊Project→RemovefromProject菜單注意:沒有任何單元文件的項目文件將編譯成一個無任何功能應用程序。加入或移出單元文件還可通過使用工具欄上的快捷按鈕來完成,如圖所示。加入單元移出單元棗莊學院精品課程3.3.4設置項目編譯環境主要用于解決內存不夠、文件存儲等問題。單擊Project→Options菜單可進入項目編譯環境設置對話框,設置方法如下:設置窗體通常情況下,除主窗體外,其余窗體應設置成可用窗體,設置方法是:首先,在項目編譯環境設置對話框上選擇Forms頁;其次,在“Autocreateforms”子窗口中選擇窗體名后單擊“>”按鈕,使其轉移到“Avialableforms”子窗口中,這樣就使自動創建窗體變成可用窗體。注意:主窗體必須是自動創建窗體。設置主窗體自動創建窗體可用窗體棗莊學院精品課程3.3.4設置項目編譯環境設置應用程序在項目編譯環境設置對話框中選擇“Application”頁(如圖所示),在此口主要做如下四個設置:標題
是應用程序最小化時在任務欄上顯示的標題。幫助文件用于設置當激活幫助時,應用程序自動調用的幫助文件。圖標用于設置應用程序在被最小化時顯示的圖標。目標文件擴展名用于設置編譯生成的可執行文件的擴展名。標題設置幫助設置修改圖標設置擴展名棗莊學院精品課程3.3.4設置項目編譯環境應用程序可使用兩種包,即設計期包和運行期包??赏ㄟ^項目編譯環境設置對話框來設置,設置方法如下:打開項目編譯環境設置對話框,選擇Packages,則顯示如圖所示對話框,若選中BuildwithRuntimepackages,則當前項目文件在編譯時將使用運行期包,否則,使用設計期包。注意:若設置對話框中的Default檢查框,則將當前設置作為以后新建項目的默認值。標題設置幫助設置修改圖標設置擴展名棗莊學院精品課程設置項目文件存放路徑為防止多種應用項目文件因存放而產生的混亂,合理分配每個應用程序的存放路徑將顯得非常重要。設置項目文件的存放位置可通過項目文件設置對話框來完成,如右圖:輸出目錄單元輸出目錄搜索目錄棗莊學院精品課程3.3.3將單元文件加入或移出項目文件常用的路徑設置輸出路徑用于設置Delphi編譯生成的可執行文件(exe)的存放路徑。單元輸出路徑用于設置單元編譯后生成的文件(.dcu文件)的存放路徑。搜索路徑用于指定編譯器的搜索路徑棗莊學院精品課程3.3.5項目中常用的文件
單元文件
單元文件主要分為窗體單元文件、組件單元文件和通用單元文件三種類型:
窗體單元文件具有窗體的單元,還可分為窗體單元文件(Form)、框架單元文件(Frame)和數據模塊單元文件(DataModule)組件單元文件組件單元是創建新組件時建立的單元文件,有些有窗體,有些則沒有。通用單元文件通用單元主要用于定義應用程序所有單元均可使用的數據類型、變量、過程、類等。棗莊學院精品課程3.3.5項目中常用的文件
單元文件
單元文件主要分為窗體單元文件、組件單元文件和通用單元文件三種類型:
窗體單元文件具有窗體的單元,還可分為窗體單元文件(Form)、框架單元文件(Frame)和數據模塊單元文件(DataModule)組件單元文件組件單元是創建新組件時建立的單元文件,有些有窗體,有些則沒有。通用單元文件通用單元主要用于定義應用程序所有單元均可使用的數據類型、變量、過程、類等。棗莊學院精品課程3.3.5項目中常用的文件窗體文件是單元文件的伴隨文件,用于快速開發應用程序的界面,擴展名為dfm。建立窗體文件的方法:執行菜單:File→New→Form
在默認情況下,我們看到的窗體文件只是一個窗體。按F12功能鍵可實現窗體與其對應單元代碼編輯窗口的互換棗莊學院精品課程資源文件目的:用于存放應用程序的圖標、圖片和版本等信息。使用資源文件方法:{$R*.res}
此語句常用于讀取資源文件。其中,*表示與當前單元或項目文件重名。建立資源文件方法:使用Tools→ImageEditor菜單右擊右擊棗莊學院精品課程項目選項和桌面設置文件目的:保存項目或桌面設置。項目選項文件的擴展名為dof,它存儲的是通過Project→Options菜單設置的選項。桌面設置文件的擴展名為dsk,它存儲的是通過Tools→Options菜單設置的桌面選項。棗莊學院精品課程備份文件備份文件是恢復誤操作而準備的文件。其文件名與原文件重名,擴展名前加“~”符號。如:項目文件~dpr
單元~pas
窗體文件~dfm
設置系統自動保留備份文件:Tools->EditorOptions->Display設置保留備份棗莊學院精品課程包文件作用:類似于動態鏈接庫,保存可被其它程序調用的程序代碼。文件擴展名:dpk(Delphipackage的縮寫),此文件編譯時可生成兩種文件:擴展名是.dcp文件,它一種中間文件。擴展名是.bpl文件,它是能被程序使用的最終文件。棗莊學院精品課程3.4項目文件的管理與優化常用的方法:一個項目獨占一個文件夾,可避免不同項目中同名文件的相互覆蓋。共享單元放在一個文件夾,可提高單元文件的利用效率。棗莊學院精品課程3.5編譯并運行項目編譯的目的是將項目文件轉化為可執行文件。有兩種編譯項目文件的方法:(1)Compile編譯:用于編譯做過修改的源程序。(2)Build編譯:對項目中的所有文件重新編譯。使用方法:Project->Compile或Build運行編譯后的文件:Run->Run(F9編譯并運行項目文件)另外還有F7、F8、F4。
棗莊學院精品課程3.6項目中的Application對象為加快程序開發,在任何有窗體的項目中,系統自動定義了一個名為Application的對象,以便用其完成某些獨特的功能。
本節講解Application對象如下內容:屬性及應用方法及應用事件及應用棗莊學院精品課程屬性及應用Application對象有較多的屬性,常用屬性見下表:
屬性名 含義Active 判斷當前應用程序是否具有焦點。ExeName 返回應用程序所在文件名(含路徑)。Hint 用于保存組件的提示信息。注意,當鼠標移動到某個組件上時,則組件的Hint屬性值就被賦到此屬性中。Icon 用于設置應用程序在任務欄上顯示的圖標。MainForm 返回當前應用程序的主窗體對象。ShowHint 設置是否顯示應用程序的提示信息。Title 應用程序任務欄上顯示的標題。棗莊學院精品課程常使用ExeName屬性取應用程序所在的路徑名,如:Label3.caption:=ExtractFilePath(Application.ExeName);其中:ExtractFilePath函數用于返回字符串中的路徑名。ExtractFileName返回字符串中的文件名。這兩個函數用處很大,制作自動安裝軟件時要用到它。棗莊學院精品課程Application對象的方法
在項目文件中常使用的方法InitializeCreateFormRun
上述三種方法的作用分別是初始化應用程序、創建窗體和運行應用程序。
使用格式如下:Application.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;棗莊學院精品課程ProcessMessages方法ProcessMessages用于從Windows消息隊列中檢索任何等待處理的消息并進行處理.下面看一段代碼:
whileJ<64000dobeginY:=Random(J);Inc(J);Application.ProcessMessages;end;若沒有Application.ProcessMessages方法,則循環程序執行結束前不會響應用戶的其它請求。棗莊學院精品課程MessageBox方法用于打開一個標準的Windows提示信息框。具體使用方法參見第5章提示信息窗口一節。例如:
ifApplication.MessageBox('提示信息','標題',MB_OKCANCEL)=idokthenShowMessage('ss');Minimize方法用于把應用程序的主窗口最小化。Restore方法用于把應用程序的恢復主窗口顯示狀態。棗莊學院精品課程Application對象的事件Application有較多的事件,Delphi專門為它提供了一個事件組件,如圖所示。
事件列表棗莊學院精品課程Application較常用的事件列表如下:
事件 描述OnActivate 當應用程序被激活時,將觸發這個事件。OnDeativate 當應用程序被掛起或切換到其它應用程序時將觸發這個事件。OnException 當一個未處理的異常發生時,將觸發這個事件。OnHelp 當用戶請求幫助的時候將觸發這個事件。OnMessage 當應用程序接收到一個消息時將觸發這個事件。OnHint 當鼠標指向某個組件時將觸發這個事件。OnIdle 當應用程序進入空閑狀態時將觸發這個事件。常使用此事件編寫動畫游戲。棗莊學院精品課程例題例1:利用Application組件設計應用程序,要求在主窗體的Statusbar組件中顯示鼠標所指組件的提示信息。提示:在Application組件的Onhint事件中加入下代碼:
Statusbar1.SimpleText:=Application.Hint;棗莊學院精品課程3.7項目中的Screen對象屬性名含義ActiveControl它是只讀屬性,用于保存當前屏幕上獲得焦點的組件。ActiveForm用于保存獲得焦點的窗體。Cursor用于設置應用程序的光標形狀。DataModuleCount表示應用程序中數據模塊的個數。DataModules保存應用程序中的數據模塊列表。FormCount表示應用程序中窗體的個數。Forms保存應用程序中的窗體列表。Fonts保存屏幕所支持的各種字體名稱。Height表示屏幕的高度(以像素為單位)。PixelsPerInch表示表示系統字體的相對縮放比例。Width表示屏幕的寬度(以像素為單位)。Forms標準單元中定義的,其常用屬性如下表棗莊學院精品課程3.8常用程序設計技巧1.使用資源文件使用資源文件(.res)就是使用資源文件中存放的位圖、圖標、光標等數據。使用資源文件前提條件:使用語句:{$R資源文件名.res}。資源名中的字母必須大寫。注意:若在程序計期修改了資源文件,請使用Project→BuildAllProjects重新編譯后再執行程序。棗莊學院精品課程讀取資源的常用方法:取圖片格式:image1.Picture.Bitmap.LoadFromResourceName(hInstance,‘圖片名');取圖標格式:Application.Icon.Handle:=LoadIcon(hInstance,‘圖標名稱’);其中hInstance表示包含資源文件的當前應用程序對象。取光標格式:Screen.Cursons[X]:=Loadcursor(hInstance,’光標名’);Screen.Cursor:=X;其中:X為正整數,因為默認光標取0到-22(即從crDefault到crSizeAll)棗莊學院精品課程2.修改屏幕分辨率使用WindowsAPI兩個函數完成此功能,分別為:
(1)獲取顯示模式數據函數定義格式:EnumDisplaySettings(lpDName,iMNum,lpDMode)功能:獲取指定的顯示模式數據,若顯示模式不存在,則返回值為0(False)。其中:lpDName:一般設置為Nil。
iMNum:用于指定顯示模式號。
lpDMode:是TDevMode類型的指針變量,用于保存獲取的顯示模式數據。
棗莊學院精品課程VarDevModeArray:TList;//顯示模式信息結構列表……varDevModeCount:Integer;//顯示模式的個數DevModeInfo:^TDevMode;//定義一個指向顯示模式的指針beginDevModeArray:=TList.Create;//創建列表對象DevModeCount:=0;GetMem(DevModeInfo,SizeOf(TDevMode));//分配內存
{枚舉顯示模式,并將獲取的屬性值其保存在到DevModeInfo變量中}棗莊學院精品課程whileEnumDisplaySettings(NIL,DevModeCount,DevModeInfo^)dobeginDevModeArray.Add(DevModeInfo);//將屏幕信息保存Inc(DevModeCount);//屏幕自信保存到ListBox1列表組件中ListBox1.Items.Add(IntToStr(DevModeInfo^.dmPelsWidth)+'×'+IntToStr(DevModeInfo^.dmPelsHeight)+','+IntToStr(Trunc(IntPower(2,DevModeInfo^.dmBitsPerPel)))+'colors');GetMem(DevModeInfo,SizeOf(TDevMode));//分配內存end;FreeMem(DevModeInfo,SizeOf(TDevMode));//釋放分配的內存ListBox1.ItemIndex:=0;end;棗莊學院精品課程(2)設置屏幕的顯示方式函數定義格式:ChangeDisplaySettings(lpDevMode,dwflags)
功能:按指定模式修改顯示器的分辨率。其中:1)lpDevMode是顯示模式數據的TDevMode類型指針變量。2)dwflags常使用CDS_UPDATEREGISTRY,表示修改顯示模式后,同時修改注冊表。3)函數返回值:當返回DISP_CHANGE_SUCCESSFUL時表示修改成功,當返回DISP_CHANGE_RESTART,則表示重啟操作系統后才能使設置起作用。棗莊學院精品課程部分程序代碼:VarModeChange:Longint;begin{更改顯示模式,并修改注冊表}ModeChange:=ChangeDisplaySettings(模式指針變量,CDS_UPDATEREGISTRY);ifModeChange=DISP_CHANGE_SUCCESSFULthenShowMessage('動態改變屏幕分辨率成功')elseifModeChange=DISP_CHANGE_RESTARTthenShowMessage('需要重新起動才能使設置起作用');end;棗莊學院精品課程3.8.3避免應用程序重復啟動由于Windows是一個多任務的操作系統,因此可時運行同一程序的多個實例,但有時為了數據安全,要求應用程序只能運行一個實例。主要有兩種方法:1.“查找窗口”法;2.“創建互斥對象”。棗莊學院精品課程1.查找窗口法工作原理:應用程序運行前使用FindWindow函數首先查找當前操作系統中是否加裁主窗體,如果有則不啟動。FindWindow函數使用格式:FindWindow(類名,窗體標題名);其中:“類名”表示表示查找窗體所屬的類。例如:將項目文件修改為如下格式:
VarHwnd:Thandle;beginHwnd:=FindWindow('TForm1','Main');//查找主窗體
IfHwnd=Thandle(nil)then//如果沒找到應用程序的主窗體則啟動應用程序
BeginApplication.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;end;
end棗莊學院精品課程2.使用互斥對象本方法是在應用程序中通過CreateMutex函數創建互斥對象,若創建不成功,則說明系統已經啟動,則系統不再啟動。使用格式:
CreateMutex(lpMA,bIO,lpName)功能:創建互斥對象。
其中:參數lpMA是一個指向安全屬性的指針,一般使用空指針nil,表示使用默認安全屬性。參數bIO表示互斥對象是否指定初始所有者,一般默認為True。參數lpName用于設置要創建的互斥對象名。
棗莊學院精品課程項目文件中的部分代碼:VARMutex:Thandle;beginMutex:=CreateMutex(NIL,True,'Form1');//判斷創建互斥對象是否成功
IFGetLastError<>ERROR_ALREADY_EXISTSTHENBEGINApplication.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;end;ReleaseMutex(Mutex);end.棗莊學院精品課程4.設置應用程序啟動權限通過項目文件中加入判斷進入權限的代碼,解決戶身份的驗證問題。分析:由于應用程序運行是通過Application的Initialize、Createform、和Run三個過程實現的,因此在執行這豐類過程前加入判別用戶權限的指令,若符合要求則啟動,否則退出系統。程序基本格式如下:輸入口令->Passwordif系統口令=Passwordthenbegin
執行啟動程序代碼;endElse退出系統;棗莊學院精品課程請看Initialize.dpr的源程序實例:programInitialize;usesForms,Dialogs,ChangeScreenin'ChangeScreen.pas'{Form1};varPassword:String;{$R*.res}beginifInPutQuery('登錄口令','輸入口令',password)thenbeginifpassword='Screen'then//判斷登錄口令
beginApplication.Initialize;Application.CreateForm(TForm1,Form1);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CHTS 20018-2022道路運輸車載售貨機使用安全技術要求
- T/CHTS 10050-2022公路工程無人機傾斜攝影測量技術指南
- T/CHATA 016-2021結核菌素皮膚試驗-γ干擾素釋放試驗兩步法的操作技術規范
- T/CGCC 74-2022大宗商品電子交易綜合服務平臺應用效果評價指南
- T/CECS 10244-2022綠色建材評價冷卻塔
- T/CECS 10023-2019無內置熱源相變蓄熱裝置
- T/CCT 012-2023 T/CCCAT 008-2023干法選煤工程設計規范
- T/CCT 006-2022煤礦礦井水處理運營能力評價
- T/CCS 011-2023采煤工作面智能化接續設計要求
- T/CCMA 0150-2023工業車輛用氫燃料電池動力系統技術規范
- GB/T 28583-2025供電服務規范
- 設備故障應急維修預案
- 吉林2025年生態環境部松遼流域生態環境監督管理局生態環境監測與科學研究中心招聘筆試歷年參考題庫附帶答案詳解
- 四川西華師范大學招聘輔導員考試真題2024
- 貴州游船傾覆防災減災安全教育時事熱點
- 公務員法律考試題及答案
- 黑龍江省大慶市石油高級中學2024-2025學年高二上學期期末語文試題 含解析
- 呼吸性酸中毒試題及答案
- 基于深度學習的手術機器人在后交叉韌帶斷裂中的導航優化-洞察闡釋
- 檢察院相關試題及答案
- 安全生產管理機制
評論
0/150
提交評論