好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

应用程序设计及框架.ppt

60页
  • 卖家[上传人]:桔****
  • 文档编号:582374002
  • 上传时间:2024-08-29
  • 文档格式:PPT
  • 文档大小:1.11MB
  • / 60 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三章第三章 应用程序的框架和设计应用程序的框架和设计本章内容:本章内容:Ø应用程序的基本结构应用程序的基本结构应用程序的基本结构应用程序的基本结构Ø编译项目文件前的设置编译项目文件前的设置编译项目文件前的设置编译项目文件前的设置Ø项目文件项目文件项目文件项目文件Ø项目文件管理与优化项目文件管理与优化项目文件管理与优化项目文件管理与优化Ø编译并运行项目编译并运行项目编译并运行项目编译并运行项目Ø项目文件中项目文件中项目文件中项目文件中ApplicationApplication和和和和ScreenScreen对象对象对象对象Ø程序设计中的常用基本技巧程序设计中的常用基本技巧程序设计中的常用基本技巧程序设计中的常用基本技巧 3.1 应用程序的基本结构uu利用利用利用利用DelphiDelphi开发的应用程序从宏观上可分为三个开发的应用程序从宏观上可分为三个开发的应用程序从宏观上可分为三个开发的应用程序从宏观上可分为三个层次,即层次,即层次,即层次,即项目文件、主单元文件项目文件、主单元文件项目文件、主单元文件项目文件、主单元文件和和和和功能模块文件功能模块文件功能模块文件功能模块文件 。

      uu项目文件项目文件项目文件项目文件是应用程序的主程序文件,它主要完成应用是应用程序的主程序文件,它主要完成应用是应用程序的主程序文件,它主要完成应用是应用程序的主程序文件,它主要完成应用程序初始化及各种应用程序模块的管理工作程序初始化及各种应用程序模块的管理工作程序初始化及各种应用程序模块的管理工作程序初始化及各种应用程序模块的管理工作 uu主单元文件主单元文件主单元文件主单元文件是用于控制应用系统操作的有窗体的单元是用于控制应用系统操作的有窗体的单元是用于控制应用系统操作的有窗体的单元是用于控制应用系统操作的有窗体的单元文件,在项目文件中,主单元是由文件,在项目文件中,主单元是由文件,在项目文件中,主单元是由文件,在项目文件中,主单元是由ApplicationApplication对对对对象的象的象的象的RunRun过程调用执行的过程调用执行的过程调用执行的过程调用执行的uu功能模块文件功能模块文件功能模块文件功能模块文件是能独立完成某项功能的程序,它一般是能独立完成某项功能的程序,它一般是能独立完成某项功能的程序,它一般是能独立完成某项功能的程序,它一般由主单元通过菜单调用来执行,功能模块通常是有窗由主单元通过菜单调用来执行,功能模块通常是有窗由主单元通过菜单调用来执行,功能模块通常是有窗由主单元通过菜单调用来执行,功能模块通常是有窗体的单元文件或数据模块文件。

      体的单元文件或数据模块文件体的单元文件或数据模块文件体的单元文件或数据模块文件 应用程序基本构成图示应用程序基本构成图示单元文件单元文件单元文件单元文件窗体文件窗体文件窗体文件窗体文件主单元主单元主单元主单元单元文件单元文件单元文件单元文件窗体文件窗体文件窗体文件窗体文件数据模块数据模块数据模块数据模块模块模块模块模块n n模块模块模块模块1 1模块模块模块模块2 2封面程序封面程序封面程序封面程序密码确认程序密码确认程序密码确认程序密码确认程序主程序主程序主程序主程序 3.2 开发应用程序前的系统设置开发应用程序前的系统设置 1.设置自动保存程序代码功能设置自动保存程序代码功能设置自动保存程序代码功能设置自动保存程序代码功能 执行菜单执行菜单执行菜单执行菜单ToolsTools→→Environment OptionsEnvironment Options 自动保存自动保存自动保存自动保存设置设置设置设置 设置自动保存程序代码功能设置自动保存程序代码功能u若选中若选中Editor files,则表示当编译应用,则表示当编译应用程序时,程序时,Delphi将自动保存当前正在编辑将自动保存当前正在编辑的程序文件。

      的程序文件u若选中若选中Project Desktop,则表示当编,则表示当编译应用程序时,译应用程序时,Delphi自动保存当前项目自动保存当前项目的桌面信息(一旦保存了桌面信息,当下的桌面信息(一旦保存了桌面信息,当下次启动次启动Delphi时,系统会自动回到保存的时,系统会自动回到保存的桌面状态)桌面状态) 2. 设置使用撤消操作设置使用撤消操作u执行菜单执行菜单Tools→Editor Options设置处设置处设置处设置处 3. 设置使用开发包设置使用开发包u使用外来组件包需要如下使用外来组件包需要如下2个步骤个步骤: (1) 安装组件包安装组件包;; (2) 设置组件包的搜索路径设置组件包的搜索路径1)安装组件)安装组件 有两种方法,一种是有两种方法,一种是安装未编译的组件包安装未编译的组件包(即有源程序代码的包),另一种是(即有源程序代码的包),另一种是安装安装已编译组件包已编译组件包 1)未编译组件包的安装)未编译组件包的安装uu首先打开要安装包的首先打开要安装包的首先打开要安装包的首先打开要安装包的项目文件项目文件项目文件项目文件( (扩展名为扩展名为扩展名为扩展名为.dpk).dpk),则显示类似,则显示类似,则显示类似,则显示类似如右图所示的窗口如右图所示的窗口如右图所示的窗口如右图所示的窗口(若系统没有出现此(若系统没有出现此(若系统没有出现此(若系统没有出现此窗口,可单击菜单窗口,可单击菜单窗口,可单击菜单窗口,可单击菜单ProjectProject→→View View SourceSource,然后再按,然后再按,然后再按,然后再按F12F12功能键),单击功能键),单击功能键),单击功能键),单击右图中的右图中的右图中的右图中的“ “InstallInstall” ”按钮即完成组件包的按钮即完成组件包的按钮即完成组件包的按钮即完成组件包的安装。

      安装安装安装安装安装按钮按钮按钮按钮 2)已编译组件包的安装)已编译组件包的安装uu由于未编译组件包不提供源代码,其安装方法为:由于未编译组件包不提供源代码,其安装方法为:由于未编译组件包不提供源代码,其安装方法为:由于未编译组件包不提供源代码,其安装方法为:ComponentComponent→→Install PackagesInstall Packages,则出现,则出现,则出现,则出现如下左侧图所示对话框,单击如下左侧图所示对话框,单击如下左侧图所示对话框,单击如下左侧图所示对话框,单击“ “ADDADD” ”按钮,选择按钮,选择按钮,选择按钮,选择要安装包要安装包要安装包要安装包.bpl.bpl文件,再按文件,再按文件,再按文件,再按“ “打开打开打开打开” ”按钮即可按钮即可按钮即可按钮即可 单击单击单击单击确认确认确认确认 ((2)) 设置组件包的搜索路径设置组件包的搜索路径uu单击菜单单击菜单单击菜单单击菜单ToolsTools→→Environment OptionsEnvironment Options,,,,选择选择选择选择 “ “LibraryLibrary” ”页,并按下图操作。

      页,并按下图操作页,并按下图操作页,并按下图操作加入加入加入加入选择包所选择包所选择包所选择包所在路径在路径在路径在路径选择包所选择包所选择包所选择包所在文件夹在文件夹在文件夹在文件夹 3.3 项目文件项目文件 u项目文件是应用系统的主控文件,它的扩项目文件是应用系统的主控文件,它的扩展名是展名是dpr本节主要内容:本节主要内容:v项目文件的建立项目文件的建立项目文件的建立项目文件的建立v结构结构结构结构v加入或移出单元文件加入或移出单元文件加入或移出单元文件加入或移出单元文件v设置设置设置设置 3.3.1 建立项目文件建立项目文件uu方法方法方法方法: File: File→→NewNew→→ApplicationApplication,则建立一,则建立一,则建立一,则建立一个名为个名为个名为个名为Project1.dprProject1.dpr新项目文件新项目文件新项目文件新项目文件. . 3.3.2 项目文件的组成结构项目文件的组成结构u查看项目文件内容可使用查看项目文件内容可使用Project→View Source菜单u项目文件内容主要有三大部分组成:项目文件内容主要有三大部分组成: 声明声明项目名部分、说明部分项目名部分、说明部分和和执行部分执行部分。

      ((1)) 声明部分声明部分 格式:格式:program 项目名;项目名; 用于说明项目文件名,可通过用于说明项目文件名,可通过File -> save as菜单修改菜单修改 ((2)说明部分)说明部分uu用于说明项目文件可引用的单元、资源文件及定用于说明项目文件可引用的单元、资源文件及定用于说明项目文件可引用的单元、资源文件及定用于说明项目文件可引用的单元、资源文件及定义项目文件中使用的类型、常量、变量、过程或义项目文件中使用的类型、常量、变量、过程或义项目文件中使用的类型、常量、变量、过程或义项目文件中使用的类型、常量、变量、过程或函数等 除定义变量、过程或函数定义外,常用的格式除定义变量、过程或函数定义外,常用的格式除定义变量、过程或函数定义外,常用的格式除定义变量、过程或函数定义外,常用的格式语句:语句:语句:语句:usesuses语句和资源引用语句语句和资源引用语句语句和资源引用语句语句和资源引用语句vv usesuses语句语句语句语句 单元名单元名单元名单元名 in 'in '文件名文件名文件名文件名' {' {窗体名窗体名窗体名窗体名} } vv读取资源语句读取资源语句读取资源语句读取资源语句 {$R *.RES} {$R *.RES} 注意:这里的注意:这里的注意:这里的注意:这里的* *表示与项目名重名。

      表示与项目名重名表示与项目名重名表示与项目名重名 资源文件一般存放应用程序使用图标、图片等资源文件一般存放应用程序使用图标、图片等资源文件一般存放应用程序使用图标、图片等资源文件一般存放应用程序使用图标、图片等数据数据数据数据 (3)  执行部分执行部分执行部分是项目文件中执行部分是项目文件中执行部分是项目文件中执行部分是项目文件中Begin...EndBegin...End之间的部分,它是应用程序之间的部分,它是应用程序之间的部分,它是应用程序之间的部分,它是应用程序启动时首先要执行的程序代码本部分主要有三种语句:启动时首先要执行的程序代码本部分主要有三种语句:启动时首先要执行的程序代码本部分主要有三种语句:启动时首先要执行的程序代码本部分主要有三种语句:1) 1) 初始化应用程序语句:初始化应用程序语句:初始化应用程序语句:初始化应用程序语句:Application.InitializeApplication.Initialize;;;;2) 2) 窗体对象实例化语句,格式为:窗体对象实例化语句,格式为:窗体对象实例化语句,格式为:窗体对象实例化语句,格式为: Application.CreateFormApplication.CreateForm( (窗体类名,窗体名窗体类名,窗体名窗体类名,窗体名窗体类名,窗体名) );;;;例如:例如:例如:例如:Application.CreateForm(TForm1, Form1);Application.CreateForm(TForm1, Form1);上格式语句可以有多个,上格式语句可以有多个,上格式语句可以有多个,上格式语句可以有多个,DelphiDelphi系统将第一个使用系统将第一个使用系统将第一个使用系统将第一个使用CreateFormCreateForm语句建立的窗体默认为应用程序的主窗体。

      语句建立的窗体默认为应用程序的主窗体语句建立的窗体默认为应用程序的主窗体语句建立的窗体默认为应用程序的主窗体3 3)执行主窗体对应的程序:)执行主窗体对应的程序:)执行主窗体对应的程序:)执行主窗体对应的程序:Aplication.RunAplication.Run; ;上语句不仅显示主窗体,同时它负责当主窗体关闭时,退出应用上语句不仅显示主窗体,同时它负责当主窗体关闭时,退出应用上语句不仅显示主窗体,同时它负责当主窗体关闭时,退出应用上语句不仅显示主窗体,同时它负责当主窗体关闭时,退出应用程序并返回到操作系统程序并返回到操作系统程序并返回到操作系统程序并返回到操作系统注意:项目文件一般是由系统自动维护的,除非特别需要,一般注意:项目文件一般是由系统自动维护的,除非特别需要,一般注意:项目文件一般是由系统自动维护的,除非特别需要,一般注意:项目文件一般是由系统自动维护的,除非特别需要,一般不修改其中的代码不修改其中的代码不修改其中的代码不修改其中的代码 3.3.3 将单元文件加入或移出项目文件将单元文件加入或移出项目文件用于应用系统的模块程序(单元文件)组合到项目用于应用系统的模块程序(单元文件)组合到项目用于应用系统的模块程序(单元文件)组合到项目用于应用系统的模块程序(单元文件)组合到项目中中中中A.A. 加入移出单元文件步骤加入移出单元文件步骤加入移出单元文件步骤加入移出单元文件步骤::::1.打开项目文件打开项目文件打开项目文件打开项目文件 执行执行执行执行FileFile→→OpenOpen菜单,找到要打开的项菜单,找到要打开的项菜单,找到要打开的项菜单,找到要打开的项目文件名(目文件名(目文件名(目文件名(.dpr.dpr)并打开。

      并打开2.向项目文件中加入单元:向项目文件中加入单元:向项目文件中加入单元:向项目文件中加入单元: 执行执行执行执行ProjectProject→→Add to ProjectAdd to Project菜单,则出现菜单,则出现菜单,则出现菜单,则出现一个对话框,在对话框中查找并选择你要加入的单一个对话框,在对话框中查找并选择你要加入的单一个对话框,在对话框中查找并选择你要加入的单一个对话框,在对话框中查找并选择你要加入的单元文件,最后再单击元文件,最后再单击元文件,最后再单击元文件,最后再单击“ “打开打开打开打开” ”按钮vv 注意注意注意注意:加入到项目文件中的单元,在项目文件中:加入到项目文件中的单元,在项目文件中:加入到项目文件中的单元,在项目文件中:加入到项目文件中的单元,在项目文件中将以将以将以将以“ “单元名单元名单元名单元名 in 'in '文件名文件名文件名文件名' {' {窗体名窗体名窗体名窗体名} }” ”的格式出的格式出的格式出的格式出现在现在现在现在UsesUses语句中 B.从项目文件中移出单元文件:从项目文件中移出单元文件: 单击单击单击单击ProjectProject→→Remove from ProjectRemove from Project菜单菜单菜单菜单u注意:注意:((((1 1)没有任何单元文件的项目文件将编译成一)没有任何单元文件的项目文件将编译成一)没有任何单元文件的项目文件将编译成一)没有任何单元文件的项目文件将编译成一个无任何功能应用程序。

      个无任何功能应用程序个无任何功能应用程序个无任何功能应用程序2 2)加入或移出单元文件还可通过使用工具栏)加入或移出单元文件还可通过使用工具栏)加入或移出单元文件还可通过使用工具栏)加入或移出单元文件还可通过使用工具栏上的快捷按钮来完成,如图所示上的快捷按钮来完成,如图所示上的快捷按钮来完成,如图所示上的快捷按钮来完成,如图所示 加入加入加入加入单元单元单元单元移出移出单元单元 3.3.4 设置项目编译环境设置项目编译环境主要用于解决内存不够、文件存主要用于解决内存不够、文件存主要用于解决内存不够、文件存主要用于解决内存不够、文件存储等问题储等问题储等问题储等问题uu单击单击单击单击ProjectProject→→OptionsOptions菜单菜单菜单菜单可进入项目编译环境设置对话框,可进入项目编译环境设置对话框,可进入项目编译环境设置对话框,可进入项目编译环境设置对话框,设置方法如下:设置方法如下:设置方法如下:设置方法如下:1.1.设置窗体设置窗体设置窗体设置窗体通常情况下,除主窗体外,其余通常情况下,除主窗体外,其余通常情况下,除主窗体外,其余通常情况下,除主窗体外,其余窗体应设置成可用窗体,设置方法是:窗体应设置成可用窗体,设置方法是:窗体应设置成可用窗体,设置方法是:窗体应设置成可用窗体,设置方法是:首先,在项目编译环境设置对话首先,在项目编译环境设置对话首先,在项目编译环境设置对话首先,在项目编译环境设置对话框上选择框上选择框上选择框上选择FormsForms页;页;页;页;其次,在其次,在其次,在其次,在“ “Auto create Auto create formsforms” ”子窗口中选择窗体名后单击子窗口中选择窗体名后单击子窗口中选择窗体名后单击子窗口中选择窗体名后单击“ “>>” ”按钮,使其转移到按钮,使其转移到按钮,使其转移到按钮,使其转移到“ “Avialable Avialable formsforms” ”子窗口中,这样就使自动创子窗口中,这样就使自动创子窗口中,这样就使自动创子窗口中,这样就使自动创建窗体变成可用窗体。

      建窗体变成可用窗体建窗体变成可用窗体建窗体变成可用窗体注意:主窗体必须是自动创建窗注意:主窗体必须是自动创建窗注意:主窗体必须是自动创建窗注意:主窗体必须是自动创建窗体设置主设置主设置主设置主窗体窗体窗体窗体自动创自动创自动创自动创建窗体建窗体建窗体建窗体可用可用可用可用窗体窗体窗体窗体 2.2.设置应用程序设置应用程序设置应用程序设置应用程序在项目编译环境设置对话框中选择在项目编译环境设置对话框中选择在项目编译环境设置对话框中选择在项目编译环境设置对话框中选择“ “ApplicationApplication” ”页(如图所示),在此页(如图所示),在此页(如图所示),在此页(如图所示),在此口主要做如下四个设置:口主要做如下四个设置:口主要做如下四个设置:口主要做如下四个设置:vv标题(标题(标题(标题(TitleTitle))))它应用程序最小化时在任务栏上它应用程序最小化时在任务栏上它应用程序最小化时在任务栏上它应用程序最小化时在任务栏上显示的标题,其最大长度为显示的标题,其最大长度为显示的标题,其最大长度为显示的标题,其最大长度为255255个个个个字符vv帮助文件(帮助文件(帮助文件(帮助文件(Help fileHelp file))))用于设置当激活帮助时,应用程用于设置当激活帮助时,应用程用于设置当激活帮助时,应用程用于设置当激活帮助时,应用程序自动调用的帮助文件。

      序自动调用的帮助文件序自动调用的帮助文件序自动调用的帮助文件vv图标(图标(图标(图标(IconIcon))))用于设置应用程序在程序管理器用于设置应用程序在程序管理器用于设置应用程序在程序管理器用于设置应用程序在程序管理器中或当程序被最小化时显示的图标中或当程序被最小化时显示的图标中或当程序被最小化时显示的图标中或当程序被最小化时显示的图标vv目标文件扩展名(目标文件扩展名(目标文件扩展名(目标文件扩展名(Target file Target file extensionextension))))用于设置编译生成的可执行文件用于设置编译生成的可执行文件用于设置编译生成的可执行文件用于设置编译生成的可执行文件的扩展名的扩展名的扩展名的扩展名标题标题标题标题设置设置设置设置帮助帮助帮助帮助设置设置设置设置修改修改修改修改图标图标图标图标设置设置设置设置扩展名扩展名扩展名扩展名 3. 3. 设置是否使用运行期包设置是否使用运行期包设置是否使用运行期包设置是否使用运行期包应用程序可使用两种类型的包文应用程序可使用两种类型的包文应用程序可使用两种类型的包文应用程序可使用两种类型的包文件,一种包是设计期包,另一种是运件,一种包是设计期包,另一种是运件,一种包是设计期包,另一种是运件,一种包是设计期包,另一种是运行期包。

      应用程序使用的哪种组件包行期包应用程序使用的哪种组件包行期包应用程序使用的哪种组件包行期包应用程序使用的哪种组件包可通过项目编译环境设置对话框来设可通过项目编译环境设置对话框来设可通过项目编译环境设置对话框来设可通过项目编译环境设置对话框来设置,设置方法如下:置,设置方法如下:置,设置方法如下:置,设置方法如下:打开项目编译环境设置对话框,打开项目编译环境设置对话框,打开项目编译环境设置对话框,打开项目编译环境设置对话框,选择选择选择选择PackagesPackages页,则显示如图所示页,则显示如图所示页,则显示如图所示页,则显示如图所示的对话框,若选中的对话框,若选中的对话框,若选中的对话框,若选中Build with Build with Runtime packages Runtime packages 复选框,则复选框,则复选框,则复选框,则说明当前项目文件在编译时将使用运说明当前项目文件在编译时将使用运说明当前项目文件在编译时将使用运说明当前项目文件在编译时将使用运行期包,否则,使用设计期包行期包,否则,使用设计期包行期包,否则,使用设计期包行期包,否则,使用设计期包uu注意:若设置对话框中的注意:若设置对话框中的注意:若设置对话框中的注意:若设置对话框中的DefaultDefault检查框,则将当前设置作为检查框,则将当前设置作为检查框,则将当前设置作为检查框,则将当前设置作为以后新建项目的默认值。

      以后新建项目的默认值以后新建项目的默认值以后新建项目的默认值设置否是设置否是设置否是设置否是使用运行使用运行使用运行使用运行期包期包期包期包 4.设置项目文件存放路径设置项目文件存放路径uu作为开发应用项目的作为开发应用项目的作为开发应用项目的作为开发应用项目的程序员,肯定需要编程序员,肯定需要编程序员,肯定需要编程序员,肯定需要编写大量的应用程序,写大量的应用程序,写大量的应用程序,写大量的应用程序,为防止多种应用项目为防止多种应用项目为防止多种应用项目为防止多种应用项目文件因存放而产生的文件因存放而产生的文件因存放而产生的文件因存放而产生的混乱,合理分配每个混乱,合理分配每个混乱,合理分配每个混乱,合理分配每个应用程序的存放路径应用程序的存放路径应用程序的存放路径应用程序的存放路径将显得非常重要设将显得非常重要设将显得非常重要设将显得非常重要设置项目文件的存放位置项目文件的存放位置项目文件的存放位置项目文件的存放位置可通过项目文件设置可通过项目文件设置可通过项目文件设置可通过项目文件设置对话框来完成,如置对话框来完成,如置对话框来完成,如置对话框来完成,如右图:右图:右图:右图:输出输出输出输出目录目录目录目录单元输单元输单元输单元输出目录出目录出目录出目录搜索搜索搜索搜索目录目录目录目录 •   设置路径(设置路径(设置路径(设置路径(DirectoriesDirectories))))下面是几个常用的设置下面是几个常用的设置下面是几个常用的设置下面是几个常用的设置uu输出路径(输出路径(输出路径(输出路径(Output directoryOutput directory)))) 用于设置用于设置用于设置用于设置DelphiDelphi编译生成的可执行文件编译生成的可执行文件编译生成的可执行文件编译生成的可执行文件(exe)(exe)的存放路径。

      的存放路径的存放路径的存放路径uu单元输出路径(单元输出路径(单元输出路径(单元输出路径(Unit output directoryUnit output directory)))) 用于设置单元编译后生成的文件用于设置单元编译后生成的文件用于设置单元编译后生成的文件用于设置单元编译后生成的文件(.dcu(.dcu文件文件文件文件) )的的的的存放路径存放路径存放路径存放路径uu搜索路径(搜索路径(搜索路径(搜索路径(Search pathSearch path)))) 用于指定编译器的搜索路径用于指定编译器的搜索路径用于指定编译器的搜索路径用于指定编译器的搜索路径 3.3.5 项目中常用的文件项目中常用的文件1.1. 单元文件单元文件单元文件单元文件 单元文件主要分为窗体单元文件、组件单元文件和通用单元文单元文件主要分为窗体单元文件、组件单元文件和通用单元文单元文件主要分为窗体单元文件、组件单元文件和通用单元文单元文件主要分为窗体单元文件、组件单元文件和通用单元文件三种类型:件三种类型:件三种类型:件三种类型:vv 窗体单元文件窗体单元文件窗体单元文件窗体单元文件 窗体单元文件具有窗体的单元,实际还可分为窗体单元文窗体单元文件具有窗体的单元,实际还可分为窗体单元文窗体单元文件具有窗体的单元,实际还可分为窗体单元文窗体单元文件具有窗体的单元,实际还可分为窗体单元文件(件(件(件(FormForm)、框架单元文件()、框架单元文件()、框架单元文件()、框架单元文件(FrameFrame)和数据模块单元文)和数据模块单元文)和数据模块单元文)和数据模块单元文件件件件(DataModule)(DataModule),后面如没有特别说明,窗体单元文件都,后面如没有特别说明,窗体单元文件都,后面如没有特别说明,窗体单元文件都,后面如没有特别说明,窗体单元文件都是指的是指的是指的是指的FormForm单元文件单元文件单元文件单元文件vv 组件单元文件组件单元文件组件单元文件组件单元文件 组件单元文件是创建新组件时建立的单元文件,有些组件组件单元文件是创建新组件时建立的单元文件,有些组件组件单元文件是创建新组件时建立的单元文件,有些组件组件单元文件是创建新组件时建立的单元文件,有些组件单元文件有窗体,有些则没有对应的窗体。

      单元文件有窗体,有些则没有对应的窗体单元文件有窗体,有些则没有对应的窗体单元文件有窗体,有些则没有对应的窗体vv 通用单元文件通用单元文件通用单元文件通用单元文件 通用单元文件主要用于定义应用程序所有单元均可使用的通用单元文件主要用于定义应用程序所有单元均可使用的通用单元文件主要用于定义应用程序所有单元均可使用的通用单元文件主要用于定义应用程序所有单元均可使用的数据类型、变量、过程、类等数据类型、变量、过程、类等数据类型、变量、过程、类等数据类型、变量、过程、类等 2. 2. 窗体文件窗体文件窗体文件窗体文件uu窗体文件是单元文件的伴随文件,用于快速开发窗体文件是单元文件的伴随文件,用于快速开发窗体文件是单元文件的伴随文件,用于快速开发窗体文件是单元文件的伴随文件,用于快速开发应用程序与用户进行信息交互的界面,窗体文件应用程序与用户进行信息交互的界面,窗体文件应用程序与用户进行信息交互的界面,窗体文件应用程序与用户进行信息交互的界面,窗体文件的扩展名为的扩展名为的扩展名为的扩展名为dfmdfmuu建立窗体文件的方法:建立窗体文件的方法:建立窗体文件的方法:建立窗体文件的方法: 执行菜单:执行菜单:执行菜单:执行菜单:FileFile→→NewNew→→FormForm 在默认情况下,我们看到的窗体文件只是一个窗在默认情况下,我们看到的窗体文件只是一个窗在默认情况下,我们看到的窗体文件只是一个窗在默认情况下,我们看到的窗体文件只是一个窗体。

      体uu按按按按F12F12功能键可实现窗体与其对应单元代码编辑功能键可实现窗体与其对应单元代码编辑功能键可实现窗体与其对应单元代码编辑功能键可实现窗体与其对应单元代码编辑窗口的互换窗口的互换窗口的互换窗口的互换 本节要讲的内容本节要讲的内容u项目文件中使用的文件项目文件中使用的文件 资源文件、项目选项和桌面设置文件、备份资源文件、项目选项和桌面设置文件、备份资源文件、项目选项和桌面设置文件、备份资源文件、项目选项和桌面设置文件、备份文件、包文件文件、包文件文件、包文件文件、包文件u项目文件的管理与优化项目文件的管理与优化u编译并运行项目编译并运行项目u项目中的项目中的Application对象对象 3. 3. 资源文件资源文件资源文件资源文件uu目的目的目的目的:用于存放应用程序的图标、图片和版本等信息用于存放应用程序的图标、图片和版本等信息用于存放应用程序的图标、图片和版本等信息用于存放应用程序的图标、图片和版本等信息uu使用资源文件方法使用资源文件方法使用资源文件方法使用资源文件方法:::: {$R *.res}{$R *.res} 此语句常用于读取资源文件。

      其中,此语句常用于读取资源文件其中,此语句常用于读取资源文件其中,此语句常用于读取资源文件其中,* *表示与当前单元或表示与当前单元或表示与当前单元或表示与当前单元或项目文件重名项目文件重名项目文件重名项目文件重名uu建立资源文件方法建立资源文件方法建立资源文件方法建立资源文件方法:使用:使用:使用:使用ToolsTools→→Image EditorImage Editor菜单菜单菜单菜单 右击右击右击右击右击右击右击右击 4. 项目选项和桌面设置文件项目选项和桌面设置文件目的目的目的目的:保存项目或桌面设置保存项目或桌面设置保存项目或桌面设置保存项目或桌面设置uu项目选项文件的扩展名为项目选项文件的扩展名为项目选项文件的扩展名为项目选项文件的扩展名为dof dof ,它存储的是通,它存储的是通,它存储的是通,它存储的是通过过过过ProjectProject→→OptionsOptions菜单设置的选项菜单设置的选项菜单设置的选项菜单设置的选项uu桌面设置文件的扩展名为桌面设置文件的扩展名为桌面设置文件的扩展名为桌面设置文件的扩展名为dskdsk,它存储的是通,它存储的是通,它存储的是通,它存储的是通过过过过ToolsTools→→OptionsOptions菜单设置的桌面选项。

      菜单设置的桌面选项菜单设置的桌面选项菜单设置的桌面选项 5. 备份文件备份文件uu备份文件是恢复误操作备份文件是恢复误操作备份文件是恢复误操作备份文件是恢复误操作而准备的文件而准备的文件而准备的文件而准备的文件uu备份文件名与原文件重备份文件名与原文件重备份文件名与原文件重备份文件名与原文件重名,扩展名前加名,扩展名前加名,扩展名前加名,扩展名前加“ “~~” ”符号 例如:例如:例如:例如: 项目文件项目文件项目文件项目文件 ~dpr~dpr 单元单元单元单元 ~pas~pas 窗体文件窗体文件窗体文件窗体文件 ~dfm~dfm 设置保设置保设置保设置保留备份留备份留备份留备份设置系统自动保留备份文件:设置系统自动保留备份文件:设置系统自动保留备份文件:设置系统自动保留备份文件: Tools->Editor Options-> DisplayTools->Editor Options-> Display 6. 包文件包文件u作用作用:类似于动态链接库,保存可被其它:类似于动态链接库,保存可被其它程序调用的程序代码。

      程序调用的程序代码u文件扩展名文件扩展名:: dpk (Delphi packageDelphi package的缩写的缩写的缩写的缩写),,此文件编译时可生成两种文件:此文件编译时可生成两种文件:((((1 1)扩展名是)扩展名是)扩展名是)扩展名是.dcp.dcp文件,它一种中间文件文件,它一种中间文件文件,它一种中间文件文件,它一种中间文件2 2)扩展名是)扩展名是)扩展名是)扩展名是.bpl.bpl文件,它是能被程序使用文件,它是能被程序使用文件,它是能被程序使用文件,它是能被程序使用的最终文件的最终文件的最终文件的最终文件 3.4 项目文件的管理与优化项目文件的管理与优化常用的方法:常用的方法:uu一个项目独占一个文件夹一个项目独占一个文件夹一个项目独占一个文件夹一个项目独占一个文件夹 可避免不同项目中同名文件的相互覆盖可避免不同项目中同名文件的相互覆盖可避免不同项目中同名文件的相互覆盖可避免不同项目中同名文件的相互覆盖 uu共享单元放在一个文件夹共享单元放在一个文件夹共享单元放在一个文件夹共享单元放在一个文件夹 可提高单元文件的利用效率。

      可提高单元文件的利用效率可提高单元文件的利用效率可提高单元文件的利用效率 3.5 编译并运行项目编译并运行项目uu编译的目的是将项目文件转化为可执行文件编译的目的是将项目文件转化为可执行文件编译的目的是将项目文件转化为可执行文件编译的目的是将项目文件转化为可执行文件uu有两种编译项目文件的方法:有两种编译项目文件的方法:有两种编译项目文件的方法:有两种编译项目文件的方法:((((1 1))))Compile Compile 编译:用于编译做过修改的源程编译:用于编译做过修改的源程编译:用于编译做过修改的源程编译:用于编译做过修改的源程序2 2))))BuildBuild编译:对项目中的所有文件重新编译编译:对项目中的所有文件重新编译编译:对项目中的所有文件重新编译编译:对项目中的所有文件重新编译 使用方法使用方法使用方法使用方法::::Project -> Compile Project -> Compile 或或或或 BuildBuilduu运行编译后的文件:运行编译后的文件:运行编译后的文件:运行编译后的文件:Run-> Run (F9 Run-> Run (F9 编译并运行项目文件编译并运行项目文件编译并运行项目文件编译并运行项目文件) )另外还有另外还有另外还有另外还有F7F7、、、、 F8F8、、、、 F4F4。

       3.6 项目中的项目中的Application对象对象uu为加快程序开发,在任何为加快程序开发,在任何为加快程序开发,在任何为加快程序开发,在任何有窗体的项目有窗体的项目有窗体的项目有窗体的项目中,系统中,系统中,系统中,系统自动定义了一个名为自动定义了一个名为自动定义了一个名为自动定义了一个名为ApplicationApplication的对象,以的对象,以的对象,以的对象,以便用其完成某些独特的功能便用其完成某些独特的功能便用其完成某些独特的功能便用其完成某些独特的功能 u本节讲解本节讲解Application对象如下内容:对象如下内容:1.属性及应用属性及应用属性及应用属性及应用2.方法及应用方法及应用方法及应用方法及应用3.事件及应用事件及应用事件及应用事件及应用 1. 属性及应用属性及应用uuApplicationApplication对象有较多的属性,常用属性见下表:对象有较多的属性,常用属性见下表:对象有较多的属性,常用属性见下表:对象有较多的属性,常用属性见下表: 属性名属性名属性名属性名 含义含义含义含义ActiveActive判断当前应用程序是否具有焦点。

      判断当前应用程序是否具有焦点判断当前应用程序是否具有焦点判断当前应用程序是否具有焦点ExeNameExeName返回应用程序所在文件名返回应用程序所在文件名返回应用程序所在文件名返回应用程序所在文件名( (含路径含路径含路径含路径) )HintHint用于保存组件的提示信息注意,当鼠标移动用于保存组件的提示信息注意,当鼠标移动用于保存组件的提示信息注意,当鼠标移动用于保存组件的提示信息注意,当鼠标移动到某个组件上时,则组件的到某个组件上时,则组件的到某个组件上时,则组件的到某个组件上时,则组件的HintHint属性值就被赋属性值就被赋属性值就被赋属性值就被赋到此属性中到此属性中到此属性中到此属性中IconIcon用于设置应用程序在任务栏上显示的图标用于设置应用程序在任务栏上显示的图标用于设置应用程序在任务栏上显示的图标用于设置应用程序在任务栏上显示的图标MainFormMainForm返回当前应用程序的主窗体对象返回当前应用程序的主窗体对象返回当前应用程序的主窗体对象返回当前应用程序的主窗体对象ShowHintShowHint设置是否显示应用程序的提示信息设置是否显示应用程序的提示信息。

      设置是否显示应用程序的提示信息设置是否显示应用程序的提示信息TitleTitle应用程序任务栏上显示的标题应用程序任务栏上显示的标题应用程序任务栏上显示的标题应用程序任务栏上显示的标题 uu常使用常使用常使用常使用ExeNameExeName属性取应用程序所在的路径名属性取应用程序所在的路径名属性取应用程序所在的路径名属性取应用程序所在的路径名例如:例如:例如:例如: Label3.caption:= Label3.caption:= ExtractFilePath(Application.ExeName) ExtractFilePath(Application.ExeName) ;;;;其中:其中:其中:其中: ExtractFilePathExtractFilePath函数用于返回字符串中的路径名函数用于返回字符串中的路径名函数用于返回字符串中的路径名函数用于返回字符串中的路径名 另外,另外,另外,另外,ExtractFileNameExtractFileName返回字符串中的文件名这两返回字符串中的文件名这两返回字符串中的文件名。

      这两返回字符串中的文件名这两个函数用处很大,制作自动安装软件时要用到它个函数用处很大,制作自动安装软件时要用到它个函数用处很大,制作自动安装软件时要用到它个函数用处很大,制作自动安装软件时要用到它 2. Application2. Application对象的方法对象的方法对象的方法对象的方法 在项目文件中常使用的方法在项目文件中常使用的方法在项目文件中常使用的方法在项目文件中常使用的方法1.1.InitializeInitialize2.2.CreateFormCreateForm3.3.RunRun 上述三种方法上述三种方法上述三种方法上述三种方法3.3.23.3.2节已经使用过,它们的作用分别是节已经使用过,它们的作用分别是节已经使用过,它们的作用分别是节已经使用过,它们的作用分别是初始化应用程序、创建窗体和运行应用程序初始化应用程序、创建窗体和运行应用程序初始化应用程序、创建窗体和运行应用程序初始化应用程序、创建窗体和运行应用程序 使用格式如下:使用格式如下:使用格式如下:使用格式如下:Application.Initialize;Application.Initialize;Application.CreateForm(TForm1, Form1);Application.CreateForm(TForm1, Form1);Application.Run;Application.Run; 4. ProcessMessages4. ProcessMessages方法方法方法方法uuProcessMessagesProcessMessages用于从用于从用于从用于从WindowsWindows消息队列中检消息队列中检消息队列中检消息队列中检索任何等待处理的消息并进行处理索任何等待处理的消息并进行处理索任何等待处理的消息并进行处理索任何等待处理的消息并进行处理. .下面看一段代码:下面看一段代码:下面看一段代码:下面看一段代码: while J < 64000 dowhile J < 64000 do begin begin Y := Random(J); Y := Random(J); Inc(J); Inc(J); Application.ProcessMessages; Application.ProcessMessages; end; end;若没有若没有若没有若没有Application.ProcessMessagesApplication.ProcessMessages方法,则方法,则方法,则方法,则循环程序执行结束前不会响应用户的其它请求。

      循环程序执行结束前不会响应用户的其它请求循环程序执行结束前不会响应用户的其它请求循环程序执行结束前不会响应用户的其它请求 5.5.MessageBoxMessageBox方法方法方法方法用于打开一个标准的用于打开一个标准的用于打开一个标准的用于打开一个标准的WindowsWindows提示信息框具体使提示信息框具体使提示信息框具体使提示信息框具体使用方法参见第用方法参见第用方法参见第用方法参见第5 5章提示信息窗口一节章提示信息窗口一节章提示信息窗口一节章提示信息窗口一节例如:例如:例如:例如: if Application.MessageBox('if Application.MessageBox('提示信息提示信息提示信息提示信息','','标题标题标题标题', ', MB_OKCANCEL)=idok then MB_OKCANCEL)=idok then ShowMessage('ss'); ShowMessage('ss');6.6.MinimizeMinimize方法方法方法方法用于把应用程序的主窗口最小化。

      用于把应用程序的主窗口最小化用于把应用程序的主窗口最小化用于把应用程序的主窗口最小化7.7.RestoreRestore方法方法方法方法用于把应用程序的恢复主窗口显示状态用于把应用程序的恢复主窗口显示状态用于把应用程序的恢复主窗口显示状态用于把应用程序的恢复主窗口显示状态 3. Application对象的事件对象的事件ApplicationApplication有较多的事件,有较多的事件,有较多的事件,有较多的事件,DelphiDelphi专门为它提供了专门为它提供了专门为它提供了专门为它提供了一个事件组件,如图所示一个事件组件,如图所示一个事件组件,如图所示一个事件组件,如图所示 事件事件事件事件列表列表列表列表 ApplicationApplication较常用的事件列表如下:较常用的事件列表如下:较常用的事件列表如下:较常用的事件列表如下:    事件事件 描述描述OnActivate OnActivate 当应用程序被激活时,将触发这个事件当应用程序被激活时,将触发这个事件当应用程序被激活时,将触发这个事件当应用程序被激活时,将触发这个事件OnDeativate OnDeativate 当应用程序被挂起或切换到其它应用程序时将当应用程序被挂起或切换到其它应用程序时将当应用程序被挂起或切换到其它应用程序时将当应用程序被挂起或切换到其它应用程序时将触发这个事件。

      触发这个事件触发这个事件触发这个事件OnExceptionOnException当一个未处理的异常发生时,将触发这个事件当一个未处理的异常发生时,将触发这个事件当一个未处理的异常发生时,将触发这个事件当一个未处理的异常发生时,将触发这个事件OnHelpOnHelp当用户请求帮助的时候将触发这个事件当用户请求帮助的时候将触发这个事件当用户请求帮助的时候将触发这个事件当用户请求帮助的时候将触发这个事件OnMessageOnMessage当应用程序接收到一个消息时将触发这个事件当应用程序接收到一个消息时将触发这个事件当应用程序接收到一个消息时将触发这个事件当应用程序接收到一个消息时将触发这个事件OnHintOnHint当鼠标指向某个组件时将触发这个事件当鼠标指向某个组件时将触发这个事件当鼠标指向某个组件时将触发这个事件当鼠标指向某个组件时将触发这个事件OnIdleOnIdle当应用程序进入空闲状态时将触发这个事件当应用程序进入空闲状态时将触发这个事件当应用程序进入空闲状态时将触发这个事件当应用程序进入空闲状态时将触发这个事件常使用此事件编写动画游戏常使用此事件编写动画游戏常使用此事件编写动画游戏。

      常使用此事件编写动画游戏 例例1::利用利用利用利用ApplicationApplication组件设计应用程序,要求在主组件设计应用程序,要求在主组件设计应用程序,要求在主组件设计应用程序,要求在主窗体的窗体的窗体的窗体的StatusbarStatusbar组件中显示鼠标所指组件的组件中显示鼠标所指组件的组件中显示鼠标所指组件的组件中显示鼠标所指组件的提示信息提示信息提示信息提示信息 u提示:提示: 在在在在ApplicationApplication组件的组件的组件的组件的Onhint Onhint 事件中加入下代码事件中加入下代码事件中加入下代码事件中加入下代码:::: Statusbar1.SimpleText :=Statusbar1.SimpleText := Application.Hint; Application.Hint; 本次要讲内容本次要讲内容uu项目中的项目中的项目中的项目中的ScreenScreen对象对象对象对象uu常用程序设计技巧常用程序设计技巧常用程序设计技巧常用程序设计技巧1.1.使用资源文件使用资源文件使用资源文件使用资源文件2.2.修改屏幕分辨率修改屏幕分辨率修改屏幕分辨率修改屏幕分辨率3.3.避免程序重复运行避免程序重复运行避免程序重复运行避免程序重复运行4.4.设置程序运行权限设置程序运行权限设置程序运行权限设置程序运行权限5.5.显示封面显示封面显示封面显示封面6.6.重新启动与退出重新启动与退出重新启动与退出重新启动与退出 3.7 项目中的项目中的Screen对象对象属性名属性名属性名属性名含含含含义义ActiveControlActiveControl它是只它是只它是只它是只读读属性,用于保存当前屏幕上属性,用于保存当前屏幕上属性,用于保存当前屏幕上属性,用于保存当前屏幕上获获得焦点的得焦点的得焦点的得焦点的组组件。

      件ActiveFormActiveForm用于保存用于保存用于保存用于保存获获得焦点的窗体得焦点的窗体得焦点的窗体得焦点的窗体CursorCursor用于用于用于用于设设置置置置应应用程序的光用程序的光用程序的光用程序的光标标形状DataModuleCountDataModuleCount表示表示表示表示应应用程序中数据模用程序中数据模用程序中数据模用程序中数据模块块的个数DataModulesDataModules保存保存保存保存应应用程序中的数据模用程序中的数据模用程序中的数据模用程序中的数据模块块列表FormCountFormCount表示表示表示表示应应用程序中窗体的个数用程序中窗体的个数用程序中窗体的个数用程序中窗体的个数FormsForms保存保存保存保存应应用程序中的窗体列表用程序中的窗体列表用程序中的窗体列表用程序中的窗体列表FontsFonts保存屏幕所支持的各种字体名称保存屏幕所支持的各种字体名称保存屏幕所支持的各种字体名称保存屏幕所支持的各种字体名称HeightHeight表示屏幕的高度表示屏幕的高度表示屏幕的高度表示屏幕的高度( (以像素以像素以像素以像素为单为单位位位位) ) 。

      PixelsPerInchPixelsPerInch表示表示系表示表示系表示表示系表示表示系统统字体的相字体的相字体的相字体的相对缩对缩放比例WidthWidth表示屏幕的表示屏幕的表示屏幕的表示屏幕的宽宽度度度度( (以像素以像素以像素以像素为单为单位位位位) ) uuFormsForms标准单元中定义的,其常用属性如下表标准单元中定义的,其常用属性如下表标准单元中定义的,其常用属性如下表标准单元中定义的,其常用属性如下表 3.8 程序设计中的常用基本技巧程序设计中的常用基本技巧本节主要内容:本节主要内容:1.使用资源文件使用资源文件使用资源文件使用资源文件2.修改屏幕分辨率修改屏幕分辨率修改屏幕分辨率修改屏幕分辨率3.避免应用程序重复启动避免应用程序重复启动避免应用程序重复启动避免应用程序重复启动4.设置应用程序启动权限设置应用程序启动权限设置应用程序启动权限设置应用程序启动权限5.显示封面显示封面显示封面显示封面6.重启或退出重启或退出重启或退出重启或退出WindowsWindows 1. 使用资源文件使用资源文件u使用资源文件(使用资源文件(.res)就是使用资源文件)就是使用资源文件中存放的位图、图标、光标等数据。

      中存放的位图、图标、光标等数据u使用资源文件前提条件:使用资源文件前提条件:1.使用语句:使用语句:使用语句:使用语句:{$R {$R 资源文件名资源文件名资源文件名资源文件名.res}.res}2.资源名中的字母必须大写资源名中的字母必须大写资源名中的字母必须大写资源名中的字母必须大写 注意注意注意注意:若在程序计期修改了资源文件,请使用:若在程序计期修改了资源文件,请使用:若在程序计期修改了资源文件,请使用:若在程序计期修改了资源文件,请使用ProjectProject→→Build All ProjectsBuild All Projects重新编译后再执行程重新编译后再执行程重新编译后再执行程重新编译后再执行程序 u读取资源的常用方法:读取资源的常用方法:1.1.取图片取图片取图片取图片格式:格式:格式:格式:image1.Picture.Bitmap.image1.Picture.Bitmap. LoadFromResourceName(hInstance, LoadFromResourceName(hInstance, ‘ ‘图片名图片名图片名图片名'); '); 2.2.取图标取图标取图标取图标格式:格式:格式:格式: Application.Icon.HandleApplication.Icon.Handle:=LoadIcon(hInstance, :=LoadIcon(hInstance, ‘ ‘图标名称图标名称图标名称图标名称’ ’););其中其中其中其中hInstancehInstance表示包含资源文件的当前应用程序对象。

      表示包含资源文件的当前应用程序对象表示包含资源文件的当前应用程序对象表示包含资源文件的当前应用程序对象3.3.取光标取光标取光标取光标格式:格式:格式:格式: Screen.CursonsScreen.Cursons[X]:=[X]:=LoadcursorLoadcursor(hInstance,(hInstance,’ ’光标名光标名光标名光标名’ ’) );;;; Screen.Cursor :=XScreen.Cursor :=X;;;;其中其中其中其中::::XX为正整数,因为默认光标取为正整数,因为默认光标取为正整数,因为默认光标取为正整数,因为默认光标取0 0到到到到-22(-22(即从即从即从即从crDefaultcrDefault到到到到crSizeAll)crSizeAll) 2.2.修改屏幕分辨率修改屏幕分辨率修改屏幕分辨率修改屏幕分辨率uu使用使用使用使用Windows APIWindows API两个函数完成此功能,分别为:两个函数完成此功能,分别为:两个函数完成此功能,分别为:两个函数完成此功能,分别为: (1) (1) 获取显示模式数据函数获取显示模式数据函数获取显示模式数据函数获取显示模式数据函数 定义格式:定义格式:定义格式:定义格式:EnumDisplaySettingsEnumDisplaySettings(lpDName, iMNum, lpDMode(lpDName, iMNum, lpDMode)))) 功能:获取指定的显示模式数据,若显示模式不存在,则返功能:获取指定的显示模式数据,若显示模式不存在,则返功能:获取指定的显示模式数据,若显示模式不存在,则返功能:获取指定的显示模式数据,若显示模式不存在,则返 回值为回值为回值为回值为0 0((((False)False)。

      其中:其中:其中:其中:lpDName:lpDName:一般设置为一般设置为一般设置为一般设置为NilNil iMNum :iMNum :用于指定显示模式号用于指定显示模式号用于指定显示模式号用于指定显示模式号 lpDMode :lpDMode :是是是是TDevModeTDevMode类型的指针变量,用于保类型的指针变量,用于保类型的指针变量,用于保类型的指针变量,用于保 存获取的显示模式数据存获取的显示模式数据存获取的显示模式数据存获取的显示模式数据 Var DevModeArray: TList; //Var DevModeArray: TList; //显示模式信息结构列表显示模式信息结构列表显示模式信息结构列表显示模式信息结构列表 …………varvarDevModeCount: Integer; //DevModeCount: Integer; //显示模式的个数显示模式的个数显示模式的个数显示模式的个数DevModeInfo: ^TDevMode; //DevModeInfo: ^TDevMode; //定义一个指向显示模式的指针定义一个指向显示模式的指针定义一个指向显示模式的指针定义一个指向显示模式的指针beginbeginDevModeArray := TList.Create; //DevModeArray := TList.Create; //创建列表对象创建列表对象创建列表对象创建列表对象DevModeCount := 0;DevModeCount := 0;GetMem(DevModeInfo, SizeOf(TDevMode)); //GetMem(DevModeInfo, SizeOf(TDevMode)); //分配内存分配内存分配内存分配内存 { {枚举显示模式,并将获取的属性值其保存在到枚举显示模式,并将获取的属性值其保存在到枚举显示模式,并将获取的属性值其保存在到枚举显示模式,并将获取的属性值其保存在到DevModeInfo DevModeInfo 变量中变量中变量中变量中} }while EnumDisplaySettings(NIL, DevModeCount, DevModeInfo^) while EnumDisplaySettings(NIL, DevModeCount, DevModeInfo^) dodobeginbeginDevModeArray.Add(DevModeInfo); //DevModeArray.Add(DevModeInfo); //将屏幕信息保存将屏幕信息保存将屏幕信息保存将屏幕信息保存Inc(DevModeCount);Inc(DevModeCount); // //屏幕自信保存到屏幕自信保存到屏幕自信保存到屏幕自信保存到ListBox1ListBox1列表组件中列表组件中列表组件中列表组件中ListBox1.Items.Add(IntToStr(DevModeInfo^.dmPelsWidth)+'×'+ListBox1.Items.Add(IntToStr(DevModeInfo^.dmPelsWidth)+'×'+ IntToStr(DevModeInfo^.dmPelsHeight)+', '+ IntToStr(DevModeInfo^.dmPelsHeight)+', '+ IntToStr(Trunc(IntPower(2,DevModeInfo^.dmBitsPerPel)))+ IntToStr(Trunc(IntPower(2,DevModeInfo^.dmBitsPerPel)))+ 'colors'); 'colors');GetMem(DevModeInfo, SizeOf(TDevMode)); //GetMem(DevModeInfo, SizeOf(TDevMode)); //分配内存分配内存分配内存分配内存end;end;FreeMem(DevModeInfo, SizeOf(TDevMode)); // FreeMem(DevModeInfo, SizeOf(TDevMode)); // 释放分配的内存释放分配的内存释放分配的内存释放分配的内存ListBox1.ItemIndex := 0;ListBox1.ItemIndex := 0;end;end; (2) (2) 设置屏幕的显示方式函数设置屏幕的显示方式函数设置屏幕的显示方式函数设置屏幕的显示方式函数 定义格式:定义格式:定义格式:定义格式: ChangeDisplaySettings(lpDevMode,dwflags)ChangeDisplaySettings(lpDevMode,dwflags) 功能:按指定模式修改显示器的分辨率。

      功能:按指定模式修改显示器的分辨率功能:按指定模式修改显示器的分辨率功能:按指定模式修改显示器的分辨率 其中:其中:其中:其中:1 1))))lpDevModelpDevMode是显示模式数据的是显示模式数据的是显示模式数据的是显示模式数据的TDevModeTDevMode类型指类型指类型指类型指针变量2 2))))dwflagsdwflags常使用常使用常使用常使用CDS_UPDATEREGISTRYCDS_UPDATEREGISTRY,表示修改显,表示修改显,表示修改显,表示修改显示模式后,同时修改注册表示模式后,同时修改注册表示模式后,同时修改注册表示模式后,同时修改注册表3 3)函数返回值:当返回)函数返回值:当返回)函数返回值:当返回)函数返回值:当返回DISP_CHANGE_SUCCESSFULDISP_CHANGE_SUCCESSFUL时时时时表表表表示修改成功,当返回示修改成功,当返回示修改成功,当返回示修改成功,当返回DISP_CHANGE_RESTARTDISP_CHANGE_RESTART,,,,则表则表则表则表示重启操作系统后才能使设置起作用示重启操作系统后才能使设置起作用。

      示重启操作系统后才能使设置起作用示重启操作系统后才能使设置起作用 部分程序代码部分程序代码部分程序代码部分程序代码::::VarVar ModeChange: Longint; ModeChange: Longint; beginbegin { {更改显示模式,并修改注册表更改显示模式,并修改注册表更改显示模式,并修改注册表更改显示模式,并修改注册表} } ModeChange:=ChangeDisplaySettings( ModeChange:=ChangeDisplaySettings(模式指针变量模式指针变量模式指针变量模式指针变量, , CDS_UPDATEREGISTRY); CDS_UPDATEREGISTRY); if ModeChange=DISP_CHANGE_SUCCESSFUL then if ModeChange=DISP_CHANGE_SUCCESSFUL then ShowMessage(' ShowMessage('动态改变屏幕分辨率成功动态改变屏幕分辨率成功动态改变屏幕分辨率成功动态改变屏幕分辨率成功')') else if ModeChange=DISP_CHANGE_RESTART then else if ModeChange=DISP_CHANGE_RESTART then ShowMessage(' ShowMessage('需要重新起动才能使设置起作用需要重新起动才能使设置起作用需要重新起动才能使设置起作用需要重新起动才能使设置起作用');');end;end; 3.8.3 避免应用程序重复启动避免应用程序重复启动uu由于由于由于由于WindowsWindows是一个多任务的操作系统,因是一个多任务的操作系统,因是一个多任务的操作系统,因是一个多任务的操作系统,因此可时运行同一程序的多个实例,但有时为了此可时运行同一程序的多个实例,但有时为了此可时运行同一程序的多个实例,但有时为了此可时运行同一程序的多个实例,但有时为了数据安全,要求应用程序只能运行一个实例。

      数据安全,要求应用程序只能运行一个实例数据安全,要求应用程序只能运行一个实例数据安全,要求应用程序只能运行一个实例uu主要有两种方法:主要有两种方法:主要有两种方法:主要有两种方法:1. 1. “ “查找窗口查找窗口查找窗口查找窗口” ”法;法;法;法;2. 2. “ “创建互斥对象创建互斥对象创建互斥对象创建互斥对象” ” 1. 查找窗口法查找窗口法uu工作原理工作原理工作原理工作原理: : 应用程序运行前使用应用程序运行前使用应用程序运行前使用应用程序运行前使用FindWindowFindWindow函数函数函数函数首先查找首先查找首先查找首先查找当前操作系统中是否加裁主窗体,如果有则不启动当前操作系统中是否加裁主窗体,如果有则不启动当前操作系统中是否加裁主窗体,如果有则不启动当前操作系统中是否加裁主窗体,如果有则不启动 FindWindowFindWindow函数使用格式:函数使用格式:函数使用格式:函数使用格式: FindWindow(FindWindow(类名类名类名类名, ,窗体标题名)窗体标题名)窗体标题名)窗体标题名); ; 其中:其中:其中:其中:“ “类名类名类名类名” ”表示表示查找窗体所属的类。

      表示表示查找窗体所属的类表示表示查找窗体所属的类表示表示查找窗体所属的类例如例如例如例如::::将项目文件修改为如下格式:将项目文件修改为如下格式:将项目文件修改为如下格式:将项目文件修改为如下格式: Var Hwnd:Thandle;Var Hwnd:Thandle; begin begin Hwnd:=FindWindow('TForm1','Main'); Hwnd:=FindWindow('TForm1','Main'); ////查找主窗体查找主窗体查找主窗体查找主窗体 If Hwnd=nil then //If Hwnd=nil then //如果没找到应用程序的主窗体则启动应用程序如果没找到应用程序的主窗体则启动应用程序如果没找到应用程序的主窗体则启动应用程序如果没找到应用程序的主窗体则启动应用程序 BeginBeginApplication.Initialize;Application.Initialize;Application.CreateForm(TForm1, Form1);Application.CreateForm(TForm1, Form1);Application.Run;Application.Run; end; end; end end运行运行运行运行 2. 使用互斥对象使用互斥对象uu本方法是在应用程序中通过本方法是在应用程序中通过本方法是在应用程序中通过本方法是在应用程序中通过CreateMutexCreateMutex函数函数函数函数创建互斥对象,若创建不成功,则说明系统已经创建互斥对象,若创建不成功,则说明系统已经创建互斥对象,若创建不成功,则说明系统已经创建互斥对象,若创建不成功,则说明系统已经启动,则系统不再启动。

      启动,则系统不再启动启动,则系统不再启动启动,则系统不再启动uu使用格式:使用格式:使用格式:使用格式: CreateMutex(lpMA, bIO, lpName)CreateMutex(lpMA, bIO, lpName) uu功能:创建互斥对象功能:创建互斥对象功能:创建互斥对象功能:创建互斥对象 其中其中其中其中::::vv参数参数参数参数lpMAlpMA是一个指向安全属性的指针,一般使用空是一个指向安全属性的指针,一般使用空是一个指向安全属性的指针,一般使用空是一个指向安全属性的指针,一般使用空指针指针指针指针nilnil,表示使用默认安全属性表示使用默认安全属性表示使用默认安全属性表示使用默认安全属性vv参数参数参数参数bIObIO表示互斥对象是否指定初始所有者,一般默表示互斥对象是否指定初始所有者,一般默表示互斥对象是否指定初始所有者,一般默表示互斥对象是否指定初始所有者,一般默认为认为认为认为TrueTrue vv参数参数参数参数lpNamelpName用于设置要创建的互斥对象名用于设置要创建的互斥对象名用于设置要创建的互斥对象名。

      用于设置要创建的互斥对象名    uu项目文件中的部分代码:项目文件中的部分代码:项目文件中的部分代码:项目文件中的部分代码:VAR Mutex:THandle;VAR Mutex:THandle;beginbegin Mutex:=CreateMutex(NIL,True,'Form1'); Mutex:=CreateMutex(NIL,True,'Form1'); // //判断创建互斥对象是否成功判断创建互斥对象是否成功判断创建互斥对象是否成功判断创建互斥对象是否成功 IF GetLastError<>ERROR_ALREADY_EXISTS THENIF GetLastError<>ERROR_ALREADY_EXISTS THEN BEGIN BEGIN Application.Initialize; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm1, Form1); Application.Run; Application.Run; end; end; ReleaseMutex(Mutex); ReleaseMutex(Mutex);end.end. 4. 4. 设置应用程序启动权限设置应用程序启动权限设置应用程序启动权限设置应用程序启动权限uu通过项目文件中加入判断进入权限的代码,解决户身份的通过项目文件中加入判断进入权限的代码,解决户身份的通过项目文件中加入判断进入权限的代码,解决户身份的通过项目文件中加入判断进入权限的代码,解决户身份的验证问题。

      验证问题验证问题验证问题分析分析分析分析:由于应用程序运行是通过:由于应用程序运行是通过:由于应用程序运行是通过:由于应用程序运行是通过AApplicationpplication的的的的InitializeInitialize、、、、CreateformCreateform、和、和、和、和RunRun三个过程实现的,因此在执行这丰类三个过程实现的,因此在执行这丰类三个过程实现的,因此在执行这丰类三个过程实现的,因此在执行这丰类过程前加入判别用户权限的指令,若符合要求则启动,否过程前加入判别用户权限的指令,若符合要求则启动,否过程前加入判别用户权限的指令,若符合要求则启动,否过程前加入判别用户权限的指令,若符合要求则启动,否则退出系统程序基本格式如下:则退出系统程序基本格式如下:则退出系统程序基本格式如下:则退出系统程序基本格式如下:• •输入口令输入口令输入口令输入口令 -> Password-> Password• •if if 系统口令系统口令系统口令系统口令=Password then=Password then• •beginbegin• • 执行启动程序代码执行启动程序代码执行启动程序代码执行启动程序代码; ;• •endend• •elseelse• • 退出系统;退出系统;退出系统;退出系统; 请看请看请看请看 Initialize.dpr Initialize.dpr 的源程序实例:的源程序实例:的源程序实例:的源程序实例:program Initialize;program Initialize;uses Forms, Dialogs, uses Forms, Dialogs, ChangeScreen in 'ChangeScreen.pas' {Form1}; ChangeScreen in 'ChangeScreen.pas' {Form1};varvar Password: String; Password: String; {$R *.res} {$R *.res}beginbegin if InPutQuery(' if InPutQuery('登录口令登录口令登录口令登录口令','','输入口令输入口令输入口令输入口令',password) then',password) then begin begin if password= 'Screen' then // if password= 'Screen' then //判断登录口令判断登录口令判断登录口令判断登录口令 beginbegin Application.Initialize; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm1, Form1); Application.Run; Application.Run; end end else else MessageDlg(' MessageDlg('口令不正确口令不正确口令不正确口令不正确, ,程序终止程序终止程序终止程序终止',mtError, ',mtError, [mbok],0); [mbok],0); end; end;end.end. 说明:说明:说明:说明:InPutQueryInPutQuery和和和和MessageDlgMessageDlg在在在在5.55.5讲述的显示对话框函数。

      讲述的显示对话框函数讲述的显示对话框函数讲述的显示对话框函数 5. 5. 显示封面显示封面显示封面显示封面uu生成应用程序正式启动前的等待界面生成应用程序正式启动前的等待界面生成应用程序正式启动前的等待界面生成应用程序正式启动前的等待界面分析分析分析分析:影响应用系统启动的是创建窗体过程,当要创:影响应用系统启动的是创建窗体过程,当要创:影响应用系统启动的是创建窗体过程,当要创:影响应用系统启动的是创建窗体过程,当要创建窗体所需内存较大时,创建过程可能需要较长建窗体所需内存较大时,创建过程可能需要较长建窗体所需内存较大时,创建过程可能需要较长建窗体所需内存较大时,创建过程可能需要较长的时间,因此封面显示应在创建之前开始,创建的时间,因此封面显示应在创建之前开始,创建的时间,因此封面显示应在创建之前开始,创建的时间,因此封面显示应在创建之前开始,创建完成之后结束,基本结构如下:完成之后结束,基本结构如下:完成之后结束,基本结构如下:完成之后结束,基本结构如下:l l创建封面创建封面创建封面创建封面l l显示封面显示封面显示封面显示封面l l创建系统所用窗体语句序列创建系统所用窗体语句序列创建系统所用窗体语句序列创建系统所用窗体语句序列l l撤消封面显示撤消封面显示撤消封面显示撤消封面显示l l运行应用系统运行应用系统运行应用系统运行应用系统 uu 项目中的部分代码如下:项目中的部分代码如下:项目中的部分代码如下:项目中的部分代码如下:Application.Initialize;Application.Initialize;////创建封面创建封面创建封面创建封面SplashFrm:=TSplashFrm.Create(Application);SplashFrm:=TSplashFrm.Create(Application);SplashFrm.Show; //SplashFrm.Show; //显示封面显示封面显示封面显示封面SplashFrm.Update; //SplashFrm.Update; //强制更新封面强制更新封面强制更新封面强制更新封面 ////创建主窗体及其它窗体代码从此开始创建主窗体及其它窗体代码从此开始创建主窗体及其它窗体代码从此开始创建主窗体及其它窗体代码从此开始Application.CreateForm(TMainFrmApplication.CreateForm(TMainFrm,,,,MainFrm);MainFrm); // //创建窗体结束创建窗体结束创建窗体结束创建窗体结束SplashFrm.Free; //SplashFrm.Free; //删除封面窗体删除封面窗体删除封面窗体删除封面窗体Application.RunApplication.Run;;;; 6. 6. 重启或退出重启或退出重启或退出重启或退出WindowsWindowsuu通过通过通过通过WindowsWindows的的的的APIAPI函数可重新启动操作系统。

      常用函数可重新启动操作系统常用函数可重新启动操作系统常用函数可重新启动操作系统常用 的函数有:的函数有:的函数有:的函数有:ExitWindowsExExitWindowsEx,其使用格式如下:,其使用格式如下:,其使用格式如下:,其使用格式如下: ExitWindowsExExitWindowsEx(uFlags,dwReserved);(uFlags,dwReserved); 功能:执行功能:执行功能:执行功能:执行WindowsWindows操作系统的退出功能操作系统的退出功能操作系统的退出功能操作系统的退出功能 说明:函数的第二个参数由系统内部使用,调用时为其赋说明:函数的第二个参数由系统内部使用,调用时为其赋说明:函数的第二个参数由系统内部使用,调用时为其赋说明:函数的第二个参数由系统内部使用,调用时为其赋0 0值即可;参数值即可;参数值即可;参数值即可;参数uFlagsuFlags可取三个值,分别为:可取三个值,分别为:可取三个值,分别为:可取三个值,分别为: EWX_LOGOFF EWX_LOGOFF ::::注销注销注销注销 EWX_REBOOTE EWX_REBOOTE ::::重新启动重新启动重新启动重新启动 WX_SHUTDOWN WX_SHUTDOWN ::::关闭系统关闭系统关闭系统关闭系统 请看下面实例请看下面实例请看下面实例请看下面实例:::: 下面是一个按钮的单击事件:下面是一个按钮的单击事件:procedure TForm1.BitBtn1Click(Sender: procedure TForm1.BitBtn1Click(Sender: TObject);TObject);beginbegincase RadioGroup1.itemIndex ofcase RadioGroup1.itemIndex of // //重新启动重新启动重新启动重新启动 0: Win32Check(ExitWindowsEx(EWX_REBOOT,0));0: Win32Check(ExitWindowsEx(EWX_REBOOT,0)); // //关闭系统关闭系统关闭系统关闭系统 1: Win32Check(ExitWindowsEx(EWX_SHUTDOWN,0)); 1: Win32Check(ExitWindowsEx(EWX_SHUTDOWN,0)); // //注销并重新登录注销并重新登录注销并重新登录注销并重新登录 2: Win32Check(ExitWindowsEx(EWX_LOGOFF,0)); 2: Win32Check(ExitWindowsEx(EWX_LOGOFF,0)); end;end;end;end; 小结小结 本章重点介绍了一个完整的应用程序系本章重点介绍了一个完整的应用程序系结构,详细讲解了结构,详细讲解了Application和和Screen对象在开发应用程序时的重要应用,及一些对象在开发应用程序时的重要应用,及一些常用的开发技术。

      点击阅读更多内容
      相关文档
      小学语文新部编版三年级上册第二单元语文园地二教学课件(2025秋).pptx 小学语文新部编版三年级上册第六单元16 富饶的西沙群岛教学课件(2025秋).pptx 小学语文新部编版二年级上册第二单元2 树之歌教学课件(2025秋).pptx 小学语文新部编版二年级上册第六单元15 朱德的扁担教学课件(2025秋).pptx 小学语文新部编版三年级上册第三单元语文园地三教学课件(2025秋).pptx 小学语文新部编版三年级上册第七单元21 大自然的声音教学课件(2025秋).pptx 小学语文新部编版二年级上册第三单元6 数星星的孩子教学课件(2025秋).pptx 小学语文新部编版二年级上册第七单元20 雪孩子教学课件(2025秋).pptx 小学语文新部编版三年级上册第三单元10 小狗学叫教学课件(2025秋).pptx 小学语文新部编版三年级上册第六单元语文园地六教学课件(2025秋).pptx 大象版小学六年级科学下册第三单元第2课《铁锈还是铁吗(含练习)》参考课件.pptx 大象版小学六年级科学下册第二单元第4课《可再生与不可再生资源(含练习)》参考课件.pptx 大象版小学六年级科学下册第二单元第1课《地球人类的宝藏(含练习)》参考课件.pptx 大象版小学六年级科学下册第一单元第2课《金丝猴的家(含练习)》参考课件.pptx 小学语文新部编版三年级上册第二单元7 听听秋的声音教学课件(2025秋).pptx 小学语文新部编版三年级上册第五单元习作与例文教学课件(2025秋).pptx 小学语文新部编版二年级上册第六单元14 八角楼上教学课件(2025秋).pptx 小学语文新部编版三年级上册第三单元口语交际:名字里的故事教学课件(2025秋).pptx 小学语文新部编版三年级上册第七单元20 古诗三首教学课件(2025秋).pptx 小学语文新部编版二年级上册第七单元19 雾在哪里教学课件(2025秋).pptx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.