ch3應(yīng)用程序的框架_第1頁(yè)
ch3應(yīng)用程序的框架_第2頁(yè)
ch3應(yīng)用程序的框架_第3頁(yè)
ch3應(yīng)用程序的框架_第4頁(yè)
ch3應(yīng)用程序的框架_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

高級(jí)程序設(shè)計(jì)棗莊學(xué)院信息科學(xué)與工程學(xué)院主要內(nèi)容應(yīng)用程序的基本結(jié)構(gòu)編譯項(xiàng)目文件前的設(shè)置項(xiàng)目文件項(xiàng)目文件管理與優(yōu)化編譯并運(yùn)行項(xiàng)目項(xiàng)目文件中Application和Screen對(duì)象程序設(shè)計(jì)中的常用基本技巧第三章應(yīng)用程序的框架和設(shè)計(jì)棗莊學(xué)院精品課程3.1應(yīng)用程序的基本結(jié)構(gòu)利用Delphi開(kāi)發(fā)的應(yīng)用程序從宏觀上可分為三個(gè)層次,即項(xiàng)目文件、主單元文件和功能模塊文件。項(xiàng)目文件是應(yīng)用程序的主程序文件,它主要完成應(yīng)用程序初始化及各種應(yīng)用程序模塊的管理工作。主單元文件是用于控制應(yīng)用系統(tǒng)操作的有窗體的單元文件,在項(xiàng)目文件中,主單元是由Application對(duì)象的Run過(guò)程調(diào)用執(zhí)行的。功能模塊文件是能獨(dú)立完成某項(xiàng)功能的程序,它一般由主單元通過(guò)菜單調(diào)用來(lái)執(zhí)行,功能模塊通常是有窗體的單元文件或數(shù)據(jù)模塊文件。棗莊學(xué)院精品課程應(yīng)用程序基本構(gòu)成圖示單元文件窗體文件主單元單元文件窗體文件數(shù)據(jù)模塊模塊n模塊1模塊2封面程序密碼確認(rèn)程序主程序棗莊學(xué)院精品課程3.2開(kāi)發(fā)應(yīng)用程序前的系統(tǒng)設(shè)置設(shè)置自動(dòng)保存程序代碼功能執(zhí)行菜單Tools→EnvironmentOptions自動(dòng)保存設(shè)置棗莊學(xué)院精品課程3.2開(kāi)發(fā)應(yīng)用程序前的系統(tǒng)設(shè)置設(shè)置自動(dòng)保存程序代碼

若選中Editorfiles,則表示當(dāng)編譯應(yīng)用程序時(shí),Delphi將自動(dòng)保存當(dāng)前正在編輯的程序文件。若選中ProjectDesktop,則表示當(dāng)編譯應(yīng)用程序時(shí),Delphi自動(dòng)保存當(dāng)前項(xiàng)目的桌面信息(一旦保存了桌面信息,當(dāng)下次啟動(dòng)Delphi時(shí),系統(tǒng)會(huì)自動(dòng)回到保存的桌面狀態(tài))。棗莊學(xué)院精品課程3.2開(kāi)發(fā)應(yīng)用程序前的系統(tǒng)設(shè)置設(shè)置使用撤銷操作執(zhí)行菜單Tools→EditorOptions設(shè)置處棗莊學(xué)院精品課程3.3設(shè)置使用開(kāi)發(fā)包使用外來(lái)組件包需要如下2個(gè)步驟:安裝組件包;設(shè)置組件包的搜索路徑。安裝組件安裝未編譯的組件包(即有源程序代碼的包)安裝已編譯組件包。棗莊學(xué)院精品課程未編譯組件包的安裝首先打開(kāi)要安裝包的項(xiàng)目文件(為.dpk),則顯示類似如右圖所示的窗口(若系統(tǒng)沒(méi)有出現(xiàn)此窗口,可單擊菜單Project→ViewSource,然后再按F12功能鍵),單擊右圖中的“Install”按鈕即完成組件包的安裝。安裝按鈕棗莊學(xué)院精品課程設(shè)置組件包的搜索路徑單擊菜單Tools→EnvironmentOptions,選擇“Library”頁(yè),并按下圖操作。加入選擇包所在路徑選擇包所在文件夾棗莊學(xué)院精品課程3.3項(xiàng)目文件項(xiàng)目文件是應(yīng)用系統(tǒng)的主控文件,它的擴(kuò)展名是dpr。本節(jié)主要內(nèi)容:項(xiàng)目文件的建立結(jié)構(gòu)加入或移出單元文件設(shè)置棗莊學(xué)院精品課程3.3.1建立項(xiàng)目文件方法:File→New→Application,則建立一個(gè)名為Project1.dpr新項(xiàng)目文件.

