320 likes | 716 Views
第 1 章 Delphi 概述. 本章要点:. Delphi 简介 Delphi 7.0 开发环境 应用程序开发过程 应用程序的组成. 1.1 Delphi 简介. Delphi 是一种方便、快捷的 Windows 应用程序开发工具,为程序员提供了全新的可视化编程环境。本节主要介绍以下几方面的内容:. Delphi 的发展历史; Delphi 的特点; 面向对象编程的基本知识; Windows 编程的基本知识。. 1.1.1 Delphi 的发展史.
E N D
第1章 Delphi概述 本章要点: • Delphi简介 • Delphi 7.0开发环境 • 应用程序开发过程 • 应用程序的组成
1.1 Delphi简介 Delphi是一种方便、快捷的Windows应用程序开发工具,为程序员提供了全新的可视化编程环境。本节主要介绍以下几方面的内容: • Delphi的发展历史; • Delphi的特点; • 面向对象编程的基本知识; • Windows编程的基本知识。
1.1.1 Delphi的发展史 随着Windows操作系统的推出,为了解决Windows编程存在的问题,Inprise公司(原Borland公司)开发了可视化的软件开发工具——Delphi,至今已经历了七代产品的发展历程。 • Delphi 1 几乎与Windows 95 同时发行。Delphi 1可以看做是 Turbo Pascal 的 Windows版,它为使用Pascal语言的用户提供了一 个可视化的编程环境。但仍然属于16位的开发环境。 • Delphi 2 支持32位编程,并且增加了数据模块等多种高效的数据重 用功能。 • Delphi 3 改进了集成开发环境,对组件库进行了许多增强,完全支持 ActiveX控件及其创建,它是一个比较成熟的版本,受到了 广泛好评,大大巩固Delphi作为Windows应用程序开发工具的 地位。 • Delphi 4、Delphi 5、Delphi 6 不断改进以前版本的不足,增加新的功 能,对开 发环境也不断改进和完善,特别是不断增加新组, 以适于网络开发的需要。 • Delphi 7 又在以前的基础上进行了加强,是目前的最新版本。
1.1.2 Delphi的特点 “真正的程序员用C,聪明的程序员用Delphi。”这句话是对Delphi最经典、最恰当的描述。Delphi具有简单、高效、功能强大的特点。 和Visual C++相比,Delphi更简单、更易于掌握,而在功能上却毫不逊色; 和Visual Basic 相比,Delphi功能更加强大,更加实用。同时具备了Visual C++功能强大和Visual Basic简单易学的特点。 主要特点: • 最先进的编程思想:面向对象的程序设计,简称为OOP • Delphi提供了大量的可视化组件,可视化编程功能强 • Delphi采用了最为领先的数据库技术 • 良好的分布式应用开发支持
1.1.3 Delphi 7.0新特性 按照Inprise惯例,Delphi每年都会推出一个新版本。Delphi 7.0是目前最高版本,进一步提高了自身性能和操作性。 Delphi 7.0在以下几个方面进行了加强 : • 集成开发环境方面 • Web方面 • 数据库方面 • 可视组件库及运行库方面
1.2 Delphi 7.0的开发环境 Delphi 7.0的集成开发环境IDE是用于进行设计、运行和测试程序的工作系统。 快捷工具栏 组件面板 窗体设计器 对象树状查看器 对象查看器 代码编辑和浏览窗口
1.2.1 Delphi 7.0主窗口 Delphi 7.0的主窗口位于屏幕的上端,包括:Menu(主菜单)、快捷工具栏和 Component Panel(组件板)。 主窗口 主窗口各部分的详细说明请参见本教程(P5~P14)
1.2.2 对象树状查看器及对象查看器 对象树状查看器(Object TreeView): 用树状结构列出了项目中所有的对象(即窗口、组件、菜单等),并清楚地表明了它们之间的关系。 对象查看器(Object Inspector): • 在对象树状查看器下方; • 对象查看器含有两个页卡: • 属性页卡(Properties),显示窗体中当前被选择部件的属性信息,并允许改变对象的属性; • 事件页卡(Events),列出了当前部件可以响应的事件。 对象树状查看器 对象查看器
1.2.3 窗体设计器 窗体设计器用于设计程序时用到的窗体外观。 窗体界面外观设计可在组件板中选择适当的组件,并将它设置在窗体中。其后的工作主要是设置窗体及组件的属性。 Forms窗口是开展大部分设计的工作区域。首次启动Delphi时显示的是窗体Form1。可以把一些组件放在窗体中,通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程序的用户界面。 对象树状查看器与对象查看器、窗体设计器同步,即在此三个工具的任何一个中改变焦点时,另外两个工具的焦点也会发生变化。 窗体设计器
1.2.4 代码编辑器 • 进入方法(2种): • 可从对象查看器中选择某事件,双击后进入代码编辑器。 • 也可在窗体中直接双击某对象进入代码编辑器,且光标会自动定位在相应的事件处理过程中。 启动Delphi或执行New Form菜单项时,系统即生成一个新的窗体,并在代码编辑器中产生一个新页卡,在新页卡中可以编辑相应的单元代码。 按F12可以在窗体设计器窗口和代码编辑器窗口之间转换。 代码编辑器窗口
1.2.4 代码编辑器(2) 为了减轻编写代码的工作量,Delphi 7.0除了提供一般的编辑功能外,还提供了以下功能。 • 代码完善功能 • 类成员自动提示:在代码编辑器中输入某个类变量及其后的“.”号后,系统会自动列出相应的类方法、属性名称等,以供程序员选择设置,选择后Enter键即可完成输入。 • 参数自动提示功能:当调用某一种方法时,只要输入方法名及其后的左括号,系统就会自动提示该方法的参数类别以及参数个数,程序员可根据这种提示填写参数,这样既为程序员提供了方便,又保证了参数的正确性。 代码完善功能 参数自动提示功能
1.2.4 代码编辑器(3) • 代码模板功能 用于提供语句模板以帮助代码的编写,例如:输入“if”,按组合键Ctrl+J,系统自动弹出有关“if”语句的代码模板供程序员选用。 • 符号洞察功能 程序员在代码编辑过程或程序调试过程中,将鼠标置于一个标识符上,稍做停顿系统将自动弹出一个提示框,提示框中显示该标识符的类型、所属单元、声明位置等信息。 代码模板功能
1.3 Delphi 7.0 应用程序开发框架 本节要创建一个简单的应用程序。 启动Delphi7.0程序,出现一个窗口,窗体标题栏中显示“Delphi7.0程序”字样,在窗体中有一个“显示”按钮,单击该按钮显示一行文字“第一个Delphi 7.0程序”。单击窗体右上方关闭按钮时退出程序。 通过设计一个简单的应用程序。 掌握以下内容: • 应用程序开发过程; • 常用开发工具及功能; • 应用程序组成; • 应用程序编译及执行。
通常开发Delphi应用程序的步骤是: (1)新建项目 (2)保存项目 (3)为窗体添加组件 (4)设置窗体和组件的属性 (5)编写程序代码 (6)编译、运行程序 1.3.1 应用程序开发步骤
1.新建应用程序工程 在Delphi7.0中开发的每个应用程序都被称为工程。 Delphi 7.0编程首先从创建一个新工程开始。创建新工程方法(2种): 启动Delphi 7.0进入开发环境,此时系统自动生成一个工 程,默认名为Project1; 选择File菜单,指向New,然后单击Application系统将创建一个新的工程。 新创建的工程中包含一个默认窗体(Form1)和它对应的单元(Unit1),根据工程的需要可添加窗体或单元。 工程文件的扩展名为.dpr。 打开一个已建立的工程的方法是:单击File菜单,指向Open Project,然后选择工程文件即可。
2.设计窗体和组件的属性(1) 程序设计首先是窗体设计。因此第一项工作就是在窗体设计器中完成窗体设计,即在窗体中添加各种所需对象进行界面设计。 将组件板上的组件添加到窗体上有三种方法: • 单击组件板上所需组件的按钮,然后在窗体适当位置拖动鼠标画出组件,即可将组件添加到窗体指定位置。 • 双击组件板上所需组件的按钮,即可将组件添加到窗体中心位置。 • 按下Shift键不放,单击组件板上所需组件的按钮,所选择组件出现蓝色边框,同时对象选择按钮弹起。可以在窗体适当位置连续画出该类组件,用鼠标单击对象选择按钮,可以取消该类组件的连续添加操作。 本例程序中要用到两个组件:一个是标签(Label)组件用于显示文字,另一个是按钮(Button)组件用于控制文字的显示。 新建一个工程,从组件板的Standard页卡中选择一个标签组件和一个按钮组件,放置在窗体Form1上,Delphi 7.0分别将它们自动命名为Label1,Button1。
2.设计窗体和组件的属性(2) 刚添加到窗体中的组件,其边框上有八个黑色小方块,表明它是当前被选定的组件。可以用鼠标拖拉边框上黑色小方块使组件在相应方向上放大或缩小。 按组合键Ctrl+C可以对所选组件进行复制,Ctrl+V可以在窗体中进行粘贴,按Delete键可以删除所选组件 • 1. 移动组件 • 把鼠标移到想移动的组件上,按住左键并移动光标,到合适的位置再释放左键,整个组件即被移到新位置。 • 2. 调整尺寸 • 把鼠标移动到要改变尺寸的组件上,单击左键选中该组件。尺寸调整器出现后,把鼠标移动到其中的一个小黑色方块上,当鼠标变成拖动方向指示时,按下并拖动鼠标左键,可以放大或缩小组件。上下左右的小方块用来移动对应的各边,四个角的方块可以移动相连的两条边。 • 如果要精确地表述部件的尺寸,可以在Object Inspector上,改变Left(表示部件左边缘到窗体左边框的像素点数)、Top(表示窗体上边框到部件上边缘的像素点数)、Width(部件本身的宽度)、Height(部件本身的高度)等属性。
2.设计窗体和组件的属性(3) • 3. 组件对齐 • 用调整位置的方法可以对齐组件,但操作步骤复杂。Delphi 7.0提供的对齐工具可以使多个组件的对齐极为迅速方便。 按下Shift键,用鼠标单击所要选择的组件,可实现多重选定;或者用鼠标在窗体上拉出一个矩形,凡是与此矩形相交的组件均被选定。选定多个组件后可以进行所需的对齐操作。被选中的按钮周边会出现暗灰色的边框,选用Edit菜单,单击Align命令,或单击鼠标右键激活弹出式菜单选择Position指向Align,可以显示对话框。 利用对齐模板来对齐组件也是很方便的,首先将要对齐的组件选成一组,选择View菜单指向Alignment Palette显示对齐模板,如图所示。按照所示的方式选择即可达到对齐的目的。 对齐模板 对齐对话框
2.设计窗体和组件的属性(4) 4. 锁定组 如果部件已经对齐,为防止不小心移动组件,可以将部件位置锁定。选择Edit菜单,指向Lock Controls选项,使得组件不能进行移动操作。解锁只需再次选择此项即可。 设计界面还包括对组件名称、标题、风格等属性的设置,这些设置必须在对象观察器的属性选项卡中进行。 本例中要进行如下设置: • 首先设置窗体Form1的属性。单击窗体的空白区域,看到对象观察器的对象下拉列表框中显示的是“Form1 Tform1”。从属性名中找到标题属性(Caption)一项,将其值改为“Delphi程序”。为了使窗体变得美观合适,更改高度属性(Height)值为220,宽度属性(Width)值为350。
2.设计窗体和组件的属性(5) • 选择标签Label1,修改其标题属性值为“第一个Delphi7.0程序”。为了使文字醒目,修改它的字体属性(Font),单击字体属性右边的按钮“...”,从弹出的对话框中设置相应的字体,如图所示,将它字体设为“楷体_GB2312”, 字形设为“粗体”,大小设为“一号”,并更改高度属性(Height)值为35,宽度属性(Width)值为300。 • 要实现刚开始时文字不可见,在单击时显示文字,本例将标签Label1的可见属性(Visible)设为“False”。 • 设置按钮Button1的标题属性为“显示”。并将显示按钮和标签拖动到适当位置。 设置字体
3.编写事件处理程序 为了使“显示”按钮能够在执行时响应鼠标的单击操作,须在按钮的单击事件(OnClick)中设置事件处理程序。 程序员没有必要对所有的事件都编写事件处理程序,只需对程序所涉及的事件进行编写事件处理程序。 本例中要对按钮的单击事件编写事件处理程序。 选择Button1 对象,在对象监视器中选择“事件”选项卡,在事件选项卡中选择OnClick事件,双击事件处理栏,Delphi自动生成该事件过程的代码框架,同时打开代码编辑窗口,将光标定位在代码框架过程体的首行处,在过程体中加入如下代码: label1.visible:=true; • 输入完毕可以看到按钮Button1的鼠标单击事件处理程序的全部内容是: • procedure TForm1.Button1Click(Sender: TObject); • begin • Label1.Visible:=True; • end; • end. 编写事件处理程序
4.保存工程 • 设计好的应用程序在运行前应当先保存起来,避免文件因发生意外而丢失。保存文件的方法有(3种): • (1)单击菜单File,Save All; • (2)单击工具栏上的Save All按钮; • (3)使用快捷键Ctrl+Shift+S。 单击工具栏上的Save All按钮,弹出一个保存单元文件对话框,在上面的保存目录下拉框中选择Sample目录,文件名默认是Unit1.pas,将它改为Main.pas,单击保存按钮。 接着弹出一个保存工程文件对话框,文件名默认是Project1.dpr,将它改为Sample.dpr,单击保存按钮,此时应用工程被保存在Sample目录下。保存工程时单元文件名不要和工程文件名相同。 作为一个实际的应用程序,应当将这些默认的文件名更改为更有意义,不易混淆的文件名。当项目包含的文件较多时这一点就显得更加重要,如果文件名指定不当会出现意想不到的麻烦。一般不要在Delphi 7.0系统外更改项目所用文件的文件名。 打开Sample目录可以发现有六个文件,分别是Main.dfm、Main.pas、Sample.cfg、Sample.dof、Sample.dpr、Sample.res。应当注意,一个应用程序并不是只由一个文件组成,而是由许多不同类型的文件组成的。
5.编译执行 可选择Project/Compile 菜单项对项目中的文件进行编译。如果语法有错,则根据提示的错误信息修改后再编译,直到编译无错误时,选用菜单项中的Run/Compile菜单转入运行。 也可两步合为一步,直接选用菜单项中的Run/Run菜单(或按F9热键)系统直接进行程序的编译与运行。 程序运行结果如图所示,当出现一个名为Delphi 7.0程序的窗口,单击窗口上的显示按钮,显示一行文字“第一个Delphi 7.0程序”,单击窗体右上方关闭按钮时退出程序。 在程序中除了语法错误,还有可能在程序运行中出现错误,这就要涉及到程序的调试。Delphi 7.0为程序员提供了方便的程序调试手段。 执行程序
1.3.2 应用程序开发框架 • 在前一节中,编写了一个简单程序来实现显示一个标签,并把程序储存在了Sample目录下,观察该目录可以发现,一个简单的Delphi 7.0程序是由多个文件组成的。其中包括以下几种文件。 • 工程文件(.Dpr):Delphi 7.0工程文件,用于保存窗体、单元等的信息,以及程序运行的初始化代码等,这种文件实际上包含了Pascal源代码。 • 单元文件(.Pas):Pascal文件,用于保存程序源代码,可以是与窗体有关的单元或是独立的单元。 • 窗体文件(.Dfm):保存窗体或数据模块及其构件特性的二进制文件。 • 选项文件(.Dof):含有当前项目选项设置的文本文件。 • 配置文件(.Cfg):含有当前项目编译配置的文本文件。 • 资源文件(.res):该二进制文件包含项目的图标,由Delphi 7.0不断 更新和创建,用户一般不需要修改。 • 备份文件(.-dp,.-df,.-pa):分别对应工程、窗体、单元文件的备份文件。
1.单元文件 (1)标志性语句——unit。 (2)接口部分——interface和implementation之间的部分。 (3)implementation之后是实现部分。 2.项目文件 (1)标志性语句——program。 (2)说明体部分——uses与begin之间的部分,不包括 begin语句。 (3)程序体部分——begin和end之间的部分。 Delphi 7.0程序的组成
1. 程序的基本组成(1) 最重要的与程序设计紧密相关的文件有三类: 工程文件,窗体文件,单元文件。 • 1. 工程文件( .dpr) • 它是整个应用程序的主程序,有两项功能:一是说明工程中的单元模块,二是启动应用程序。 • 工程文件由Delphi 7.0自动生成,一般情况下不修改这个文件。 • 单击Project选择View Source,可以在代码编辑器中打开Sample.dpr,进行查看和修改。 program Sample; //保留字program说明这是一个工程文件 //文件名为sample.dpr uses //保留字uses是对工程所引用的单元进行说明 Forms, //引用Forms单元 main in 'main.pas' {MainForm}; //引用main单元,在当前目录的main.pas文件中,相应的窗体为MainForm {$R *.res} //系统编译命令,将扩展名为.res的二进制资源文件连接到.exe文件中去 begin //工程执行部分的开始声明 Application.Initialize; //应用程序的初始化 Application.CreateForm(TMainForm, MainForm); //创建窗体MainForm Application.Run; //运行程序 end. //工程执行部分的结束说明
1. 程序的基本组成(2) • 2. 窗体文件( .dfm) • 一个或多个窗体文件,它们含有相应的单元文件。这些文件包含了窗体上组件的属性设置。这样的文件是用户在设计界面的时候由Delphi 7.0自动生成的,而且不能编辑。在Delphi 7.0中,一个应用程序至少需要一个窗体。 • 用鼠标单击窗体,在快捷菜单选择View as text即可在代码编辑器中看到以文本形式表示的窗体文件的内容,工程Sample中的Mainform窗体文件的文本形式。 • 3. 单元文件( .pas) • 它是在代码编辑器中编写过的过程代码文件。在Delphi 7.0中每个窗体都有一个单元文件与之相对应,窗体的单元文件包含了程序部分,用以控制窗体的行为。 • 在一个工程中,还可以建立与窗体无关的单元文件,用来编写工程中公用的函数、过程或定义新的数据。许多工程还调用了Delphi 7.0附加库或其单元文件中的过程或函数。uses子句中包含的标准单元文件包含了支持可视窗体及其控制的对象声明。这些单元也包含了用于激活窗体的事件处理过程程序。
2.Object Pascal的单元(1) 单元是常量、变量、数据类型、过程与函数的集合,而且能够被多个应用程序所共享。Delphi 7.0内部包含了多个程序单元,它们说明了对象、组件、常用过程与函数,以供程序员在设计应用程序时使用。 当设计窗体时,Delphi 7.0会自动建立一个和该窗体有关的单元文件,但并非所有的单元都和窗体有关,程序员可以自行编写只包括过程与函数的单元。 • unit <单元名称> • interface • uses <选择性的单元列表> • {公有说明} • implementation • uses <选择性的单元列表> • {私有说明} • {过程与函数的执行部分} • initialization • {选择性的初始化程序} • end 例如, 当在窗体中加入一个CheckBox组件时,Delphi 7.0自动在引用单元说明部分中加入了Stdctrls单元,因为CheckBox组件是在StdCtrls单元中说明的。 • 1. 程序单元的结构 • 不管一个单元是否和一个窗体有关,单元的结构都是相同的。其结构如下:
2. Object Pascal的单元(2) • 2. 程序单元的接口部分( Interface) • 它决定了本单元对其他任何单元或程序的可见(可访问)部分。可以在接口部分说明变量、常量、数据类型、过程与函数等等。在设计窗体的单元中,将窗体数据类型、窗体变量和事件处理过程都在这一部分说明。 • Interface标志单元接口部分的开始。在Interface中说明的部分对其他单元或应用程序是可见的。一个单元可以使用其他单元的说明,只需要在uses语句中指明那些单元即可。 例如: 在单元A中编写程序代码,想调用单元B中Interface部分说明的程序。可以把单元B的名称加入到A的Interface部分的uses子句中,则任何A中的程序都可以调用B中说明的程序。 但如果B出现在A的Interface部分的uses子句中,那么单元A便不能出现在B的Interface的uses子句中。因为这样会产生对单元的循环访问。当试图编译时,会产生出现错误信息。 • 3. 程序单元的实现部分( Implementation) • 实现部分Implementation中包含Interface中说明的过程、函数、事件处理过程的具体实现代码。 • 这一部分可以有自己的额外说明,但这些说明是私有的,外部程序不能调用这些说明。 • 在Interface中说明的函数实体必须在Implementation部分出现。可以使用标题简写:只输入Procedure或Function保留字,后面跟过程或函数的名称即可,其后则是程序的实现部分了。
2. Object Pascal的单元(3) • 4. 程序单元的初始化部分 • 初始化当前单元所使用的数据,或是通过Interface部分将数据提供给其他应用程序单元使用时,可以在单元的end前加入一个Initialization部分。 • 当一个应用程序使用一个单元时,在单元中的Initialization部分会先于其他的代码执行。如果一个应用程序使用了多个单元,则每一个单元的初始化部分都会在所有的程序代码前执行。 • 5. 使用Delphi 7.0的组件及其单元 • 在窗体中加入组件时,如果该组件在组件库中,Delphi 7.0会在单元的Interface部分的uses子句中自动加上需要使用的单元名称。但有些对象在Delphi 7.0的环境中并没有组件存在。例如,想在单元中加入一个预定义的信息框,则必须把MsgDlg单元加入到uses子句中。 • 要使用在其他单元中说明的函数,应在函数的前面加上这一单元的名称,并用‘.’号隔开。 • 例如, • 要在Unit2中使用Unit1中说明的test函数,应使用下面的方法: • Number := Unit1.test(x);
2. Object Pascal的单元(4) • 6. 建立与窗体无关的新单元 • 如果想在工程中建立一个和任何窗体无关的新单元,可以选择File单击New Unit。这时一个新的单元加入了工程,新单元的代码如下: • unit Unit2; • interface • implementation • end. • 将单元加入工程是比较简单的。无论是自己建立的单元还是Delphi 7.0建立的与窗体有关。