棗莊學(xué)院精品課程3.3.2項(xiàng)目文件的組成結(jié)構(gòu)查看項(xiàng)目文件內(nèi)容可使用Project→ViewSource菜單。項(xiàng)目文件內(nèi)容主要有三大部分組成:聲明項(xiàng)目名部分、說(shuō)明部分和執(zhí)行部分。聲明部分格式:program項(xiàng)目名;用于說(shuō)明項(xiàng)目文件名,可通過(guò)File->saveas菜單修改。棗莊學(xué)院精品課程3.3.2項(xiàng)目文件的組成結(jié)構(gòu)說(shuō)明部分說(shuō)明項(xiàng)目文件可引用的單元、資源文件及定義項(xiàng)目文件中使用的類型、常量、變量、過(guò)程或函數(shù)等。除定義變量、過(guò)程或函數(shù)定義外,常用的格式語(yǔ)句:uses語(yǔ)句和資源引用語(yǔ)句

uses語(yǔ)句單元名in'文件名'{窗體名}讀取資源語(yǔ)句

{$R*.RES}

注意:這里的*表示與項(xiàng)目名重名。

棗莊學(xué)院精品課程3.3.2項(xiàng)目文件的組成結(jié)構(gòu)執(zhí)行部分執(zhí)行部分是項(xiàng)目文件中Begin...End之間的部分,是應(yīng)用程序啟動(dòng)時(shí)首先要執(zhí)行的程序代碼。主要有三種語(yǔ)句:初始化應(yīng)用程序語(yǔ)句:Application.Initialize;窗體對(duì)象實(shí)例化語(yǔ)句,格式為:Application.CreateForm(窗體類名,窗體名);例如:Application.CreateForm(TForm1,Form1);上格式語(yǔ)句可以有多個(gè),Delphi系統(tǒng)將第一個(gè)使用CreateForm語(yǔ)句建立的窗體默認(rèn)為應(yīng)用程序的主窗體。棗莊學(xué)院精品課程3.3.2項(xiàng)目文件的組成結(jié)構(gòu)執(zhí)行主窗體對(duì)應(yīng)的程序:Aplication.Run;上語(yǔ)句不僅顯示主窗體,同時(shí)它負(fù)責(zé)當(dāng)主窗體關(guān)閉時(shí),退出應(yīng)用程序并返回到操作系統(tǒng)。注意:項(xiàng)目文件一般是由系統(tǒng)自動(dòng)維護(hù)的,除非特別需要,一般不修改其中的代碼。棗莊學(xué)院精品課程3.3.3將單元文件加入或移出項(xiàng)目文件用于將應(yīng)用系統(tǒng)的模塊程序(單元文件)組合到項(xiàng)目中

加入移出單元文件步驟:打開(kāi)項(xiàng)目文件執(zhí)行File→Open菜單,找到要打開(kāi)的項(xiàng)目文件名(.dpr)并打開(kāi)。向項(xiàng)目文件中加入單元:執(zhí)行Project→AddtoProject菜單,則出現(xiàn)一個(gè)對(duì)話框,在對(duì)話框中查找并選擇你要加入的單元文件,最后再單擊“打開(kāi)”按鈕。注意:加入到項(xiàng)目文件中的單元,在項(xiàng)目文件中將以“單元名in'文件名'{窗體名}”的格式出現(xiàn)在Uses語(yǔ)句中。棗莊學(xué)院精品課程3.3.3將單元文件加入或移出項(xiàng)目文件用于將應(yīng)用系統(tǒng)的模塊程序(單元文件)組合到項(xiàng)目中從項(xiàng)目文件中移出單元文件:?jiǎn)螕鬚roject→RemovefromProject菜單注意:沒(méi)有任何單元文件的項(xiàng)目文件將編譯成一個(gè)無(wú)任何功能應(yīng)用程序。加入或移出單元文件還可通過(guò)使用工具欄上的快捷按鈕來(lái)完成,如圖所示。加入單元移出單元棗莊學(xué)院精品課程3.3.4設(shè)置項(xiàng)目編譯環(huán)境主要用于解決內(nèi)存不夠、文件存儲(chǔ)等問(wèn)題。單擊Project→Options菜單可進(jìn)入項(xiàng)目編譯環(huán)境設(shè)置對(duì)話框,設(shè)置方法如下:設(shè)置窗體通常情況下,除主窗體外,其余窗體應(yīng)設(shè)置成可用窗體,設(shè)置方法是:首先,在項(xiàng)目編譯環(huán)境設(shè)置對(duì)話框上選擇Forms頁(yè);其次,在“Autocreateforms”子窗口中選擇窗體名后單擊“>”按鈕,使其轉(zhuǎn)移到“Avialableforms”子窗口中,這樣就使自動(dòng)創(chuàng)建窗體變成可用窗體。注意:主窗體必須是自動(dòng)創(chuàng)建窗體。設(shè)置主窗體自動(dòng)創(chuàng)建窗體可用窗體棗莊學(xué)院精品課程3.3.4設(shè)置項(xiàng)目編譯環(huán)境設(shè)置應(yīng)用程序在項(xiàng)目編譯環(huán)境設(shè)置對(duì)話框中選擇“Application”頁(yè)(如圖所示),在此口主要做如下四個(gè)設(shè)置:標(biāo)題

是應(yīng)用程序最小化時(shí)在任務(wù)欄上顯示的標(biāo)題。幫助文件用于設(shè)置當(dāng)激活幫助時(shí),應(yīng)用程序自動(dòng)調(diào)用的幫助文件。圖標(biāo)用于設(shè)置應(yīng)用程序在被最小化時(shí)顯示的圖標(biāo)。目標(biāo)文件擴(kuò)展名用于設(shè)置編譯生成的可執(zhí)行文件的擴(kuò)展名。標(biāo)題設(shè)置幫助設(shè)置修改圖標(biāo)設(shè)置擴(kuò)展名棗莊學(xué)院精品課程3.3.4設(shè)置項(xiàng)目編譯環(huán)境應(yīng)用程序可使用兩種包,即設(shè)計(jì)期包和運(yùn)行期包??赏ㄟ^(guò)項(xiàng)目編譯環(huán)境設(shè)置對(duì)話框來(lái)設(shè)置,設(shè)置方法如下:打開(kāi)項(xiàng)目編譯環(huán)境設(shè)置對(duì)話框,選擇Packages,則顯示如圖所示對(duì)話框,若選中BuildwithRuntimepackages,則當(dāng)前項(xiàng)目文件在編譯時(shí)將使用運(yùn)行期包,否則,使用設(shè)計(jì)期包。注意:若設(shè)置對(duì)話框中的Default檢查框,則將當(dāng)前設(shè)置作為以后新建項(xiàng)目的默認(rèn)值。標(biāo)題設(shè)置幫助設(shè)置修改圖標(biāo)設(shè)置擴(kuò)展名棗莊學(xué)院精品課程設(shè)置項(xiàng)目文件存放路徑為防止多種應(yīng)用項(xiàng)目文件因存放而產(chǎn)生的混亂,合理分配每個(gè)應(yīng)用程序的存放路徑將顯得非常重要。設(shè)置項(xiàng)目文件的存放位置可通過(guò)項(xiàng)目文件設(shè)置對(duì)話框來(lái)完成,如右圖:輸出目錄單元輸出目錄搜索目錄棗莊學(xué)院精品課程3.3.3將單元文件加入或移出項(xiàng)目文件常用的路徑設(shè)置輸出路徑用于設(shè)置Delphi編譯生成的可執(zhí)行文件(exe)的存放路徑。單元輸出路徑用于設(shè)置單元編譯后生成的文件(.dcu文件)的存放路徑。搜索路徑用于指定編譯器的搜索路徑棗莊學(xué)院精品課程3.3.5項(xiàng)目中常用的文件

單元文件

單元文件主要分為窗體單元文件、組件單元文件和通用單元文件三種類型:

窗體單元文件具有窗體的單元,還可分為窗體單元文件(Form)、框架單元文件(Frame)和數(shù)據(jù)模塊單元文件(DataModule)組件單元文件組件單元是創(chuàng)建新組件時(shí)建立的單元文件,有些有窗體,有些則沒(méi)有。通用單元文件通用單元主要用于定義應(yīng)用程序所有單元均可使用的數(shù)據(jù)類型、變量、過(guò)程、類等。棗莊學(xué)院精品課程3.3.5項(xiàng)目中常用的文件

單元文件

單元文件主要分為窗體單元文件、組件單元文件和通用單元文件三種類型:

窗體單元文件具有窗體的單元,還可分為窗體單元文件(Form)、框架單元文件(Frame)和數(shù)據(jù)模塊單元文件(DataModule)組件單元文件組件單元是創(chuàng)建新組件時(shí)建立的單元文件,有些有窗體,有些則沒(méi)有。通用單元文件通用單元主要用于定義應(yīng)用程序所有單元均可使用的數(shù)據(jù)類型、變量、過(guò)程、類等。棗莊學(xué)院精品課程3.3.5項(xiàng)目中常用的文件窗體文件是單元文件的伴隨文件,用于快速開(kāi)發(fā)應(yīng)用程序的界面,擴(kuò)展名為dfm。建立窗體文件的方法:執(zhí)行菜單:File→New→Form

在默認(rèn)情況下,我們看到的窗體文件只是一個(gè)窗體。按F12功能鍵可實(shí)現(xiàn)窗體與其對(duì)應(yīng)單元代碼編輯窗口的互換棗莊學(xué)院精品課程資源文件目的:用于存放應(yīng)用程序的圖標(biāo)、圖片和版本等信息。使用資源文件方法:{$R*.res}

此語(yǔ)句常用于讀取資源文件。其中,*表示與當(dāng)前單元或項(xiàng)目文件重名。建立資源文件方法:使用Tools→ImageEditor菜單右擊右擊棗莊學(xué)院精品課程項(xiàng)目選項(xiàng)和桌面設(shè)置文件目的:保存項(xiàng)目或桌面設(shè)置。項(xiàng)目選項(xiàng)文件的擴(kuò)展名為dof,它存儲(chǔ)的是通過(guò)Project→Options菜單設(shè)置的選項(xiàng)。桌面設(shè)置文件的擴(kuò)展名為dsk,它存儲(chǔ)的是通過(guò)Tools→Options菜單設(shè)置的桌面選項(xiàng)。棗莊學(xué)院精品課程備份文件備份文件是恢復(fù)誤操作而準(zhǔn)備的文件。其文件名與原文件重名,擴(kuò)展名前加“~”符號(hào)。如:項(xiàng)目文件~dpr

單元~pas

窗體文件~dfm

設(shè)置系統(tǒng)自動(dòng)保留備份文件:Tools->EditorOptions->Display設(shè)置保留備份棗莊學(xué)院精品課程包文件作用:類似于動(dòng)態(tài)鏈接庫(kù),保存可被其它程序調(diào)用的程序代碼。文件擴(kuò)展名:dpk(Delphipackage的縮寫),此文件編譯時(shí)可生成兩種文件:擴(kuò)展名是.dcp文件,它一種中間文件。擴(kuò)展名是.bpl文件,它是能被程序使用的最終文件。棗莊學(xué)院精品課程3.4項(xiàng)目文件的管理與優(yōu)化常用的方法:一個(gè)項(xiàng)目獨(dú)占一個(gè)文件夾,可避免不同項(xiàng)目中同名文件的相互覆蓋。共享單元放在一個(gè)文件夾,可提高單元文件的利用效率。棗莊學(xué)院精品課程3.5編譯并運(yùn)行項(xiàng)目編譯的目的是將項(xiàng)目文件轉(zhuǎn)化為可執(zhí)行文件。有兩種編譯項(xiàng)目文件的方法:(1)Compile編譯:用于編譯做過(guò)修改的源程序。(2)Build編譯:對(duì)項(xiàng)目中的所有文件重新編譯。使用方法:Project->Compile或Build運(yùn)行編譯后的文件:Run->Run(F9編譯并運(yùn)行項(xiàng)目文件)另外還有F7、F8、F4。

棗莊學(xué)院精品課程3.6項(xiàng)目中的Application對(duì)象為加快程序開(kāi)發(fā),在任何有窗體的項(xiàng)目中,系統(tǒng)自動(dòng)定義了一個(gè)名為Application的對(duì)象,以便用其完成某些獨(dú)特的功能。

本節(jié)講解Application對(duì)象如下內(nèi)容:屬性及應(yīng)用方法及應(yīng)用事件及應(yīng)用棗莊學(xué)院精品課程屬性及應(yīng)用Application對(duì)象有較多的屬性,常用屬性見(jiàn)下表:

屬性名 含義Active 判斷當(dāng)前應(yīng)用程序是否具有焦點(diǎn)。ExeName 返回應(yīng)用程序所在文件名(含路徑)。Hint 用于保存組件的提示信息。注意,當(dāng)鼠標(biāo)移動(dòng)到某個(gè)組件上時(shí),則組件的Hint屬性值就被賦到此屬性中。Icon 用于設(shè)置應(yīng)用程序在任務(wù)欄上顯示的圖標(biāo)。MainForm 返回當(dāng)前應(yīng)用程序的主窗體對(duì)象。ShowHint 設(shè)置是否顯示應(yīng)用程序的提示信息。Title 應(yīng)用程序任務(wù)欄上顯示的標(biāo)題。棗莊學(xué)院精品課程常使用ExeName屬性取應(yīng)用程序所在的路徑名,如:Label3.caption:=ExtractFilePath(Application.ExeName);其中:ExtractFilePath函數(shù)用于返回字符串中的路徑名。ExtractFileName返回字符串中的文件名。這兩個(gè)函數(shù)用處很大,制作自動(dòng)安裝軟件時(shí)要用到它。棗莊學(xué)院精品課程Application對(duì)象的方法

在項(xiàng)目文件中常使用的方法InitializeCreateFormRun

上述三種方法的作用分別是初始化應(yīng)用程序、創(chuàng)建窗體和運(yùn)行應(yīng)用程序。

使用格式如下:Application.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;棗莊學(xué)院精品課程ProcessMessages方法ProcessMessages用于從Windows消息隊(duì)列中檢索任何等待處理的消息并進(jìn)行處理.下面看一段代碼:

whileJ<64000dobeginY:=Random(J);Inc(J);Application.ProcessMessages;end;若沒(méi)有Application.ProcessMessages方法,則循環(huán)程序執(zhí)行結(jié)束前不會(huì)響應(yīng)用戶的其它請(qǐng)求。棗莊學(xué)院精品課程MessageBox方法用于打開(kāi)一個(gè)標(biāo)準(zhǔn)的Windows提示信息框。具體使用方法參見(jiàn)第5章提示信息窗口一節(jié)。例如:

ifApplication.MessageBox('提示信息','標(biāo)題',MB_OKCANCEL)=idokthenShowMessage('ss');Minimize方法用于把應(yīng)用程序的主窗口最小化。Restore方法用于把應(yīng)用程序的恢復(fù)主窗口顯示狀態(tài)。棗莊學(xué)院精品課程Application對(duì)象的事件Application有較多的事件,Delphi專門為它提供了一個(gè)事件組件,如圖所示。

事件列表?xiàng)椙f學(xué)院精品課程Application較常用的事件列表如下:

事件 描述OnActivate 當(dāng)應(yīng)用程序被激活時(shí),將觸發(fā)這個(gè)事件。OnDeativate 當(dāng)應(yīng)用程序被掛起或切換到其它應(yīng)用程序時(shí)將觸發(fā)這個(gè)事件。OnException 當(dāng)一個(gè)未處理的異常發(fā)生時(shí),將觸發(fā)這個(gè)事件。OnHelp 當(dāng)用戶請(qǐng)求幫助的時(shí)候?qū)⒂|發(fā)這個(gè)事件。OnMessage 當(dāng)應(yīng)用程序接收到一個(gè)消息時(shí)將觸發(fā)這個(gè)事件。OnHint 當(dāng)鼠標(biāo)指向某個(gè)組件時(shí)將觸發(fā)這個(gè)事件。OnIdle 當(dāng)應(yīng)用程序進(jìn)入空閑狀態(tài)時(shí)將觸發(fā)這個(gè)事件。常使用此事件編寫動(dòng)畫游戲。棗莊學(xué)院精品課程例題例1:利用Application組件設(shè)計(jì)應(yīng)用程序,要求在主窗體的Statusbar組件中顯示鼠標(biāo)所指組件的提示信息。提示:在Application組件的Onhint事件中加入下代碼:

Statusbar1.SimpleText:=Application.Hint;棗莊學(xué)院精品課程3.7項(xiàng)目中的Screen對(duì)象屬性名含義ActiveControl它是只讀屬性,用于保存當(dāng)前屏幕上獲得焦點(diǎn)的組件。ActiveForm用于保存獲得焦點(diǎn)的窗體。Cursor用于設(shè)置應(yīng)用程序的光標(biāo)形狀。DataModuleCount表示應(yīng)用程序中數(shù)據(jù)模塊的個(gè)數(shù)。DataModules保存應(yīng)用程序中的數(shù)據(jù)模塊列表。FormCount表示應(yīng)用程序中窗體的個(gè)數(shù)。Forms保存應(yīng)用程序中的窗體列表。Fonts保存屏幕所支持的各種字體名稱。Height表示屏幕的高度(以像素為單位)。PixelsPerInch表示表示系統(tǒng)字體的相對(duì)縮放比例。Width表示屏幕的寬度(以像素為單位)。Forms標(biāo)準(zhǔn)單元中定義的,其常用屬性如下表?xiàng)椙f學(xué)院精品課程3.8常用程序設(shè)計(jì)技巧1.使用資源文件使用資源文件(.res)就是使用資源文件中存放的位圖、圖標(biāo)、光標(biāo)等數(shù)據(jù)。使用資源文件前提條件:使用語(yǔ)句:{$R資源文件名.res}。資源名中的字母必須大寫。注意:若在程序計(jì)期修改了資源文件,請(qǐng)使用Project→BuildAllProjects重新編譯后再執(zhí)行程序。棗莊學(xué)院精品課程讀取資源的常用方法:取圖片格式:image1.Picture.Bitmap.LoadFromResourceName(hInstance,‘圖片名');取圖標(biāo)格式:Application.Icon.Handle:=LoadIcon(hInstance,‘圖標(biāo)名稱’);其中hInstance表示包含資源文件的當(dāng)前應(yīng)用程序?qū)ο?。取光?biāo)格式:Screen.Cursons[X]:=Loadcursor(hInstance,’光標(biāo)名’);Screen.Cursor:=X;其中:X為正整數(shù),因?yàn)槟J(rèn)光標(biāo)取0到-22(即從crDefault到crSizeAll)棗莊學(xué)院精品課程2.修改屏幕分辨率使用WindowsAPI兩個(gè)函數(shù)完成此功能,分別為:

(1)獲取顯示模式數(shù)據(jù)函數(shù)定義格式:EnumDisplaySettings(lpDName,iMNum,lpDMode)功能:獲取指定的顯示模式數(shù)據(jù),若顯示模式不存在,則返回值為0(False)。其中:lpDName:一般設(shè)置為Nil。

iMNum:用于指定顯示模式號(hào)。

lpDMode:是TDevMode類型的指針變量,用于保存獲取的顯示模式數(shù)據(jù)。

棗莊學(xué)院精品課程VarDevModeArray:TList;//顯示模式信息結(jié)構(gòu)列表……varDevModeCount:Integer;//顯示模式的個(gè)數(shù)DevModeInfo:^TDevMode;//定義一個(gè)指向顯示模式的指針beginDevModeArray:=TList.Create;//創(chuàng)建列表對(duì)象DevModeCount:=0;GetMem(DevModeInfo,SizeOf(TDevMode));//分配內(nèi)存

{枚舉顯示模式,并將獲取的屬性值其保存在到DevModeInfo變量中}棗莊學(xué)院精品課程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));//分配內(nèi)存end;FreeMem(DevModeInfo,SizeOf(TDevMode));//釋放分配的內(nèi)存ListBox1.ItemIndex:=0;end;棗莊學(xué)院精品課程(2)設(shè)置屏幕的顯示方式函數(shù)定義格式:ChangeDisplaySettings(lpDevMode,dwflags)

功能:按指定模式修改顯示器的分辨率。其中:1)lpDevMode是顯示模式數(shù)據(jù)的TDevMode類型指針變量。2)dwflags常使用CDS_UPDATEREGISTRY,表示修改顯示模式后,同時(shí)修改注冊(cè)表。3)函數(shù)返回值:當(dāng)返回DISP_CHANGE_SUCCESSFUL時(shí)表示修改成功,當(dāng)返回DISP_CHANGE_RESTART,則表示重啟操作系統(tǒng)后才能使設(shè)置起作用。棗莊學(xué)院精品課程部分程序代碼:VarModeChange:Longint;begin{更改顯示模式,并修改注冊(cè)表}ModeChange:=ChangeDisplaySettings(模式指針變量,CDS_UPDATEREGISTRY);ifModeChange=DISP_CHANGE_SUCCESSFULthenShowMessage('動(dòng)態(tài)改變屏幕分辨率成功')elseifModeChange=DISP_CHANGE_RESTARTthenShowMessage('需要重新起動(dòng)才能使設(shè)置起作用');end;棗莊學(xué)院精品課程3.8.3避免應(yīng)用程序重復(fù)啟動(dòng)由于Windows是一個(gè)多任務(wù)的操作系統(tǒng),因此可時(shí)運(yùn)行同一程序的多個(gè)實(shí)例,但有時(shí)為了數(shù)據(jù)安全,要求應(yīng)用程序只能運(yùn)行一個(gè)實(shí)例。主要有兩種方法:1.“查找窗口”法;2.“創(chuàng)建互斥對(duì)象”。棗莊學(xué)院精品課程1.查找窗口法工作原理:應(yīng)用程序運(yùn)行前使用FindWindow函數(shù)首先查找當(dāng)前操作系統(tǒng)中是否加裁主窗體,如果有則不啟動(dòng)。FindWindow函數(shù)使用格式:FindWindow(類名,窗體標(biāo)題名);其中:“類名”表示表示查找窗體所屬的類。例如:將項(xiàng)目文件修改為如下格式:

VarHwnd:Thandle;beginHwnd:=FindWindow('TForm1','Main');//查找主窗體

IfHwnd=Thandle(nil)then//如果沒(méi)找到應(yīng)用程序的主窗體則啟動(dòng)應(yīng)用程序

BeginApplication.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;end;

end棗莊學(xué)院精品課程2.使用互斥對(duì)象本方法是在應(yīng)用程序中通過(guò)CreateMutex函數(shù)創(chuàng)建互斥對(duì)象,若創(chuàng)建不成功,則說(shuō)明系統(tǒng)已經(jīng)啟動(dòng),則系統(tǒng)不再啟動(dòng)。使用格式:

CreateMutex(lpMA,bIO,lpName)功能:創(chuàng)建互斥對(duì)象。

其中:參數(shù)lpMA是一個(gè)指向安全屬性的指針,一般使用空指針nil,表示使用默認(rèn)安全屬性。參數(shù)bIO表示互斥對(duì)象是否指定初始所有者,一般默認(rèn)為True。參數(shù)lpName用于設(shè)置要?jiǎng)?chuàng)建的互斥對(duì)象名。

棗莊學(xué)院精品課程項(xiàng)目文件中的部分代碼:VARMutex:Thandle;beginMutex:=CreateMutex(NIL,True,'Form1');//判斷創(chuàng)建互斥對(duì)象是否成功

IFGetLastError<>ERROR_ALREADY_EXISTSTHENBEGINApplication.Initialize;Application.CreateForm(TForm1,Form1);Application.Run;end;ReleaseMutex(Mutex);end.棗莊學(xué)院精品課程4.設(shè)置應(yīng)用程序啟動(dòng)權(quán)限通過(guò)項(xiàng)目文件中加入判斷進(jìn)入權(quán)限的代碼,解決戶身份的驗(yàn)證問(wèn)題。分析:由于應(yīng)用程序運(yùn)行是通過(guò)Application的Initialize、Createform、和Run三個(gè)過(guò)程實(shí)現(xiàn)的,因此在執(zhí)行這豐類過(guò)程前加入判別用戶權(quán)限的指令,若符合要求則啟動(dòng),否則退出系統(tǒng)。程序基本格式如下:輸入口令->Passwordif系統(tǒng)口令=Passwordthenbegin

執(zhí)行啟動(dòng)程序代碼;endElse退出系統(tǒng);棗莊學(xué)院精品課程請(qǐng)看Initialize.dpr的源程序?qū)嵗簆rogramInitialize;usesForms,Dialogs,ChangeScreenin'ChangeScreen.pas'{Form1};varPassword:String;{$R*.res}beginifInPutQuery('登錄口令','輸入口令',password)thenbeginifpassword='Screen'then//判斷登錄口令

beginApplication.Initialize;Application.CreateForm(TForm1,Form1);

溫馨提示

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

評(píng)論

0/150

提交評(píng)論